java programozási nyelv 2. rész – vezérlő szerkezetek
DESCRIPTION
Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember. Java programozási nyelv 2. rész – Vezérlő szerkezetek. Tartalomjegyzék. Programozási módszertanok Strukturált programozás, struktogram Vezérlő szerkezetek JAVA-ban Az utasítás fogalma - PowerPoint PPT PresentationTRANSCRIPT
A Java programozási nyelv Soós Sándor 1/23
Java programozási nyelv2. rész – Vezérlő szerkezetek
Nyugat-Magyarországi EgyetemFaipari Mérnöki KarInformatikai Intézet
Soós Sándor2005. szeptember
A Java programozási nyelv Soós Sándor 2/23
Tartalomjegyzék
● Programozási módszertanok● Strukturált programozás, struktogram● Vezérlő szerkezetek JAVA-ban
– Az utasítás fogalma– A blokk fogalma– Egyszerű elágazás (if)– Összetett elágazás (switch)– Elöltesztelő ciklus (while)– Hátultesztelő ciklus (do-while)– For ciklus (for)– For ciklus folyt.– Címkék– Break utasítás– Continue utasítás– Visszatérés egy metódusból (return)
A Java programozási nyelv Soós Sándor 3/23
Programozási módszertanok
● Egykoron: A programozás művészet volt– Monolitikus programozás, egy ember ír egy programot– A programnak nincs belső struktúrája– Programozó zseni, nem tudja elmondani, hogyan csinálja!
● Szoftverkrízis– Több programozóra van szükség– Szükség van a programozók képzésére– Egy program soha nincs készen, fel kell készülni a
javításokra, továbbfejlesztésre, esetleg a programozó nélkül!
● Művészetből tudománnyá kellett alakítani a szakmát– Ezért van szükség módszertanokra
A Java programozási nyelv Soós Sándor 4/23
Moduláris programozás
● Alapelv: Oszd meg és uralkodj! ● Top-down dekompozíció - Bottom-up kompozíció ● Előnyök:
– Tiszta szerkezet, tiszta kapcsolatok– Egy-két helyen kell módosítani, ha valamilyen javításra,
változtatásra van szükség– Párhuzamos fejlesztést, tesztelést tesz lehetővé– Egyszerre több ember dolgozhat egy feladaton– Újrafelhasználhatóság, bizonyos modulok szabványosíthatók, újra
felhasználhatók● Hátrányok:
– Nem ad módszert arra, hogy tökéletesen jól működő modulokból hogyan lehet jó programot összeállítani.
A Java programozási nyelv Soós Sándor 5/23
Strukturált programozás
● DIJKSTRA: Hierarchikus programozás– Top-down elven fokozatosan finomítjuk a programot. Nincsen
bottom-up fázis.– Minden szinten tudományosan bizonyítható a program
helyessége.● BOEHM ÉS JACOPINI: Minden algoritmus felépíthető a
következő elemekből:– szekvencia– szelekció, elágazás– iteráció, ciklus
● JACKSON-ELV: az adatszerkezetek is leírhatók a fenti három szerkezettel
A Java programozási nyelv Soós Sándor 6/23
Struktogram
● A strukturált programozás alapszerkezeteit egymásba ágyazott grafikus elemekkel ábrázoljuk.
● Amit le tudunk rajzolni, azt könnyedén átírhatjuk strukturált programmá, és viszont.
● Bármely strukturált programot le tudunk rajzolni struktogrammal.
● Alapfogalmak: http://www.ngkszki.hu/~fidoo/download/pmmf/ProgTerv/STUKI.HTM
A Java programozási nyelv Soós Sándor 7/23
Struktogram alapelemek 1
● Szekvencia
utasítás 1
utasítás 2
● Elágazás (if)
● Elágazás (switch)
A Java programozási nyelv Soós Sándor 8/23
Struktogram alapelemek 2
● Előltesztelő ciklus (while)
● Kidolgozott példak:– http://www.ngkszki.hu/~fidoo/download/pmmf/
ProgTerv/PELDAK.HTM● Egy struktogram tervező program:
– http://www.myfriend.de/index.htm?/download.html
A Java programozási nyelv Soós Sándor 9/23
Példa struktogram
A Java programozási nyelv Soós Sándor 10/23
Vezérlőszerkezetek Java-ban
● A strukturált programozás megvalósítása JAVA-ban
● A C++ szintaktikájára épül kisebb eltérésekkel● Ennek elemeit vesszük sorra a következő
oldalakon● Csak az eltéréseket emelem ki!
A Java programozási nyelv Soós Sándor 11/23
Az utasítás fogalma
● Utasítás:– kifejezés utasítás
● értékadás● postfix, vagy prefix ++, ill. -- -szal képezett kifejezés● metódushívás● példányosítás (a new operátor használatával)
– deklaráció utasítás● egy lokális változó létrehozása és opcionális inicializálása● a lokális változó a deklarációtól az őt magában foglaló blokk
végéig létezik– A kétfajta utasítás tetszőleges sorrendben követheti
egymást.– Minden utasítást pontosvessző (;) zár le.
A Java programozási nyelv Soós Sándor 12/23
A blokk fogalma
● Blokk (utasítások szekvenciája):– Utasítások { és } jelek közé írt sorozata
● Mindenhol, ahol utasítás írható, ott blokk is írható.
● Például:{ int i; i = 123; int j = i*i;}
A Java programozási nyelv Soós Sándor 13/23
Egyszerű elágazás (if)
if (logikai kifejezés) utasítás1else utasítás2Sajnos mindkét ágban állhat egyetlen utasítás is,
ezért fennáll az if-then-else probléma:
if (a == 1) if (b == 2) c = 1;else c = 2;
if (a == 1) if (b == 2) c = 1;else c = 2;
if (a == 1) { if (b == 2) { c = 1; } else { c = 2; }}
if (a == 1) { if (b == 2) { c = 1; } else { c = 2; }}
A Java programozási nyelv Soós Sándor 14/23
Összetett elágazás (switch)
switch (egész kifejezés) { case cimke1: utasítások; break; case cimke2: case cimke3: utasítások; break; ... default: utasítások;}
A Java programozási nyelv Soós Sándor 15/23
Elöltesztelő ciklus (while)
while (logikai kifejezés) utasítás
A Java programozási nyelv Soós Sándor 16/23
Hátultesztelő ciklus (do-while)
do utasításwhile (logikai kifejezés) Ha a logikai kifejezés hamis, egyszer akkor is
lefut a ciklusmag!
A Java programozási nyelv Soós Sándor 17/23
For ciklus (for)
for (kezdet; logikai kifejezés; továbblépés) utasítás
Ez nagyjából ekvivalens a következővel:{ kezdet; while (logikai kifejezés) { utasítás; továbblépés; }}
A Java programozási nyelv Soós Sándor 18/23
For ciklus folyt.
● Miért csak nagyjából ekvivalens a kétféle ciklus?– continue utasítás
● Miért fontos a külső zárójel a while ciklus körül?
A Java programozási nyelv Soós Sándor 19/23
Címkék
● Címke– bármely utasítás elé tehetünk címkét, például:cimke: utasítás– A most következő utasítások használhatók címkével
és anélkül is.● Ha megadunk címkét, akkor a címkével jelölt blokkra
vonatkozik.● Ha nem adunk meg címkét, akkor a legbelsőre.
A Java programozási nyelv Soós Sándor 20/23
Break utasítás
● Egy blokkból való kilépésre szolgál.● Például:int i = 1;ciklus: while (i < 1000) { for (int j = 1; j <= i; j++) { if (KilepesTeszt(i, j)) break ciklus; … }}● Break utasítással nem lehet kilépni egy metódusból.
A Java programozási nyelv Soós Sándor 21/23
Continue utasítás
● A ciklusmag hátralévő részét átugorva, a ciklus feltételére kerül a vezérlés.
● For ciklus esetén a továbblépés is lefut!● Például:while (! bemenet.eof()) { sor = bemenet.readln(); if (ures(sor)) continue; Feldolgoz( sor );}
A Java programozási nyelv Soós Sándor 22/23
Visszatérés egy metódusból (return)
● Egy metódusból a return utasítással tudunk visszatérni.
● A return után írt kifejezés lesz a metódus visszatérési értéke.
● A Java fordító ellenőrzi, hogy a metódus minden lehetséges lefutása esetén végrehajtásra kerüljön egy return utasítás. Ha úgy találja, hogy ez nem teljesül, akkor fordítási hibát kapunk.
A Java programozási nyelv Soós Sándor 23/23
Nem létezik goto utasítás
● A Java nyelvben nincsen goto utasítás!● Ennek ellenére a goto foglalt kulcsszó!
● Az eddig megismert szerkezetekkel - kiegészítve a később tárgyalandó finally-val - minden felmerülő programozási feladat megoldható.