Příchodem pondělí mám pro Vás další díl z naší série o základech programování v C++. Dnes se podíváme na cykly, řekneme si jak fungují, k čemu jsou dobré a uvedeme si příklad z praxe.

Co to jsou cykly

Cyklus je obecně řečeno smyčka, což znamená, že pokud chceme provést určitou část kódu konečně krát, nebudeme kód kopírovat několikrát za sebou. Jelikož by se zvětšila velikost výsledného programu, ale i proto, že v některých případech předem nevíme, kolikrát se bude krok provádět.

Právě z toho důvodu máme cykly. Cyklus nám tedy v případě že platí podmínka, opakuje určitou část kódu a to až do přerušení klíčovým slovem break, nebo skončení platnosti podmínky.

Druhy cyklů

V C++ máme tři druhy cyklů a to cyklus s podmínkou na začátku, cyklus s podmínkou na konci a cyklus s řídící proměnnou.

Cyklus s podmínkou na začátku

O podmínkách jsme si řekli v minulém dílu tohoto seriálu o C++. Klíčové slovo definující tento druh cyklu je while, přičemž do kulatých závorek umístíme podmínku. Při platnosti podmínky se bude část kódu opakovat.


// Základní struktura cyklu
while (podminka) {
// Tělo cyklu (Opakující se kód)
}

Pokud si tedy uvedeme příklad, pro využití tohoto cyklu, můžeme použít jednoduché zadání:

Vypisuj čísla od 1 do 10, přičemž každé číslo vypiš na novém řádku.


// Výchozí číslo
int cislo = 1;

// Cyklus s podmínkou na začátku
while (cislo <= 10) {
// Výpis čísla
cout << cislo << endl;

// Zvýšení hodnoty čísla o jedničku
cislo++;
}

Důležitou věcí je to, že pokud podmínka neplatí při příchodu k cyklu, tělo cyklu se neprovede ani jednou!

Cyklus s podmínkou na konci

Dalším druhem cyklu je cyklus s podmínkou na konci. Cyklus funguje téměř stejně jako cyklus s podmínkou na začátku. Jediným rozdílem je fakt, že pokud podmínka neplatí, cyklus se provede právě jednou.


// Základní struktura cyklu s podmínkou na konci
do {
// Tělo cyklu
} while (podminka);

Tento druh cyklu se využívá například při opakovaném načítání dat od uživatele, kdy načítáme do zadání určitého znaku.

Příklad: Načítejte od uživatele čísla do zadání čísla 0. Poté vypište počet zadaných čísel.


int cislo, pocetCisel = 0;

do {
// Zadání čísla
cin >> cislo;

// Zvětšení počtu zadaných čísel o jedničku
pocetCisel++;
} while (cislo != 0);

// Vrácení počtu čísel bez posledního čísla, tj.: 0
cout << pocetCisel - 1 << endl;

Cyklus s řídící proměnnou

Cyklus s řídící proměnnou využíváme tehdy, když na začátku cyklu známe počet průchodů cyklem. Slouží k tomu klíčové slovo for, jehož strukturu si ukážeme na následujícím segmentu kódu.


// Úplně zadaný cyklus s řídící proměnnou
for (int i = 0; i < 10; i++) {
// Tělo cyklu
}

// V tomto cyklu můžeme libovolnou část vypustit
// Vynechání první části (je definováno jinde)
for (; i < 10; i++) {
// Tělo cyklu
}

// Vynechání podmínky (Nekonečný cyklus)
for (int i = 0; ; i++) {
// Tělo cyklu
}

// Vynechání poslední části (Musí být měněno v těle cyklu, jinak nekonečný cyklus)
for (int i = 0; i < 10;) {
// Tělo cyklu
}

Dejme tomu, že máme zadání: Zadejte počet čísel, které chcete pod sebou vypsat, tyto čísla poté vypište


int pocetCisel;
cin >> pocetCisel;

// Cyklus s řídící proměnnou
for (int i = 0; i < pocetCisel; i++) {
// Vypsání čísla od jedničky
cout << i + 1 << endl;
}

Klíčové slovo break a continue

V případě nutného ukončení cyklu v případě, že platí podmínka, využijeme klíčového slova break.


// Nekonečný cyklus
while (true) {
//Tělo cyklu

// Podmínka pro okamžité ukončení cyklu
if (podminka) {
// Okamžité ukončení cyklu
break;
}
}

Chceme-li v cyklu skočit na další krok a přeskočit další část kódu v současném procházení. využijeme slovo continue.


// Nekonečný cyklus
while (true) {
// Podmínka pro ukončení aktuálního procházení, skok na začátek cyklu
if (podminka) {
// Skok na začátek
continue;
}

// Tělo cyklu
}

Závěr

Dnes jsme si řekli informace o cyklech. Jednalo se o kratší a vesměs jednodušší díl. V příští epizodě se budeme věnovat funkcím, které nám pomůžou s usnadněním orientace v kódu a celkově nám zjednoduší práci.


Komentujte

Buďte první kdo bude komentovat!

Upozornit na
avatar
wpDiscuz