V C++ poznáme 3 druhy cyklov. Každý má svoje špecifické použitie a je len na nás ktorý si vyberieme, aby bol program čo najefektívnejšie napísaný. Cyklus sa vždy zapisuje do svorkových zátvoriek {}.
Cyklus for – je to cyklus, u ktorého vačšinou poznáme počet priechodov, patrí k najpoužívanejším. Syntax je nasledovný:
for(i=0;i<10;i++);
i=0 je priradenie hodnoty premennej i
i<10 týmto určujeme hraničný bod cyklu teda, že cyklus sa vykoná 10 krát, lebo začíname od nuly
i++ znamená, že sa bude premenná i zväčšovať o jedna. Pokojne tam môže byť napísane aj i+ akékoľkek číslo, alebo tiež i- čo by znamenalo, že hodnota premennej i klesá o jedna. Tak isto ako v prípade i+akékoľvek číslo funguje aj deklarácia i-akékoľvek číslo.
Cyklus while – je to cyklus, pri ktorom sa najprv overuje podmienka ( while = pokiaľ,ak ) a až potom ak platí sa vykonáva cyklus. Znamená to teda, že cyklus nemusí v programe prebehnúť ani raz ak podmienka nieje splnená. Temto cyklus sa používa vtedy, ak nepoznáme počet priechodov cyklu. Syntax je nasledovný:
while(i<10){
i++;
}
while(i<10) je overenie podmienky ak platí, že i je menšie ako 10 tak sa vykonávajú ďalej funkcie napísane v tele cyklu. V prípade cyklu while je premenná, ktorá sa zvyšuje je umiestená v tele cyklu.
Cyklus do-while – tento cyklus sa používa menej. Používa sa však vtedy ked nepoznáme počet priechodov cyklom a vyžadujeme aspon jeden priechod. Podmienka sa testuje až na konci cyklu. Cyklus prebieha pokým podmienka platí.
Syntax je nasledovný:
do{
vysledok = a + b;
}while (vysledok < 15000);
do je blok, v ktorom je napísané čo sa má vykonať a while je podmienka.
A teraz prejdeme k tomu spomýnanému programu automat na vydávanie mincí. Tento program sa dá vytvoriť na 100 rôžnych spôsobov, ale my použijeme tento jednoduchý s cyklom while.
Vložíme si do formulára 7 komponentov. Všetko to budú komponenty LabelEdit z palety additionals (touto komponentov nedisponuje C++ Builder 3 a nižšie). Alebo tiež môžeme použit klasických 7 komponentov Edit a 7 komponentov Label, ktorými si Edit-y označíme. Obrázok vám povie viac:
Zdrojový kód vyzerá takto:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int suma,peniaze,cenalistka,pocet,desatsk,patsk,dvesk,sk; // premenné zastupujúce mince
desatsk = 0; //vždy je dobreé označiť premennú ak má hodnotu 0 manuálne
patsk = 0; //aj keď c++ builder to robí automaticky ale nie je to veľmi
dvesk = 0; // spoľahlivé
sk = 0;
cenalistka = LabeledEdit5->Text.ToInt(); //priradenie premennej a konverzia textu na
pocet = LabeledEdit6->Text.ToInt(); //číslo
peniaze = LabeledEdit7->Text.ToInt();
suma = peniaze - (cenalistka * pocet); //suma je počet peňazí, ktoré vystanú
while(suma >=10){ //ak zvyšok je väčší alebo rovný desať počet
desatsk++; // desaťkorunáčok sa zvýši o jedna
suma = suma - 10; //je nutné potom odrátať zo zvyšku tých 10
}
while(suma >=5){
patsk++;
suma = suma - 5;
}
while(suma >=2){
dvesk++;
suma = suma - 2;
}
while(suma >=1){
sk++;
suma = suma - 1;
}
LabeledEdit1->Text = desatsk; //výpisy do jednotlivých koloniek vyzerajú takto
LabeledEdit2->Text = patsk;
LabeledEdit3->Text = dvesk;
LabeledEdit4->Text = sk;
}
Program máme hotový, ale je v ňom veľmi veľa nedostatkov tzv. miest, ktoré treba ošetriť. Ošetriť znamená upraviť pre všetky prípady, ktoré sa môžu vyskytnúť. V budúcom dieli si predstavíme funkciu podmienok a na tomto programe si ukážeme proces ošetrovania.