Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.

Hasonló előadás


Az előadások a következő témára: "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."— Előadás másolata:

1 1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz

2 2 Programvezérlési szerkezetek Az utasítások végrehajtási sorrendjét szabályozzák. 1.Szekvencia: ugyanabban a sorrendben kell végrehajtani az utasításokat, amilyen sorrendben az a forráskódban szerepel 2.Szelekció (elágazás): utasítások csoportját vagy végre kell hajtani, vagy nem 3.Iteráció (ciklus): utasítások csoportját ismételten, többször is végre kell hajtani

3 3 A logikai feltételt (kifejezést) ciklus vezérlő feltételnek hívják. Az utasítást (utasításblokkot) ciklusmagnak hívják. A vezérlő feltétel szabályozza, hogy meddig kell végrehajtani a ciklusmag utasításait. while ( logikai-feltétel ) utasítás;

4 4 Pozitív vezérlésű ciklusok: a ciklusmag utasításait mindaddig újra-és-újra végre kell hajtani, amíg a vezérlő feltétel értéke IGAZ. Ciklusok osztályozása vezérlés szerint Ez esetben a ciklus vezérlő feltételét ‘ciklusban maradás feltételének’ szokták hívni.

5 5 Ciklusok osztályozása vezérlés szerint Negatív vezérlésű ciklusok: a ciklusmag utasításait addig kell ismételni, amíg a vezérlő feltétel értéke HAMIS. Ez esetben a ciklus vezérlő feltételét ‘ciklusból kilépés feltételének’ szokták hívni.

6 6 Előltesztelő ciklusok: a, kiértékelődik a ciklus vezérlő feltétele b, ha nem megfelelő, akkor ‘e’ lépés c, ciklusmag végrehajtása d, ugrás az ‘a’ lépésre e, futás folytatása a ciklust követő következő utasítással (ciklus vége) Ciklusok osztályozása tesztelés szerint

7 7 Pozitív vezérlésű előltesztelős ciklus: vezérlő feltétel Ciklusmag utasításai IGAZ HAMIS

8 8 Negatív vezérlésű előltesztelős ciklus: vezérlő feltétel Ciklusmag utasításai HAMIS IGAZ

9 9 Fontos jellemzőjük, hogy elképzelhető olyan eset, hogy a ciklusmag egyetlen egyszer sem hajtódik végre, amennyiben a vezérlő feltétel már legelső esetben sem megfelelő értékű. Ekkor a ciklus ‘el sem indul’. Előltesztelő ciklusok

10 10 Hátultesztelő ciklusok: a, ciklusmag végrehajtása b, kiértékelődik a ciklus vezérlő feltétele b, ha megfelelő, akkor ‘a’ lépés újra c, futás folytatása a ciklust követő következő utasítással (ciklus vége) Ciklusok osztályozása tesztelés szerint

11 11 Pozitív vezérlésű hátultesztelős ciklus: vezérlő feltétel Ciklusmag utasításai IGAZ HAMIS

12 12 Negatív vezérlésű hátultesztelős ciklus: vezérlő feltétel Ciklusmag utasításai HAMIS IGAZ

13 13 Fontos jellemzőjük, hogy a ciklusmag egyszer garantáltan végrehajtódik, legfeljebb többször már nem. Hátultesztelős ciklusok

14 while (feltétel) utasítás; while (feltétel) utasítás; 14 Pozitív vezérlésű logikai előltesztelős ciklus while (feltétel) { utasítás; } köv.utasítás while (feltétel) { utasítás; } köv.utasítás IGAZ? HAMIS? IGAZ! HAMIS!

15 do utasítás; while (feltétel); do utasítás; while (feltétel); 15 Pozitív vezérlésű logikai hátultesztelős ciklus do { utasítás; } while (feltétel); köv.utasítás do { utasítás; } while (feltétel); köv.utasítás IGAZ? HAMIS?IGAZ!HAMIS!

16 16 Példa: int i=1; while (i<=10) { Console.WriteLine(i); i++;// i = i+1; } Console.WriteLine(”Kész”); int i=1; while (i<=10) { Console.WriteLine(i); i++;// i = i+1; } Console.WriteLine(”Kész”);

17 17 Példa: int a = int.Parse( Console.ReadLine() ); int i=2, db=0; while (i

18 18 BREAK utasítás A „break” azonnal terminálja az őt tartalmazó ciklust, a végrehajtás azonnal a ciklust követő utasításra ugrik.

19 19 Példa (‘középentesztelős’ ciklus): int db=0; while (true) { int a = int.Parse( Console.ReadLine() ); if (a==0) break; if (a%2==0) db++; } Console.WriteLine(”Db={0}”,db); int db=0; while (true) { int a = int.Parse( Console.ReadLine() ); if (a==0) break; if (a%2==0) db++; } Console.WriteLine(”Db={0}”,db);

20 20 CONTINUE utasítás A „continue” azonnal befejezi az aktuális ciklusmag végrehajtását (átugorja a maradék sorokat), és a vezérlés átkerül a ciklus vezérlő feltételének kiértékelésére.

21 21 Példa: int i=0,ossz=0; while (i<10) { int a = int.Parse( Console.ReadLine() ); if (a<0) continue ossz = ossz + a; i++; } Console.WriteLine(”Osszeg={0}”,ossz); int i=0,ossz=0; while (i<10) { int a = int.Parse( Console.ReadLine() ); if (a<0) continue ossz = ossz + a; i++; } Console.WriteLine(”Osszeg={0}”,ossz);

22 22 FOR ciklus Logikai előltesztelős ciklusok csoportjába tartozik. Működése szimulálható WHILE ciklussal…

23 23 Példa: int i=0; while (i<10) { … i++; } int i=0; while (i<10) { … i++; } for (int i=0;i<10;i++) { … } for (int i=0;i<10;i++) { … }

24 24 for(kezdőkif; log.feltétel; it.lépés) ut; Kezdőkifejezés általában értékadó utasítás csak egyszer hajtódik végre a ciklus vezérlő feltétele, pozitív vezérlésű, előltesztelős eset Iterációs lépés minden ciklusmag végrehajtás után automatikusan lefut ez a lépés is ciklusmag a, kezdőkif. végrehajtása b, amennyiben feltétel hamis –> break c, ciklusmag d, iterációs lépés e, újra ‘b’ lépés

25 25 for(kezdőkif; log.feltétel; it.lépés) ut; BREAK: hasonlóan működik, azonnal kilép a for ciklusból a következő utasításra. CONTINUE: először az iterációs lépésre ugrik, csak utána a feltétel kiértékelésre!

26 26 Példa: int ossz=0; for (int i=0;i<10;i++) { int a = int.Parse( Console.ReadLine() ); if (a<0) continue ossz = ossz + a; } Console.WriteLine(”Osszeg={0}”,ossz); int ossz=0; for (int i=0;i<10;i++) { int a = int.Parse( Console.ReadLine() ); if (a<0) continue ossz = ossz + a; } Console.WriteLine(”Osszeg={0}”,ossz); ez uaz, mint a 21-es fólia while ciklusa?

27 27 foreach ciklus Lista-alapú ciklus, egy adott lista minden elemét fel kell dolgozni egyesével, később lesz szó róla a lista mint adatszerkezet ismertetése után


Letölteni ppt "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."

Hasonló előadás


Google Hirdetések