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:
- 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.
- A léptetés részen egy művelet van, ami minden egyes ”kör” után lefut.
- 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 Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja Ismétlés a tudás anyja
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 1 2 3 4 5 6 7 8 9
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 -5 -4 -3 -2 -1 0 1 2 3 4
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 5 4 3 2 1 0 -1 -2 -3 -4 -5
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 0 2 4 6 8 10 12 14 16 18 20