Vezérlés szerkezetek Elágazás Ha a feltétel teljesül, akkor az gaz ágon találató t a program végreajtja, egyébként átlép. a feltétel akkor nt a = 6; nt b = 5; f (a>b) Console.WrteLne("Az a nagyobb: "+a); - Console.WrteLne elyett System.out.prntln program Elagazas; var a, b: nteger; begn a := 6; b := 5; f (a>b) ten wrteln('az a nagyobb: ',a); Elágazás blokkal Ha a feltétel teljesülésekor több t kívánunk végreajtan, akkor zárójeleket asználunk. (C alapú és Java nyelveknél '' Pascal nyelvben 'begn end') a feltétel akkor a vége C# és Java kód nt a = 6; nt b = 5; f (a>b) Console.Wrte("Az a nagyobb: "); Console.WrteLne(a); - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Vezérlés szerkezetek 2
Vezérlés szerkezetek program Elagazas; var a, b: nteger; begn a := 6; b := 5; f (a>b) ten begn wrte('az a nagyobb: '); wrteln(a); Elágazás else ággal Ha a feltétel teljesül, akkor az gaz ágon találató t ajtja végre a program, egyébként az else után állót. a feltétel akkor 1. egyébként 2. nt a = 6; nt b = 5; f (a>b) Console.WrteLne("Az a nagyobb: "+a); else Console.WrteLne("Az a nem nagyobb: "+a); 1. 2. - Console.WrteLne elyett System.out.prntln program Elagazas; var a, b: nteger; begn a := 6; b := 5; f (a>b) ten wrteln('az a nagyobb: ',a) else wrteln('az a nem nagyobb: ',a); Vezérlés szerkezetek 3
Vezérlés szerkezetek Elágazás else ággal blokkal Ha a feltétel teljesül, akkor az gaz ágon találató okat ajtja végre a program, egyébként az else után állókat. Több esetén zárójeleket asználunk. (C alapú és Java nyelveknél '' Pascal nyelvben 'begn end') a feltétel akkor egyébként a vége nt a = 6; nt b = 5; f (a>b) Console.Wrte("Az a nagyobb: "); Console.WrteLne(a); else Console.Wrte("A b nagyobb vagy egyenlő:"); Console.WrteLne(b); - Console.WrteLne elyett System.out.prntln program Elagazas; var a, b: nteger; begn a := 6; b := 5; f (a>b) ten begn wrte('az a nagyobb: '); wrteln(a); end else begn wrte('a b nagyobb vagy egyenlő: '); wrteln(b) Vezérlés szerkezetek 4
Vezérlés szerkezetek Egymásba ágyazott elágazások Egy elágazás akár gaz, akár ams ágába egyaránt tovább elágazás llesztető. a feltétel akkor egyébként a feltétel akkor egyébként a vége a vége nt a = 6; nt b = 5; f (a==b) Console.Wrte("Egyenlő: "); Console.WrteLne(a); else f (a>b) Console.Wrte("a nagyobb:"); Console.WrteLne(a); else Console.Wrte("b nagyobb:"); Console.WrteLne(b); - Console.WrteLne elyett System.out.prntln program Elagazas; var a, b: nteger; begn a := 6; b := 5; f (a=b) ten begn wrte('egyenlő: '); wrteln(a); end else begn f a>b ten begn wrte('a nagyobb: '); wrteln(a) end else begn wrte('b nagyobb: '); wrteln(b) Vezérlés szerkezetek 5
Vezérlés szerkezetek Többrányú elágazás Többrányú más néven összetett elágazás több végreajtás ággal rendelkezk, és egyetlen kfejezés kerül kértékelésre, melynek eredménye alapján kerül az egyes ágakra a vezérlés. A kértékelendő kfejezés értéke csak megszámlálató típusú leet. kfejezés 1. blokk 2. blokk Többágú elágazás feltétel_1 esetén ok_1 feltétel_n esetén ok_n egyéb esetén ok_m Elágazás vége n. blokk C# kód Utasítás blokk nt szam = 3; swtc(szam) case 1 : Console.WrteLne("Egy"); break; case 2 : Console.WrteLne("Kettő"); break; case 3 : Console.WrteLne("Három"); break; default : Console.WrteLne("Sok"); break; A C# nyelvben mnden elágazáságat, még a default ágat s, kötelező valamlyen vezérlés átadással befejezn! (break, goto, return) Java kód nt szam = 3; swtc(szam) case 1 : System.out.prntln("Egy"); break; case 2 : System.out.prntln("Kettő"); break; case 3 : System.out.prntln("Három"); break; default : System.out.prntln("Sok"); kfejezés break nélkül 1. blokk 2. blokk A Java nyelvben nem kötelező mnden elágazáságat vezérlés átadással befejezn! nt szam = 1; swtc(szam) case 1 : System.out.prntln("Egy"); szam++; case 2 : System.out.prntln("Kettő"); szam++; case 3 : System.out.prntln("Három"); szam++; default : System.out.prntln("Sok"); Utasítás blokk n. blokk Vezérlés szerkezetek 6
Vezérlés szerkezetek Pascal kód Összetett elágazás Pascal formája: Case kfejezés of értékllsta_1: _1; értéklsta_n: _n; else _m; End; program Tobbranyu; var : nteger; begn := 1; Case of 1: Wrteln('Egy'); 2: Wrteln('Kettő'); 3: Wrteln('Három'); else Wrteln('Sok'); Ha valamely ágon több t kívánunk végreajtan, akkor Pascal nyelvben kötelező a Begn páros. kfejezés 1. 2. n. Vezérlés szerkezetek 7
Vezérlés szerkezetek Elöltesztelős cklus Az elöltesztelős cklus először megvzsgálja, ogy a feltétel teljesül -e. Ha gen, akkor végreajtja a cklusmagot, majd a folyamat az újból kezdődk. Ha nem, akkor a program a cklus után ponton folytatódk tovább, azaz a cklusmag kmarad. Ha a feltétel már első alkalommal sem teljesül, akkor a cklusmag egyszer sem lesz végreajtva. cklus amíg feltétel cklusmag a cklus vége Előltesztelős cklus C# és Java formája: wle (feltétel) cklusmag cklusmag nt = 1; wle (<10) Console.WrteLne(); ++; - Console.WrteLne elyett System.out.prntln Előltesztelős cklus Pascal formája: wle feltétel do begn cklusmag program ElolTesztel; var : nteger; begn := 1; wle <10 do begn wrteln(); :=+1; Vezérlés szerkezetek 8
Vezérlés szerkezetek Hátultesztelős cklus A átultesztelős cklus először végreajtja a cklusmagot utána megvzsgálja, ogy a feltétel teljesül-e. Java és C alapú nyelvek esetén a a feltétel gaz, akkor a cklus végreajtása folytatódk, ellenkező esetben pedg leáll. Pascal nyelv esetén a a feltétel ams, a cklus végreajtása folytatódk, ellenkező esetben pedg leáll. A átultesztelős cklusban Java és C alapú nyelvek esetén a folytatás, a Pascal nyelv esetén a klépés feltételét kell megadn! A átultesztelős cklus cklusmagja egyszer mndenképpen végreajtásra kerül. cklus cklusmag a amíg feltétel Hátultesztelős cklus C# és Java formája: do cklusmag wle (smétlés feltétele); cklusmag nt = 1; do Console.WrteLne(); ++; wle (<10); - Console.WrteLne elyett System.out.prntln Hátultesztelő cklus Pascal formája: repeat cklusmag untl (klépés feltétele); program ElolTesztel; var : nteger; begn := 1; repeat wrteln(); :=+1; untl =10; Vezérlés szerkezetek 9
Vezérlés szerkezetek Növekményes cklus Az smétlések száma előre smert. A cklus a cklusváltozó előre megadott értékétől, előre megadott értékg fut. A cklusváltozó egész típusú. cklus n-től m-g cklusmag a cklus vége Ha a cklusváltozó nem egyesével növekszk, akkor megadjuk a számlálás rányát és lépésközét s. Kezdőérték beáll. cklus n-től m-g lefelé egyesével cklusmag a cklus vége For cklus C# és Java formája: feltétel cklusmag for (1; feltétel; 2) // Cklusmag Ckl. v. növelése 1: cklusváltozó deklarálása feltétel: amíg a feltétel gaz addg fut a cklus 2: cklusváltozó növelése/csökkentése Mndaddg amíg a feltétel teljesül a feltételvzsgálatot követően megtörténk a cklusmag végreajtása, majd a cklusváltozó csökkentése és smét kezdődk előröl. Ha a feltétel nem teljesül, akkor cklust követő sal folytatódk a program végreajtása. for (nt =0;<10;++) Console.WrteLne(); ; for (nt =9;>=0;--) Console.WrteLne(); ; - Console.WrteLne elyett System.out.prntln Vezérlés szerkezetek 10
Vezérlés szerkezetek For cklus Pascal formája: for cklusváltozó := kfejezés1 to kfejezés2 do ; kfejezés1: cklusváltozó kezdőértéke kfejezés2: cklusváltozó végértéke : az smételn kívánt (cklusmag) Ha több t szeretnénk smételtetn, akkor a do után begn és end páros között soroljuk fel őket. (Utasításblokk.) Működés: A cklusváltozó felvesz először a kfejezés1 értékét. Ha a cklusváltozó nagyobb mnt a végérték, akkor a program végreajtja az cklusmagot, majd a cklusváltozó növekszk eggyel és smét megtörténk az összeasonlítás. Mndaddg smétlődk az összeasonlítás, cklusmag végreajtása és a cklusváltozó növelése, amíg a cklusváltozó értéke nem lesz nagyobb a végértéknél. Ekkor a cklust követő sal folytatódk a program végreajtása. program ForNovel; var : nteger; begn for :=0 to 9 do begn wrteln(); program ForNovel; var : nteger; begn for :=9 downto 0 do begn wrteln(); Vezérlés szerkezetek 11