Do-while cyklus
Cyklus do-while má trochu odlišnú funkcionalitu ako cyklus while. Najprv si ukážeme deklaráciu:
do telo cyklu while(testovacia podmienka);
Princípom cyklu do while je ten, že bez ohľadu na podmienku sa cyklus aspoň raz vykoná. Práve slovo do znamená v angličtine robiť. Začne sa vykonávať telo cyklu a až na konci narazí na podmienku, ktorú už verne poznáte. Príklad nám ukáže, ako to funguje.
1. príklad: Cyklus do while
#include <iostream> // hlavičkový súbor using namespace std; // priestor mien int main() // hlavná funkcia { int cislo = 0; // deklarácia premennej do { // začiatok cyklu do while cout << "Ja som cislo: " << cislo << "\n"; // výpis na obrazovku cislo++; // inkrementácia } while (cislo < 5); // podmienka cyklu do while return 0; // koniec programu }
Výsledok programu:
Ja som cislo: 0 Ja som cislo: 1 Ja som cislo: 2 Ja som cislo: 3 Ja som cislo: 4
Rozbor programu:
Po inicializácii premennej začne cyklus do while. Prvé vykonanie cyklu je automatické. Po prvej iterácii sa testuje podmienka. Ak je true, tak sa opäť vykoná cyklus. Ak false, tak cyklus skončil a pokračuje sa ďalej v programe.
2. príklad: Vykoná sa aspoň jedná iterácia?
#include <iostream> using namespace std; int main() { int cislo = 0; do { cout << "Ja som cislo: " << cislo << "\n"; cislo++; } while (cislo < 1); return 0; }
Výsledok programu:
Ja som cislo: 0
Rozbor programu: Ako vidíte, jedná iterácia sa vykonala. O tom je cyklus do while.
3. príklad:
#include <iostream> using namespace std; int main() { int cislo = 0; bool isTrue = false; do { cislo++; cout << "Ja som cislo: " << cislo << "\n"; if (cislo == 10) isTrue = true; // zmena pravdivostnej hodnoty } while (!isTrue); return 0; }
Výsledok programu:
Ja som cislo: 1 Ja som cislo: 2 Ja som cislo: 3 Ja som cislo: 4 Ja som cislo: 5 Ja som cislo: 6 Ja som cislo: 7 Ja som cislo: 8 Ja som cislo: 9 Ja som cislo: 10
Rozbor programu:
V podmienke while máme pravdivostnú premennú, ktorou určíme fungovanie cyklu. Ak je premenná isTrue false, tak cyklus prebehne ešte raz. Ak je true, tak cyklus skončí. Pre tých, ktorí nevedia skrátený zápis podmienky, tak !isTrue je to isté, ako isTrue == false.
4. príklad: Vyhláskujem ti tvoje meno
#include <iostream> using namespace std; int main() { string name; cout << "Napis svoje meno: "; cin >> name; if (name.empty()) { cout << "Sorry, ale nieco musis napisat. Skus to este raz!"; return 0; } size_t i = 0; do { cout << name[i] << " "; i++; } while (i < name.size()); return 0; }
Výsledok programu:
Napis svoje meno: eduard e d u a r d
Rozbor programu: Najprv vstup od užívateľa. Následne prebieha cyklus do while až pokým premenná i je rovná veľkostí reťazca (ukončovací znak sa do veľkostí reťazca neberie do úvahy).
Na koniec použijeme príklad z minulého dielu. Zmeníme ho na do while cyklus. Myslíte, že bude výrazná zmena?
5. príklad: Tvoje meno v ASCII kóde
#include <iostream> using namespace std; int main() { string name; cout << "Napis svoje obcianske meno!\n"; cin >> name; if (name.empty()) { cout << "Ale daco musis napisat no, nestvi ma!"; return 0; } size_t i = 0; do { cout << name[i] << ": " << static_cast<int>(name[i]) << "\n"; // tu pretypujeme a vypíšeme na obrazovku i++; } while (i < name.size()); return 0; }
Výsledok programu:
Napis svoje obcianske meno! eduard e: 101 d: 100 u: 117 a: 97 r: 114 d: 100
Rozbor programu:
Všetko funguje ako má.