menu
shopping_cart
0
KOSÁR

18. lecke

FOR ciklus

lightbulb_outlineMegtudjuk hogyan lehet dolgokat ismételni a programkódban

A programozás során szükségünk lehet olyan programszerkezetre aminek segítségével ismételhetünk parancsokat. Többször. Ciklikusan. Az sem árt, ha le tudjuk kérdezni hol tart az ismétlés. Erre való a FOR ciklusnak nevezett programszerkezet.

A FOR ciklus így néz ki:

Hasonlít az IF-re, de többminden van a belsejében. A FOR-hoz szorosan kapcsolódik egy úgynevezett ciklusváltozó, ami számontartja a ciklus állapotát. Ez egy egyszerű int változó, semmi több. A ciklust ez működteti – nélküle nem működne az ismétlés.

A sima zárójeles rész 3 részből áll, amiket pontosvessző választ el:

  1. Az inicializálás részen indítjuk el a ciklust, megmondjuk neki, hogy honnét kezdődjön az állapota. Jelen esetben a ciklusváltozó 1-től kezdődik.
  2. A léptetés részen egy művelet van, ami minden egyes ”kör” után lefut.
  3. A feltétel részen pedig egy feltétel felállításával megadhatjuk meddig fusson a ciklus.

Feladat: Ismétlés

Nézzünk egy egyszerű példát ami 9x kiírja a képernyőre külön sorba azt, hogy ”Ismétlés a tudás anyja”.

#include<stdio.h>

int main(){

    int ciklus;

    for(ciklus = 1; ciklus<10; ciklus=ciklus+1 )
    {
        printf("Ismétlés a tudás anyja\n");
    }

return 0;
}

ciklus.c c

A FOR ciklus ismételgeti a printf(); parancsot. A ciklus kezdetekor a ciklusváltozó inicializálódik az 1-es értékre. Ezután lefut először a kiírás, majd a ciklusváltozót a léptető részen növeljük +1-el. Ekkor lefut a 2. ciklus. Megint növeljük. Lefut a 3. kiírás és így tovább…

A FOR ciklust nem véletlenül hívják ciklusnak, mert ha a vezérlési szálat nézzük, akkor az egy kis ideig (amíg a feltétel részen megadott kifejezés igaz) addig kering ezen a részen:

Amíg a feltétel részen megadott kifejezés igaz addig a FOR ciklusban leszünk. Nézzük mit adtunk meg most feltételnek: ciklus < 10. Tehát amíg a ciklusválozónk el nem éri a 10-et, addig végrehajtódnak a ciklus magjában, a kapcsoszárójelek közötti parancsok.

A ciklusváltozót 1-re inicializáltuk, a léptető részben növeltük, és egészen addig futtatjuk a FOR ciklust, amíg a feltétel igaz, tehát amíg ciklus < 10.

Feladat: Ciklusváltozó kiírása

Bizonyosodjunk meg arról, hogy tényleg ilyen értékeket vesz fel a ciklusváltozó. Írassuk ki őt!

#include<stdio.h>

int main(){

    int ciklus;

    for(ciklus = 1; ciklus<10; ciklus=ciklus+1 )
    {
        printf("%d ", ciklus);
    }

return 0;
}

ciklusvaltozo.c c

A ciklusváltozó tényleg nyomon követi a ciklus állapotát. Felmerülhet a kérdés benned, hogy miért nem 10-ig számolt ha egyszer a 10-es szám is ott van a ciklus sima zárójeles részében? Azért, mert a feltétel részre azt írtuk, hogy ciklus < 10. Tehát nem mentünk el egészen a 10-ig. Ahhoz, hogy elérjünk 10-ig, ezt kell írni: ciklus <= 10-et kellett volna írnunk. Ez talán az egyik leggyakoribb hiba, amit el szoktak követni kezdő programozók.

Mire lehet a FOR ciklust használni? Milliónyi alkalmazása van. A legegyszerűbb a számolgatás. Fel, le, ide-oda:

Felfele számolás

#include<stdio.h>

int main(){

    int ciklus;

    for(ciklus = -5; ciklus<5; ciklus=ciklus+1 )
    {
        printf("%d ", ciklus);
    }

return 0;
}

felfele.c c

Lefele számolás

Ilyenkor a léptető rész iránya és a feltétel rész relációs jelének iránya is megfordul

#include<stdio.h>

int main(){

    int ciklus;

    for(ciklus = 5; ciklus>=-5; ciklus=ciklus-1 )
    {
        printf("%d ", ciklus);
    }

return 0;
}

lefele.c c

Számolgatás kettesével

#include<stdio.h>

int main(){

    int ciklus;

    for(ciklus = 0; ciklus<=20; ciklus=ciklus+2 )
    {
        printf("%d ", ciklus);
    }

return 0;
}

kettesevel.c c