Emlékeztetők. Számítástechnika 10.

Hasonló dokumentumok
Programozás I. gyakorlat

Programozás I. gyakorlat

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Vezérlési szerkezetek

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Objektumorientált Programozás III.

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Vezérlési szerkezetek. Szelekció Ciklusok

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Webprogramozás szakkör

Programozás I. 5. Előadás: Függvények

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Forráskód formázási szabályok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

értékel függvény: rátermettségi függvény (tness function)

Programozás alapjai 8.Gy: Program struktúra

Programtervezés. Dr. Iványi Péter

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

2.3. A C nyelv utasításai

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Programozás 6. Dr. Iványi Péter

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

A C# programozási nyelv alapjai

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Exponenciális és Logaritmikus kifejezések

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Nagy András. Feladatok a logaritmus témaköréhez 11. osztály 2010.

Internet programozása. 3. előadás

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Szoftvertervezés és -fejlesztés I.

C programozási nyelv

Mintavételes szabályozás mikrovezérlő segítségével

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Exponenciális és Logaritmikus kifejezések

Java programozási nyelv

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai 1. (BMEVIEEA100)

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

S z á m í t ó g é p e s a l a p i s m e r e t e k

Feladatok a logaritmus témaköréhez 11. osztály, középszint

Szövegek C++ -ban, a string osztály

Adatbázis rendszerek Gy: Algoritmusok C-ben

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Exponenciális és logaritmikus kifejezések Megoldások

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Matematika 11. osztály

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

B I T M A N B I v: T M A N

1. Egyszerű (primitív) típusok. 2. Referencia típusok

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

Óbudai Egyetem. C programozási nyelv

egyenlőtlenségnek kell teljesülnie.

C programozás. 1 óra Bevezetés

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

A C programozási nyelv II. Utasítások. A függvény.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás II. 2. Dr. Iványi Péter

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Országzászlók (2015. május 27., Sz14)

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

1. Alapok. #!/bin/bash

Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások

10. gyakorlat Tömb, mint függvény argumentum

INFORMATIKA tétel 2019

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Programozási segédlet

Programozás II gyakorlat. 6. Polimorfizmus

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Programozás C++ -ban 2007/1

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

A programozás alapjai

1. Alapok. Programozás II

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Minimum feladat: Teljes feladat: Minimum feladat: Teljes feladat: Minimum feladat:

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Pénzügyi algoritmusok

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

BASH script programozás II. Vezérlési szerkezetek

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

A programozás alapjai 2 (VIIIAA03) Két fontos 3. féléves tárgyhoz is alapozunk: Szoftvertechnológia Programozás alapjai 3.

Programozás alapjai 9.Gy: Struktúra 2.

Karakter- és sztringkezelő függvények, matematikai függvények

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Szelekció. Döntéshozatal

Átírás:

Emlékeztetők Számítástechnika 10. Daróczy László Akinek javítania kell Excel-t, tegye meg, ki van adva a lap ki hogyan áll. Akinek nem sikerült a tesztje, annak kötelező járnia előadásra! C feladat: beadás jövő héten kedden órán, legkésőbb e-mailen kereken éjfélig, utána késedelmi díj ellenében fogadható csak el Mintaprogramok forrás: Kulcsár Gyula & Dr. Dudás László 2 1. C önálló feladat Kiadás: most Névsor rajta a sorszámokkal+feladatok körbeadva Feladatok letölthetőek az internetről is, a szokásos (dudas+szteaok) honlapról Beadás: 46. hét (2 hét múlva!!) Beadás: szigorúan a 46. hét kedden (max. éjfélig) Aki nem teszi meg: késedelmi díjjal hozhatja, most nincsen kivétel Beadás formája: C forrásprogram (C formátum)+exe WORD jegyzőkönyv: Első oldal: feladat címe, hallgató neve, Neptun-kód, beadás dáruma(év, hónap, nap), tantárgy neve Második oldal: feladatkiírás szövege, választott változók jegyzéke és programbeli feladatuk megadása, folyamatábra, tesztelt input változók értéke Opcionális: hardcopy a futtatási eredményekrők(print screen) 3 Borland C letöltése Előrelátóan hozzunk létre egy BC mappát az asztalon Keressük fel Kulcsár Gyula honlapját (google: kulcsar, iit) -> Oktatás->Számítástechnika gyakorlat->2. (teljes) letöltés->kitömörítés a mappába 4

