Anime stílusú illusztráció két diákkal, akik az algoritmus ciklusok típusait tanulják – for, while és do while ábrával a táblán.

Programozási alapismeretek

Algoritmus ciklusok

Az algoritmus ciklusok arra szolgálnak, hogy ne kelljen ugyanazt a műveletsort újra és újra leírnunk, hanem a számítógép ismételje meg helyettünk. 
A programozásban három alapvető ciklus típust különböztetünk meg: számlálós, elöltesztelős és hátultesztelős ciklusokat. Ezek mind segítenek abban, hogy hatékony, rövid és jól átlátható programokat írjunk. 

Ciklustípusok

A programozásban többféle ciklus létezik – attól függően, hogy előre tudjuk-e, hányszor kell ismételni az utasításokat, vagy csak futtatás közben derül ki, mikor kell megállni. Nézzük a három fajtáját:

    1. Számlálós ciklus(for)

    Lényege: pontosan meghatározzuk, hányszor fusson le a ciklus. Előre tudjuk, hogy „n” számú ismétlés kell👉 Példa:

    Ciklus i := 1-től 10-ig egyesével
    KI: i
    Ciklus vége

    2. Elöltesztelős ciklus (while)

    Lényege: addig fut aciklus, amíg a feltétel igaz. Akkor jó, ha nem tudjuk előre, hányszor kell ismételni

    👉 Példa:
    a := 1
    Ciklus amíg a <=10
    KI: a
    a := a+1
    Ciklus vége

    3. Hátultesztelős ciklus (do-while)

    Lényege: a ciklus legalább egyszer lefut, utána akkor ismétli, ha a feltétel igaz. Tipikus, ha előbb futtatni kell, és csak utána vizsgáljuk a feltételt. 

    👉 Példa:
    a := 1
    Ciklus 
    KI: a
    a := a+1
    Amíg a <= 10

    Típus Mikor használd? Lefut legalább egyszer? Pszeudokód Scratch blokk C++ minta Tipikus hiba
    Számlálós (for) Előre ismert N ismétlés. Nem garantált
    Ciklus i := 1..N
      KI: i
    Ciklus vége
    „ismételd N-szer”
    for(int i=1;i<=N;i++){ cout<
    i növelés kihagyása; rossz határ (`<` vs `<=`).
    Elöltesztelős (while) Amíg a feltétel igaz. Nem garantált
    a := 1
    Amíg a <= 10
      KI: a
      a := a+1
    Ciklus vége
    „amíg igaz … ismételd”
    int a=1;
    while(a<=10){ cout<
    Végtelen ciklus (feltétel nem változik).
    Hátultesztelős (do–while) Legalább egyszer futnia kell. Igen
    a := 1
    Ciklus
      KI: a
      a := a+1
    Amíg a <= 10
    nincs natív; if+repeat kombináció
    int a=1;
    do{ cout<
    Feltétel a végén → könnyű túlfutni.

    Mini példák - pszeudókóddal

    1. Számoljunk 1-től 10-ig!
    Írj pszeudókódot, ami az algoritmus ciklusok segítségével kiírja az 1 ... 10 számokat egymás után 

    A megoldáshoz kattints ide

    Ciklus i := 1..10
    KI: i
    Ciklus vége

    Magyarázat: a számlálós ciklusnál az alapértelmezett lépésköz 1. 
    A := pszeudókódban az értékadás jele

    Zöld kapucnis anime fiú a táblánál, aki az algoritmus ciklusok mini példáit (for, while, do-while) magyarázza

    2. Kérj be egy számot (N), majd az algoritmus ciklusok segítségével számold ki az 1-től N-ig terjedő számok összegét! A végén írd ki az összeget. 

    A megoldáshoz kattints ide

    BE: N
    i := 1
    osszeg := 0
    Amíg i <= N
    osszeg := osszeg + i
    i := 1 + 1
    Ciklus vége
    KI: "Összeg:", osszeg

    Magyarázat: 

    BE - bekérünk egy számot. Ez lesz a felső határ

    i := 1 - elindítjuk a számlálónkat 1-ről. Ezzel fogunk végigsétálni az 1..N tartományon

    osszeg := 0 -az induló összeg 0, ide gyűjtjük a részösszegeket

    amíg i <=N - előltesztelős ciklus, addig fut, amíg igaz,hogy i nem nagyobb, mint N. Ha rögtön hamis (pl.: N=0), a többi már nem fut le

    osszeg := osszeg + i - Hozzáadjuk az aktuális i-t az összeghez (értékadás: jobb oldalt kiszámoljuk, bal oldalt eltesszük)

    i := i + 1 - léptetés: továbblépünk a következő számra. Ha ezt kihagyod, végtelen lesz a ciklus
    ciklus vége: visszaugrás a feltételhez (i <= N). Ha még igaz, jön a következő kör

    KI: "Összeg:", osszeg - kiírjuk a végeredményt

     

    Kör i (belépéskor) Hozzáadott érték osszeg (kilépéskor) i léptetés után
    1 1 +1 1 2
    2 2 +2 3 3
    3 3 +3 6 4
    4 4 +4 10 5
    5 5 +5 15 6
    6 6 — (nem fut) 15

    A 6. ellenőrzésnél az i ≤ N már hamis (6 ≤ 5), ezért kilépünk, és kiírjuk: Összeg: 15.

    3. Olvass be egy nemnegatív egész számot (pl. 325) és számold ki a számjegyeinek az összegét (3+2+5 = 10). Ehhez az algoritmus ciklusok közül egy elöltesztelős ciklust használunk, mert minden számjegyet sorban meg kell vizsgálni. 
    Mini tudásdoboz:
    x mod 10 -> az osztás maradéka. 17 mod 3 = 2 (17-ben a 3 megvan ötször, marad a 2)
    x div 10 -> lefelé kerekít, pontosabban eldobja a tört részt. 49 div 10 = 4 (49-ben a 10 = 4,9, csak a 4 marad)

    A megoldáshoz kattints ide

    BE: x
    osszeg := 0
    amíg x > 0
       osszeg := osszeg + (x mod 10)
       x := x div 10
    ciklus vége
    KI: "A számjegyek összege:", osszeg

    Magyarázat - a példa: x = 325
    BE: x  //beolvassuk a számot, x=325

    osszeg := 0 // a kiinduló összeg üres, még nem adtunk hozzá semmit

    Amíg x > 0 // a 325 nagyobb, mint 0, belépünk a ciklusba

    osszeg := osszeg + (x mod 10) // x mod 10 = 5 (325-ben a 10 megvan 32,5-tel, az ötöt megtartja. Az  osszeg = 0+5 = 5

    x := x div 10 // 325 div 10 = 32. Ezzel zárjuk az első kört

    2. kör: x = 32, ami nagyobb mint 0, belép újra a ciklusba
    osszeg = 5 + 32 mod 10 =  5+2 (32-t osztom tízzel, marad a kettő) = 7
    x = 32 div 10 = 3

    3. kör x = 3, ami nagyobb, mint 0, belép a ciklusba
    osszeg = 7 + (3 mod 10) = 7+3 = 10 (Hármat elosztom tízzel. A három kisebb, mint 10, így maga a 3 a maradék. 3 mod 10 = 3)

    Kilépés: x = 0, így a feltétel hamis, vége a ciklusnak. Az összeg = 10. 

    4. Kérj be egy számot (pl. 7) és írasd ki a szorzótábláját 1-től 10-ig!

    A megoldáshoz kattints ide

    BE: n
    i := 1
    Amíg i <= 10
    KI: n, " * ", i, " = ", n*i
    i := i + 1
    Ciklus vége

    Magyarázat

    BE: n // bekérjük azt a számot, amelynek a szorzótábláját szeretnénk kiírni. Például n = 7

    i := 1 //ez lesz a számlálónk, innen indulunk. A szorzótáblát mindig 1-től kezdjük

    Amíg i <= 10 // a ciklus addig fut, amíg i nem nagyobb, mint 10

    KI: n, " * ", i, " = ", n*i // kiírjuk az aktuális sort a szorzótáblából. Példa: ha n=7 és i=3, akkor a kimenet 7*3 = 21

    i := i + 1 //lépünk a következő számra (i =2, i = 3, ..., i = 10)

    Ciklus vége: visszatérünk a feltételhez (i <= 10) és újra futtatjuk, amíg el nem érjük a 10-et.

     

    Kör i (belépéskor) Kimenet i léptetés után
    1 1 3 * 1 = 3 2
    2 2 3 * 2 = 6 3
    3 3 3 * 3 = 9 4
    4 4 3 * 4 = 12 5
    5 5 3 * 5 = 15 6
    6 6 3 * 6 = 18 7
    7 7 3 * 7 = 21 8
    8 8 3 * 8 = 24 9
    9 9 3 * 9 = 27 10
    10 10 3 * 10 = 30 11 (→ kilép)

    Amikor i = 11, a feltétel i ≤ 10 hamis, így a ciklus leáll.

    5. Olvass be egy számot (N), és számold ki az 1..N közötti páros számok összegét 

    A megoldáshoz kattints ide

    BE: N
    osszeg := 0
    i := 2
    amíg i <= N
    osszeg := osszeg + i
    i := i + 2
    Ciklus vége
    KI: "Páros számok összege", osszeg

    Magyarázat

    BE: N // bekérjük a felső határt, pl. N = 10

    osszeg := 0 // előkészítjük az összegváltozót

    i := 2 //a számláló induljon kettőről, mert ez az első páros szám

    Amíg i <= N //a ciklus addig fut, amíg nem lépjük től az N-t.

    osszeg := osszeg + i // mindig hozzáadjuk az aktuális páros számot

    i := i + 2 // kettesével léptetünk, így mindig páros számot kapunk

    Ciklus vége // újraellenőrizzük a feltételt, és ha igaz, jön a következő kör

    KI: // a végén kiírjuk az összeget

     

    Kör i (belépéskor) Hozzáadott érték osszeg (kilépéskor) i léptetés után
    1 2 +2 2 4
    2 4 +4 6 6
    3 6 +6 12 8
    4 8 +8 20 10
    5 10 +10 30 12 (→ kilép)

    A ciklus 12-nél megáll, mert i ≤ N (12 ≤ 10) hamis. Végeredmény: 30.

    6. Olvass be egy természetes számot (N), és írd ki növekvő sorrendben az összes osztóját

    A megoldáshoz kattints ide
    BE: N i := 1 Amíg i <= N Ha N mod i = 0 akkor KI: i i := i + 1 Ciklus vége   Magyarázat: i := 1 // innen indulunk (1 minden N-nek osztója) Amíg i <= N //addig megyünk, amíg el nem érjük N-t Ha N mod i = 0 //ha a maradék 0, akkor i osztó Ki: i //kiírjukaz osztót i := i + 1 // lépünk a következő jelöltre
    Kör i (jelölt) 12 mod i Osztó? Kiírt osztók (eddig) i léptetés után
    1 1 0 igen 1 2
    2 2 0 igen 1, 2 3
    3 3 0 igen 1, 2, 3 4
    4 4 0 igen 1, 2, 3, 4 5
    5 5 2 nem 1, 2, 3, 4 6
    6 6 0 igen 1, 2, 3, 4, 6 7
    7 7 5 nem 1, 2, 3, 4, 6 8
    8 8 4 nem 1, 2, 3, 4, 6 9
    9 9 3 nem 1, 2, 3, 4, 6 10
    10 10 2 nem 1, 2, 3, 4, 6 11
    11 11 1 nem 1, 2, 3, 4, 6 12
    12 12 0 igen 1, 2, 3, 4, 6, 12 13 (→ kilép)

    Végső kimenet: 1, 2, 3, 4, 6, 12. A ciklus i ≤ N után áll le.

    Mi az algoritmus? – anime stílusú lány, aki végzett a leckével a Programozási alapismeretek cikkhez