A ciklus kifejezés szinte az összes programozási nyelvben megjelenik, hiszen használata egyszerű, mégis rendkívül hasznos. Segítségével végrehajthatunk bizonyos kódokat, annyiszor amíg az általunk megszabott feltétel teljesül.For CiklusAz első, leggyakraban használt ciklus, a for ciklus. For ciklus felépítése:
for( a ; b ; c ) { d }
Magyarázat:
a: inicializátor
b: feltétel
c: d blokk után lefuttatandó kód
d: törzs
Működése:
1.)a
2.)Amíg b igaz, d
3.)c
Példa:
Kód:
new i
new osszeg
for (i=1; i<=10; i++)
{
osszeg += i
}
Magyarázat:
- Az első paraméter, az "i=1", végrehajtódik mielőtt a ciklus elindul, tehát az "i" értéke 1 lesz.
- Ezután az "increment", növelés paraméter fut le. Ebben a paraméterben egy "post-increment" operátort adtunk meg, így csak a kód lefutása után fog új értéket kapni.
- Leellenőrzi a feltételt. Az i<=10? Az i jelenleg 1, tehát igen, a feltétel igaz.
- Mivel a feltétel igaz, az "osszeg+=i" lefut. Tehát az "osszeg" változóhoz hozzáadjuk az "i" változó értékét.
- A kód lefutott, tehát mostmár az "i++" növeli "i"-t 2-re.
- Ezután újra elkezdi ugyanazt.
- i<=10? Igen, most éppen 2. Újra lefut az "osszeg+=i", tehát az "osszeg" 3 lesz.
- A kód lefutott, az "i++" ismét növeli "i"-t 3-ra.
- Mindez addig fog menni, amíg az "i" el nem éri a 11-es értéket. Abban a pillanatban a feltétel már nem lesz igaz, így a kódot nem futtatja le és kilép a ciklusból.
- Az "osszeg" változó értéke végül 55 lesz, ami az 1-től 10-ig terjedő számok összege.
A ciklusunk segítségével könnyen kezelhetjük tömbjeinket is.
Kód:
//Csináljunk egy funkciót, ami összeadja egy adott tömb elemeinek értékét, majd visszaadja azt nekünk.
sum_of_array(tomb[], size)
{
new i, osszeg
//A ciklus 0-ról indul és mindaddig fut, míg a tömb méretét el nem éri.
for (i=0; i<size; i++)
{
osszeg += tomb[i]
}
return osszeg
}
//Íme a tömbünk:
new tomb[4]
tomb[0] = 1
tomb[1] = 1
tomb[2] = 3
tomb[3] = 4
//Próbáljuk ki a funkciónkat, ami a for ciklussal működik:
new megoldas = sum_of_array(tomb, 4)
//a válasz 9 lesz (1+1+3+4)
Itt van még egy példa a for ciklus használatára. Ezzel a funkcióval összehasonlíthatunk két tömböt, hogy egyenlőek-e.
Kód:
bool:compare_arrays(tomb1[], tomb2[], size)
{
new i
for (i=0; i<size, i++)
{
//Ha a két elem nem stimmel, false-t, tehát hamisat adunk vissza.
if (tomb1[i] != tomb2[i])
{
return false
}
}
//Ha a funkció sikeresen végigfutott true-t, tehát igazat adunk vissza.
return true
}
A while ciklusEz a ciklus is nagyon fontos, de annyira nem bonyolult mint az imént tárgyalt for ciklus.
A while csak egy paramétert kér, ami pedig a feltétel. Mindaddig, míg a feltétel igaz, a kód lefut. Vigyázat, könnyen létrejöhet ilyenkor végtelen ciklus, ami nem éppen egészséges dolog.
Példaként írjuk meg a fenti funkciókat a while segítségével.
Kód:
// Egy egyszerű while ciklus:
new i=0
new osszeg
while (++i <= 10)
{
osszeg+=i
}
//Funkció, amely összeadja a tömbünk elemeinek értékét:
sum_of_array(tomb[], size)
{
new i=0, osszeg
// i a kód végrehajtása után növekedik egyel.
while (i++ < size)
{
osszeg += tomb[i]
}
return osszeg
}
//Az összehasonlító funkciónk while-t használva:
bool:compare_arrays(tomb1[], tomb2[], size)
{
new i
while (i++ < size)
{
if (tomb1[i] != tomb2[i])
{
return false
}
}
return true
}
A do-while ciklusEz egy igen ritkán használt ciklus, de néha igencsak jól jöhet.
Felépítése:
Kód:
do {} while(feltétel)
Egy egyszerű példa:
Kód:
do
{
a+=1
}
while(a < 5)
A do-while ciklus mindenféleképp végrehatja legalább egyszer a "do" blokkban szereplő kódot és csak utána ellenőrzi le, hogy a feltétel teljesül-e. Amennyiben igen, akkor mégegyszer végrehatja és így tovább. Ezt a ciklust másképpen hátultesztelős ciklusnak nevezzük.