====== Különbségek ====== 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. | ||
+ | |||
+ | |||
+ |