C beadandó mintafeladat C beadandó mintafeladat megjegyzések Függvénytáblázat készítés Legyen adott az alábbi függvény: Írjon C programot, mely kiszámítja a függvény értékeit egy adott intervallumban egymástól egyenlő távolságokra levő x változókra! A program kérje be az intervallum kezdő és végpontját, valamint az osztásközök számát, és írja ki az osztópontokban (beleértve a kezdő és végpontot is) kiszámított függvényértékeket táblázatos formában. Azokban a pontokban, ahol f(x) nincs értelmezve, a program küldjön hibaüzenetet! 5 6 C beadandó mintafeladat elemzés Esetek, mikor a feladat nem végezhető el: X<0 -> Negatív a gyök alatt! Cos(x)<=0 -> A logaritmus nem értelmezett az 1.2-re emeléshez! Log 2 utáni kifejezés negatív v. 0 -> A 2-es alapú logaritmus nem számítható! Nevező<0 -> Nullával osztás kísérlete! 7 C beadandó mintafeladat megoldás/1 #include <stdio.h> #include <conio.h> #include <math.h> void main(void) double x, fx, xkezdo, xveg, deltax, argum, nevezo; int lepeskoz, i; clrscr(); printf(" Függvénytáblázat\n\n"); printf("a függvény: ch(abs(x)-2*gyök(x))/kettesalapúlogaritmus(x*(cos(x) emelve 1.2-re))"); printf("\n Az intervallum kezdőértéke, xkezdo= "); scanf("%lf", &xkezdo); printf("\n Az intervallum végértéke, xveg= "); scanf("%lf", &xveg); printf("\n Lépésközök száma, lepeskoz= "); scanf("%d", &lepeskoz); deltax= (xveg-xkezdo)/lepeskoz; printf("\n\n x f(x)"); printf("\n--------------------------------"); 8

C beadandó mintafeladat megoldás/2 for(i=0; i<=lepeskoz; i++) x= xkezdo+i*deltax; printf("\n%10.3lf ", x); if(x < 0.0) printf(" Negatív a gyök alatt!"); else if( cos(x) <= 0.0 ) printf(" A logaritmus nem értelmezett az 1.2-re emeléshez!"); else argum= x* pow(cos(x),1.2); if( argum <= 0.0) printf(" A 2-es alapú logaritmus nem számítható!"); else nevezo= log(argum) / log(2); if( nevezo == 0.0 ) printf(" Nullával osztás kísérlete!"); /* jobb lenne: if( fabs(nevezo) < 1e-15 )... */ else fx= cosh( fabs( x ) -2*sqrt(x) ) / nevezo; printf("%10.3lf", fx); C beadandó mintafeladat teszt -100; 100; 10 9 10 C beadandó mintafeladat - folyamatábra START Clrscr() printf(" Függvénytáblázat\n\n"); printf("a függvény: ch(abs(x)- 2*gyök(x))/kettesalapúlogaritmus(x*(cos(x) emelve 1.2-re))"); printf("\n Az intervallum kezdőértéke, xkezdo= "); Be: xkezdo C beadandó mintafeladat - folyamatábra HAMIS i=0 i<=lepeskoz IGAZ x= xkezdo+i*deltax; printf("\n%10.3lf ", x); x<0.0 HAMIS cos(x)<=0.0 HAMIS argum= x* pow(cos(x),1.2); IGAZ IGAZ i++ printf(" Negatív a gyök alatt!"); printf(" A logaritmus nem értelmezett az 1.2-re emeléshez!"); printf("\n Az intervallum végértéke, xveg= "); argum<= 0.0 HAMIS IGAZ printf(" A 2-es alapú logaritmus nem számítható!"); Be: xveg nevezo= log(argum) / log(2); printf("\n Lépésközök száma, lepeskoz= "); nevezo == 0.0 HAMIS IGAZ printf(" Nullával osztás kísérlete!"); Be: xlepeskoz fx= cosh( fabs( x ) -2*sqrt(x) ) / nevezo; printf("\n\n x f(x)"); printf("\n--------------------------------"); 11 Ki: fx STOP 12

Felhasználóbarát programok elterjedésének okai: A számítástechnika hajnalán a számítógépek több millió dollárba kerültek, míg a programozók ehhez képest elenyésző összegbe -> Nem volt szükség felhasználóbarát programokra, hiszen a képzett programozók értettek hozzá. Tendencia: Gépek ára csökken, felhasználók száma nő -> nem megfizethető megoldás mindenkit szakértővé tenni -> a programokat kell egyszerűsíteni Felhasználóbarát programok eleme Önállóan tanítható lenne Hatalmas területet foglal össze 13 14 Felhasználóbarát programok eleme Használhatósági megfontolások: Kik a felhasználók, milyen tudással rendelkeznek, mit tudnak megtanulni? Mit akarnak/szükséges a felhasználóknak megtenniük? Mi a felhasználók háttere? Mi a felhasználó munkakörnyezete? Mit kell a számítógépre bízni? Felfedezhetőség A megtanulhatóság sebessége is fontos: Kell a felhasználónak bármikor megtennie olyat, ami nem nyilvánvaló (pl. szokatlan gomb, elrejtett menüpont, stb)? Vannak tippek és megjegyzések minden egyes funkciónál? Hátrányban vannak azok a felhasználók, akik nem ismernek bizonyos billentyű-kombinációkat? Minden felhasználónak joga van ismerni a program összes funkcióját. A tanulási görbe eléggé követhető, pontról-pontra halad? Vannak rejtett/dokumentálatlan billentyűkombinációk? Ezeket sem árt feltüntetni a Help-ben. 15 16

