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 14:23] bucsupe |
programozas_alapok [2015/11/30 18:27] (aktuális) |
||
|---|---|---|---|
| Sor 36: | Sor 36: | ||
| STRING s; | STRING s; | ||
| BOOLEAN b; | BOOLEAN b; | ||
| - | END; | + | ENDVAR; |
| </code> | </code> | ||
| Sor 60: | Sor 60: | ||
| Akkor használjuk ezt a strukturált programozási alapelemet, amikor mindenféle feltétel nélkül utasításokat egymásután sorban szeretnénk végrehajtani. Például a háromszög kerületének kiszámítása az alábbi szekvencia szerint történhet: | Akkor használjuk ezt a strukturált programozási alapelemet, amikor mindenféle feltétel nélkül utasításokat egymásután sorban szeretnénk végrehajtani. Például a háromszög kerületének kiszámítása az alábbi szekvencia szerint történhet: | ||
| <code> | <code> | ||
| - | INPUT: a; | + | VARIABLES |
| - | INPUT: b; | + | INTEGER a,b,c; |
| - | INPUT: c; | + | ENDVAR |
| - | t := a + b + c; | + | |
| - | OUTPUT: t; | + | PROGRAM |
| + | INPUT: a; | ||
| + | INPUT: b; | ||
| + | INPUT: c; | ||
| + | t := a + b + c; | ||
| + | OUTPUT: t; | ||
| + | ENDPROG | ||
| </code> | </code> | ||
| Sor 71: | Sor 77: | ||
| Az alábbi kódban bekérünk két számot, majd összehasonlítjuk azokat és kiírjuk az összehasonlítás eredményét eredményét. | Az alábbi kódban bekérünk két számot, majd összehasonlítjuk azokat és kiírjuk az összehasonlítás eredményét eredményét. | ||
| <code> | <code> | ||
| - | INPUT: a, b; | + | VARIABLES |
| - | IF (a==b) THEN | + | INTEGER a,b; |
| - | OUTPUT: "A két szám egyenlő"; | + | ENDVAR |
| - | ELSE | + | |
| - | IF (a<b) THEN | + | PROGRAM |
| - | OUTPUT: "A b nagyobb mint az a!"; | + | INPUT: a, b; |
| - | ELSE | + | IF (a==b) THEN |
| - | OUTPUT: "Az a nagyobb mint a b!"; | + | OUTPUT: "A két szám egyenlő"; |
| - | ENDIF | + | ELSE |
| - | ENDIF | + | IF (a<b) THEN |
| - | + | OUTPUT: "A b nagyobb mint az a!"; | |
| + | ELSE | ||
| + | OUTPUT: "Az a nagyobb mint a b!"; | ||
| + | ENDIF | ||
| + | ENDIF | ||
| + | ENDPROG | ||
| </code> | </code> | ||
| A példában két szelekció van egymásba ágyazva. Az elsőben azt vizsgáljuk hogy egyenlő-e a két szám. Ha nem egyenlő (ELSE ág) akkor egy újabb szelekció következik, mely megvizsgálja hogy az a kisebb-e mint a b. | A példában két szelekció van egymásba ágyazva. Az elsőben azt vizsgáljuk hogy egyenlő-e a két szám. Ha nem egyenlő (ELSE ág) akkor egy újabb szelekció következik, mely megvizsgálja hogy az a kisebb-e mint a b. | ||
| + | |||
| + | ===== 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. | ||
| + | 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: | ||
| + | <code> | ||
| + | VARIABLES | ||
| + | INTEGER a; | ||
| + | ENDVAR; | ||
| + | |||
| + | PROGRAM | ||
| + | |||
| + | a=1; | ||
| + | WHILE (a<=100) | ||
| + | OUTPUT: a; | ||
| + | a=a+1; | ||
| + | ENDWHILE | ||
| + | | ||
| + | OUTPUT: "Vége a programnak"; | ||
| + | | ||
| + | ENDPROG | ||
| + | </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. | ||
| + | |||