A ciklusok arra szolgálnak, hogy egy adott logikát ismételten végrehajtsunk.
A két leggyakoribb típus a while loop (határozatlan ismétlés) és a for loop (határozott, azaz megszámlált ismétlés).
Van egy for each ciklus is, amivel egy későbbi fogalomnál találkozunk majd.
A for loop egy fejlécből és egy kódblokkból áll, amely a ciklus törzsét tartalmazza, kapcsos zárójelek közé zárva.
A fejléc három, pontosvesszővel (;) elválasztott komponensből áll: init-statement, condition és egy további expression.
Ezek bármelyike üres is lehet.
for (init-statement; condition; expression) {
some_statement;
}
A while loop addig hajtja végre a törzsét, amíg a feltétel igaz.
Az alábbi kódrészlet megmutatja, hogyan lehet egy for-ciklust while-ciklussá alakítani.
init-statement;
while(condition) {
some_statement;
expression;
}
Ciklusokkal dolgozva gyakran szükség van arra, hogy egy számlálóváltozóhoz hozzáadjunk 1-et, vagy kivonjunk belőle 1-et.
Ez annyira gyakori, hogy a műveletnek saját operátorai vannak: ++ és --.
Két formában fordulnak elő: prefix és postfix. A prefix még az utasításban való felhasználás előtt megváltoztatja a változót, a postfix pedig utána. Valószínűleg a legtöbbször a prefix formát szeretnéd használni.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
Az init komponens általában beállít egy számlálóváltozót, a condition ellenőrzi, hogy folytatódjon-e a ciklus vagy leálljon, a post komponens pedig általában minden ismétlés végén lépteti a számlálót.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Ez a ciklus az 1-től 9-ig terjedő számokat adja össze (a 9-et is beleértve).
Egy ciklus törzsén belül a break kulcsszóval teljesen leállíthatod a ciklus végrehajtását:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
Ezzel szemben a continue kulcsszó csak az aktuális iteráció végrehajtását állítja le, és a következővel folytatja:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Megjegyzés: a ciklus logikáját általában könnyebb megérteni, ha a
breakés acontinuehasználatát a minimumra csökkented, vagy teljesen elkerülöd.