Cykly v C++
C++ 11

image_printTisk

V tomto článku si popíšeme tří základní typy cyklů v jazyce C++ a vše si ukážeme na jednoduchém příkladu součtu čísel z posloupnosti 1..10. V závěru kapitoly pak budou vysvětleny dva příkazy, break continue, sloužící k manipulaci průchodu cyklem, ve kterém jsou obsaženy.

Cyklus For

Ukažme si na příkladu, jak může vypadat součet čísel v intervalu <1, 10> pomocí cyklu for.

int soucet = 0;
for(int i = 1; i <= 10; i = i + 1) {
    soucet = soucet + i;
}
cout << "Součet je " << soucet << endl;

Klauzule cyklus for, která je uvedená v závorkách za jeho klíčovým slovem, se skládá ze tří částí oddělených od sebe středníkem. První část slouží k inicializaci potřebných hodnot pro cyklus a je provedena před zahájením bloku cyklu. Druhá část obsahuje testovací podmínku, která rozhoduje o pokračování cyklu a nebo jeho ukončení. Třetí část, tedy poslední, je prováděna na konci každé iterace a slouží k inkrementaci či dekrementaci různých čítačů a pomocných proměnných.

Věčný cyklus For

Cyklus for lze napsat také ve zkrácené verzi jak ukazuje následující příklad:

for(;;) {
    // Blok příkazů
}

V této formě, kdy jsou vynechány všechny klauzule, se cyklus provádí nekonečně, dokud nedojde k přerušení například příkazem break, který si popíšeme v tomto článku dále.

Cyklus While

Nyní si ukážeme vyjádření předchozího příkladu pomocí cyklu while:

int i = 1;
int soucet = 0;
while(i <= 10) {
    soucet = soucet + i;
    i = i + 1;
}
cout << "Součet je " << soucet << endl;

Cyklus while obsahuje v záhlaví podmínku. Pokud je splněna, spustí se provádění vnitřního bloku kódu cyklu. Po té se vrátí běh programu na začátek cyklu a kontrola podmínky se provede znovu. Cyklus je přerušen až v okamžiku, kdy podmínka přestane platit, a po té běh programu pokračuje za blokem příkazů cyklu.

Cyklus Do … While

Posledním cyklem je syntaxe do … while.

int i = 1;
int soucet = 0;
do {
    soucet = soucet + i;
    i = i + 1;
} while(i <= 10);
cout << "Součet je " << soucet << endl;

Tento typ cyklu je v podstatě totožný s předchozím ve smyslu, že se provádí do doby, než přestane platit jeho podmínka. Primárním rozdílem je, že podmínka se kontroluje až na konci vnitřního bloku cyklu. To má za následek, že tento cyklus vždy provede první iteraci svého bloku s kontrolou splnění podmínky na svém konci. Předchozí cyklus while může úplně přeskočit provádění svého vnitřního bloku kódu, pokud je jeho podmínka vyhodnocena hned z kraje jako neplatná.

Příkaz Break

Příkaz break slouží k okamžitému přerušení provádění cyklu, který ho obsahuje. Náš příklad můžeme přepsat do následující formy:

int soucet = 0;
int i = 1;
while(true) {
    soucet = soucet + i;
    i = i + 1;
    if(i > 10)
        break;
}
cout << "Součet je " << soucet << endl;

Tento příklad uvádí cyklus while s neměnnou podmínkou true, což má za následek, že na první pohled se jedná o věčný cyklus. Přerušení jeho výpočtu dochází ale příkazem if, který kontroluje, zda hodnota čítače i překročila hodnotu 10 a který pak v tomto případě zavolá příkaz break, který provádění cyklu přeruší.

Příkaz Continue

Na závěr si zmíníme příkaz continue, který také provádí přerušení cyklu. Na rozdíl od příkazu break, který jej ukončí úplně, tento příkaz předá řízení na jeho začátek a spustí novou iteraci. Ukažme si na příkladu, jak provést součet je sudých čísel v našem intervalu <1, 10>:

int soucet = 0;
for(int i = 1; i <= 10; i++)  {
    if(i % 2 > 0)    // Test, zda jde o liche cislo
        continue;
    soucet = soucet + i;
}
cout << "Součet je " << soucet << endl;

 Shrnutí

 

image_printTisk
Cykly v C++
C++ 11
Ohodnoťte tento článek

Související články

  • Příkaz “if” – větvení běhu programu V tomto článku si probereme první příkaz pro řízení běhu programu. Jedná se příkaz if, který slouží pro větvení běhu programu na základě vyhodnocení nějakého logického výrazu. Seznámíme se […]
  • Relační operátory Tento článek pojednává o porovnávacích, jinak nazývané také relačních,  operátorech v jazyce C++. Souhrnně se o nich zmíníme, ukážeme si opět rozdíl jejich zápisu od klasické matematiky a […]
  • Seznamy hodnot a cyklus “range-for” Úvod Datový typ vector nový datový typ v zobáčcích datový typ prvku inicalizace pomocí { } indexovací operátor pouze pouze na čísla range for cyklus […]
  • Předávání a vracení polí z funkcí DO POKROČILÝCH TÉMAT Tento článek pojednává o práci s poli a funkcemi. Popisuje rozličné metody, jak předat pole jako argument funkci a také jak pole z funkce vrátit. Existují v […]
  • Příkaz “switch” Úvod
  • Metody vracení hodnot z funkce DO POKROČILÝCH ASI Tento článek pojednává o způsobech vracení hodnot z funkcí. Jsou to stejné způsoby, o kterých je psáno ve článku předchozím, tedy vracení hodnotou nebo vracení […]