A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Előző változat mindkét oldalon Előző változat Következő változat | Előző változat | ||
|
programozas_alapok [2015/11/30 18:02] bucsupe |
programozas_alapok [2015/11/30 18:27] (aktuális) |
||
|---|---|---|---|
| Sor 99: | Sor 99: | ||
| ===== Iteráció ===== | ===== Iteráció ===== | ||
| Amikor ciklikusan, többször ismétlődve kell végrehajtani egy tevékenységet, vagy tevékenység sorozatot, akkor ciklusszervező utasítást használunk. Minden ciklus két fő részből áll. A ciklus fejből és a ciklus magból. A ciklus fej egy feltételt tartalmaz, mely vezérli a ciklust. A ciklus mag tartalmazza azokat az utasításokat amiket a ciklusban végre kell hajtani. | Amikor ciklikusan, többször ismétlődve kell végrehajtani egy tevékenységet, vagy tevékenység sorozatot, akkor ciklusszervező utasítást használunk. Minden ciklus két fő részből áll. A ciklus fejből és a ciklus magból. A ciklus fej egy feltételt tartalmaz, mely vezérli a ciklust. A ciklus mag tartalmazza azokat az utasításokat amiket a ciklusban végre kell hajtani. | ||
| + | Háromféle ciklusszervező szerkezet van, melyet sorban végignézünk. | ||
| + | |||
| + | ==== Elől tesztelő ciklus ==== | ||
| + | |||
| + | A leggyakoribb és legáltalánosabb ciklusszerkezeta az elöltesztelő ciklus. Ebben az esetben először a ciklusfejben megadott feltétel kiértékelődik, majd ha ez igaz akkor végrehajtódik a ciklus mag. Ezek a lépések addig ismétlődnek amig a ciklusfejben lévő kifejezés igaz. Ha hamis, akkor vége a ciklusnak és a program végrehajtása a ciklust lezáró utasítás után folytatódik. | ||
| + | A ciklusszervezésnél figyelni kell arra, hogy nehogy végtelen ciklust készítsünk. Ez a programozó felelőssége. A végtelen ciklus azt jelenti, hogy olyan eset alakul ki, mely kapcsán a feltétel nem változik meg és mindig igaz értéket fog adni. Például ha a fenti ciklusban az a változó értékét nem növeljük, akkor végtelen ciklus alakul ki, ugyanis az a változó sosem fogja elérni a 100-at, így a feltétel mindig igaz lesz. | ||
| + | |||
| Példaként nézzük a számok kiíratását 1-100 között: | Példaként nézzük a számok kiíratását 1-100 között: | ||
| <code> | <code> | ||
| Sor 106: | Sor 113: | ||
| PROGRAM | PROGRAM | ||
| + | |||
| a=1; | a=1; | ||
| WHILE (a<=100) | WHILE (a<=100) | ||
| Sor 111: | Sor 119: | ||
| a=a+1; | a=a+1; | ||
| ENDWHILE | ENDWHILE | ||
| + | | ||
| + | OUTPUT: "Vége a programnak"; | ||
| + | | ||
| ENDPROG | ENDPROG | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | ==== Hátul tesztelő ciklus ==== | ||
| + | A hátultesztelő ciklusban először végrehajtódik a ciklusmag, majd a ciklusfeltétel kiértékelődik. Programozási nyelvtől függ hogy a feltétel hogyan értelmezendő. Pascalban a ciklusfeltétel a kilépés feltételét határozza meg, ellentétben a C nyelvvel, ahol a ciklusban maradás feltételét jelenti. | ||
| + | A pszeudó nyelvben mindkét megvalósítás létezik (lásd a [[pszeudo-nyelv|leírásban]]). | ||
| + | |||
| + | <code> | ||
| + | VARIABLES | ||
| + | INTEGER a; | ||
| + | ENDVAR; | ||
| + | |||
| + | PROGRAM | ||
| + | |||
| + | a=1; | ||
| + | DO | ||
| + | OUTPUT: a; | ||
| + | a=a+1; | ||
| + | WHILE (a<=100) | ||
| + | | ||
| + | OUTPUT: "Vége a programnak"; | ||
| + | | ||
| + | ENDPROG | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ==== Növekményes ciklus ==== | ||
| + | A harmadik ciklusszervező lehetőség, melyet általában minden nyelv megvalósít arra ad lehetőséget, hogy adott számszor hajtsunk végre egy utasítássorozatot. Én azt szoktam mondani ha tudjuk hogy hányszor kell végrehajtani valamit akkor a növekményes ciklust használjuk, ellenkező esetben az előző kettő típus valamelyikét. Egyszóval a példaként használt számkiíró programo tipikusan növekményes ciklussal szokás programozni. | ||
| + | |||
| + | <code> | ||
| + | VARIABLES | ||
| + | INTEGER a; | ||
| + | ENDVAR; | ||
| + | |||
| + | PROGRAM | ||
| + | |||
| + | FOR a=1 TO 100 | ||
| + | OUTPUT: a; | ||
| + | NEXT | ||
| + | | ||
| + | OUTPUT: "Vége a programnak"; | ||
| + | | ||
| + | ENDPROG | ||
| + | </code> | ||
| + | |||
| + | Vegyük észre hogy ebben a ciklusban nem kellett az a változónak értéket adni a ciklus előtt, és a ciklus magban sincs utasítás amivel növeljük a változó értékét. Ugyanis aciklus fejben szerepel a változó és éppen arról szól ez a ciklus hogy a változónk sorra felveszi az értékeket a megadott intervallumban. | ||
| + | |||
| + | |||
| + | |||