Lund 1997, Használhatósági tételek (Honlapokra: ) Ismerd a felhasználót, nem TE vagy a felhasználó! Hasonló kinézetű dolgoknak hasonlóan kell működniük. A döntéshez szükséges információnak ott kell lennie, ahol a döntés történik. A hibaüzeneteknek jelentenie is kell valamit a felhasználó számára, és arról, hogy hogyan oldja meg a problémát. Minden akciót reakció kövessen. Mindenki hibázik, tehát minden hibának javíthatónak kell lennie. Ne halmozd el a felhasználót! Konzisztencia, konzisztencia, konzisztencia. Minimalizáld a memóriaigényt! Tartsd egyszerűnek! A felhasználónak mindig tudnia kell, mi történik. Minél többet kell tenni, annál egyszerűbbnek kell lennie. A felhasználónak kell irányítania a rendszert. Nem a rendszernek a felhasználót. A felhasználó a főnök, és a rendszernek ezt el kell ismernie. Kiiktatni a felesleges döntéseket, kiemelni a többit. A legjobb utak mindig csak pár lépésbe kerülnek. Próbáld a felhasználó és a célja közötti utat lerövidíteni. A felhasználóknak képesnek kell lennie azt csinálni, amit akarnak. Informáld a felhasználót a hibákról, mielőtt rosszabb lesz! A felhasználóknak mindig képesnek kell lenniük, hogy rájöjjenek, hogy mi a következő lépés. A felhasználód próbáld felruházni nagyobb tudással, ne a rendszert gyorsítsd fel! A különbözőképpen kinéző dolgoknak különböző dolgokat kell csinálnia. Hibaüzenetek, információk Minden ember hibázik, így előbb-utóbb a felhasználó is elfog követni hibát A programnak fel kell készülnie ezekre a hibákra A felhasználót tájékoztatni kell a hibáról, a pontos okáról, és közérthetőnek kell lennie (pl. szabad lemezterület 0K nem megfelelő, mert félreérthető!) 17 Forrás: wikipedia.org 18 GUI Graphical User Interface Grafikus felhasználói felület Célja a programmal történő interakciók egyszerűsítése Fontos: Átlátható, egyszerű legyen Könnyen kezelhető Ne vesszen el a felhasználó a részletekben Hibaüzenetek, információk Minden ember hibázik, így előbb-utóbb a felhasználó is elfog követni hibát A programnak fel kell készülnie ezekre a hibákra A felhasználót tájékoztatni kell a hibáról, a pontos okáról, és közérthetőnek kell lennie (pl. szabad lemezterület 0K nem megfelelő, mert félreérthető!) 19 20

Helpmenü A programnak célszerű teljes dokumentációval készülnie, és ezt (lehetőleg) egy elektronikus helpben összefoglalni Gyakoriak az ún. context-sensitivehelp, ahol a program pl. egy hiba esetén megnyitja a help menü releváns részét, ill. pl. egy gomb fölé helyezett egérkurzor megjeleníti a megfelelő rész (Súgó) Varázslók (wizard) Bonyolultabb, összetettebb feladatok elvégzését célszerű wizard-rabízni, ami megkönnyíti és átláthatóvá teszi a felhasználó számára a feladat elvégzését Egyszerűsített lépésekre bontja a feladatot, és végigvezeti a felhasználót a szükséges lépéseken 21 22 Accelerators Egy nagy és profi programnak elengedhetetlen része a gyorsítók. Ennek célja, hogy a gyakorlott felhasználók gyorsabban tudják használni a programot. PlAlt+G stb. Dummy proof Minden programnál el fognak követni hibákat a felhasználók. A programot úgy kell megtervezni, hogy a felhasználók esetleges hibái esetén ne omoljon össze, ne vesszenek el a felhasználó adatai, stb. Bolondbiztos Tedd bolond-biztossá, valaki fel fog találni egy nagyobb bolondot. 23 24

