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