23
A Java programozási nyelv Soós Sándor 1/23 Java programozási nyelv 2. rész – Vezérlő szerkezetek 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

  • Upload
    zahur

  • View
    55

  • Download
    1

Embed Size (px)

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 Presentation

Citation preview

Page 1: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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

Page 2: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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)

Page 3: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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

Page 4: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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.

Page 5: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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

Page 6: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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

Page 7: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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)

Page 8: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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

Page 9: Java programozási nyelv 2. rész – Vezérlő szerkezetek

A Java programozási nyelv Soós Sándor 9/23

Példa struktogram

Page 10: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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!

Page 11: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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.

Page 12: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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;}

Page 13: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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; }}

Page 14: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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;}

Page 15: Java programozási nyelv 2. rész – Vezérlő szerkezetek

A Java programozási nyelv Soós Sándor 15/23

Elöltesztelő ciklus (while)

while (logikai kifejezés) utasítás

Page 16: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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!

Page 17: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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; }}

Page 18: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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?

Page 19: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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.

Page 20: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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.

Page 21: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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 );}

Page 22: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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.

Page 23: Java programozási nyelv 2. rész – Vezérlő szerkezetek

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ó.