Követendő programozási stílus A követendő programozási stílusról mindenkinek különböző elképzelése van, nincs univerzális megoldás. Egy-egy cégnél általában megvan a belső szabályzat erre, amit követni kell. Miért fontos? Egy szoftver élettartama folyamán a munkaidő 80%a a karbantartásra megy el. Nem egy (nem az eredeti) programozó fogja karbantartani. A megfelelő stílus növeli a program olvashatóságát. Vannak közös tulajdonságok. 25 Követendő programozási stílus Formai követelmények Program megfelelő tabulálása (blokk beljebb kezdődik) Program megfelelő tagolása (pl. egy utasítás egy sor, átlátható legyen) Megfelelő kommentezés (minden felhasználóra, input adatra szerepeljen a feladata, ha nem egyértelmű az algoritmus, a megvalósítás miértje is) 26 Követendő programozási stílus Követendő programozási stílus Jelölések: Legelterjedtebb jelölésmód a magyar (Hungarian notation): Pl. chinitial karakter dbpi double isize integer Stb. Egyértelművé, átláthatóvá teszi a kódot. Első ránézésre eldönthető a változó típusa, szerepe stb. Elkerülhetőek vele gyakori hibák. Egyéb: Az átláthatósághoz emellett az is fontos, hogy a forráskód maga is tagolt legyen: Pl. egy függvény egy, nyilvánvaló feladatot végezzen, inkább több függvény legyen Teljesítményorientált programok eltérőek!!!! 27 28

Kifejezések kiértékelése Példákkal (3-2)? 1: 4 =1 25+4>5 && 56-7<8 29>5 && 49<8 1 && 0 =0 7/2 =3 6%3 =0 Kifejezések kiértékelése Példákkal (3-2)? 1: 4 =1 25+4>5 && 56-7<8 29>5 && 49<8 1 && 0 =0 7/2 =3 6%3 =0 29 30 Kifejezések kiértékelése Példákkal (ZH 2007) 21/8+14%5 =2+4=6 (a=2, a*=4) a=a*4=8 (g=3, k=11, g-=k;) g=g-k=3-11=-8 (x=8; y=2;) x>=4 &&!(y==2) 1&&!1=1&& 0=0 HAMIS c/=--i-k++; --i; c=c/(i-k); k++; i=7; k=2; c=70; Eredmény: 17 31 Kifejezések kiértékelése Példákkal (ZH 2007) 83/12%4 =6%4=2 (w=7, w+=4) W=w+4=7+4=11; (d=1, h=11, a*=0) A=a*0=0;!(x!=3 y>=-4) (x=3; y=11;)!(0 1) ->!1 -> 0 c+=++i * k--; ++i; c=c+i*k; k--; i=7; k=2; c=40; Eredmény: 56 32

Kifejezések kiértékelése Példákkal (ZH 2007) 7/2/6 3/6=0 (v1=8, v1/=6) V1=8/6=1 (g=9, k=3, g%=k) g=g%k=9%3=0!(a<=b&&!(c==d)) (A=-6; B=2; C=8; D=11)!(1&&!0) ->!(1&&1) ->!1 ->0 v5*=-j--*++k; ++k; v5=v5*(-j*k); j--; J=8; k=3; v5=7; Eredmény: -224 33 Kifejezések kiértékelése Példákkal (ZH 2007) 3-9%2-1 3-1-1=1 (5+3,7,8) 8 (g=k=1, k*=7+g) K=k*(7+g) Eredmény: 8!(A>-B (C<D)) (A=1; B=3; C=6; D=1;)!(1 0) ->!1 -> 0 v1*=i++*k--+7; V1=v1*(i*k+7); i++; k--; i=3;k=2; v1=3; Eredmény: 39 34 Mintaprogram switch alap #include<stdio.h> #include<conio.h> int main(int argc, char* argv[]) int v; clrscr(); printf("\n Kerem a kiirando szavak szamat(1-3):"); scanf("%d", &v); switch(v) case3: printf("\n harom"); case2: printf("\n ketto"); case1: printf("\n egy"); j} getch(); //karakterbeolvasas return0; 35 Mintaprogram switch alap 2 #include<stdio.h> #include<conio.h> int main(int argc, char* argv[]) int szam; clrscr(); printf("\n Kerek egy szamot(1-3):"); scanf("%d", &szam); switch(szam) case 3: printf("\n harom"); break; case 2: printf("\n ketto"); break; case 1: printf("\n egy"); break; //el is maradhat default: printf("\n nem megfelelo szam"); //helye nem kotott getch(); //karakterbeolvasas return0; 36

#include<stdio.h> #include<conio.h> Mintaprogram do while ZH minta int main(int argc, char* argv[]) int szam; int i; //ciklusvaltozo int lepesek; //ismetlesek szama clrscr(); printf("\n Kerem az ismetlesek szamat:"); scanf("%d", &lepesek); i = 1; do printf("\n Kerem a %d. egesz szamot:", i); scanf("%d", &szam); if( szam%2 == 0 ) printf("\n A %dszamparos.", szam); else printf("\n A %d szam paratlan.", szam); i++; while( i <= lepesek); getch(); return 0; 37 38 Köszönöm a figyelmet! 39