Felhasználói eszközök

Eszközök a webhelyen


programozas_alapok

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.

Összehasonlító nézet linkje

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.
 +
 +
 +
programozas_alapok.1448906537.txt.gz · Utolsó módosítás: 2015/11/30 18:02 (külső szerkesztés)