1. Sissejuhatus
Tsüklite olulisus C keeles
Programmeerimises on sama toimingu korduv täitmine ehk tsüklid väga olulised. C keeles kasutatakse korduvate toimingute jaoks for
-tsüklit, while
-tsüklit ning selle artikli teemaks olevat do while
-tsüklit. Selles artiklis keskendume do while
-tsüklile, selgitades selle põhitõdesid ja praktilisi näiteid.
2. do while-tsükli põhialused
do while
-tsükli põhisüntaks
do while
-tsükkel garanteerib, et tsükli sees olevad käsud täidetakse vähemalt üks kord. Süntaks on järgmine:
do {
// Teostatavad käsud
} while (tingimus);
Selle süntaksi puhul täidetakse kõigepealt do
-plokis olevad käsud ning alles seejärel hinnatakse tingimust. Kui tingimus on true
, käivitatakse tsükkel uuesti; kui false
, siis tsükkel lõpeb.
Erinevus while
-tsükliga
while
-tsükli puhul hinnatakse tingimust kõigepealt ja ainult siis, kui see on true
, täidetakse tsükli sees olevad käsud. do while
-tsükli puhul hinnatakse tingimust pärast esimese korra täitmist, mistõttu täidetakse käsud vähemalt üks kord.
3. do while-tsükli kasutuskohad
Kasutaja sisendi korduv kontroll
do while
-tsükkel on kasulik näiteks kasutaja sisendi kontrollimiseks. Näiteks kui on vaja paroole mitu korda sisestada, saab do while
-tsükliga kergesti kontrollida, kas sisestus on õige ja vajadusel kasutajalt uut sisestust küsida.
Korduvad protsessid mängudes
Mängude programmeerimisel kasutatakse do while
-tsüklit olukordades, kus näiteks mängija peab tegema valikuid seni, kuni ta otsustab mängu jätkata. Sellisel juhul hoiab do while
-tsükkel mängu töösolekus, kuni valitakse “Jätka mängu”.
4. do while-tsükli näited
do while
-tsükli põhikasutus
Järgmisena on toodud näide do while
-tsükli põhikasutusest.
#include <stdio.h>
int main() {
int i = 0;
do {
printf("Loend: %dn", i);
i++;
} while (i < 5);
return 0;
}
Selles näites täidetakse kõigepealt do
-plokis olevad käsud ning tsükkel jätkub seni, kuni i
väärtus on väiksem kui 5. Väljundiks on numbrid 0
kuni 4
.
Kasutaja sisendi näide
Järgmine näide näitab, kuidas kasutajalt küsitakse sisendit seni, kuni see vastab soovitud tingimustele.
#include <stdio.h>
int main() {
int number;
do {
printf("Sisesta arv 1 kuni 10: ");
scanf("%d", &number);
} while (number < 1 || number > 10);
printf("Sisestatud arv: %dn", number);
return 0;
}
Selles koodis palutakse kasutajal sisestada arv vahemikus 1
kuni 10
. Kui sisestus jääb väljapoole seda vahemikku, küsitakse uuesti. Tsükkel jätkub, kuni sisestus on õige.

5. Lõputu tsükkel ja selle juhtimine
Lõputu tsükli loomine
do while
-tsüklit saab kasutada ka lõputu tsükli loomiseks. Lõputu tsükkel tähendab, et tingimus on alati true
ning tsükkel ei lõppe kunagi ise.
do {
// Käsklused, mis täidetakse lõputult
} while (1);
Lõputu tsükli juhtimine
Lõputut tsüklit saab juhtida break
– ja continue
-käsuga.
break
-käsk: lõpetab tsükli koheselt.continue
-käsk: jätab tsükli sees ülejäänud käsud vahele ning alustab uut tsükli sammu.
Allpool on näide lõputust tsüklist koos break
-käsuga.
#include <stdio.h>
int main() {
int count = 0;
do {
printf("Tsükli kordus: %dn", count);
count++;
if (count > 5) {
break;
}
} while (1);
return 0;
}
Selles näites kasutatakse break
-käsku, et tsükkel lõppeks, kui count
ületab väärtuse 5.
6. Mitme tingimusega do while-tsükkel
Kuidas kasutada mitut tingimust
do while
-tsüklis saab kasutada mitut tingimust, ühendades need &&
(JA) või ||
(VÕI) loogikaoperaatoriga.
do {
// Teostatavad käsud
} while (tingimus1 && tingimus2);
Näide keerulisemast tingimusest
Allpool olevas näites kontrollitakse, kas kasutaja sisestatud arv jääb vahemikku 1 kuni 100, ja küsitakse uuesti, kui ei jää.
#include <stdio.h>
int main() {
int number;
do {
printf("Sisesta arv 1 kuni 100: ");
scanf("%d", &number);
} while (number < 1 || number > 100);
printf("Sisestatud arv: %dn", number);
return 0;
}
Selles näites palutakse sisestada õiges vahemikus olev arv; vastasel juhul kordub küsimine.
7. Kokkuvõte
do while
-tsükkel sobib eriti olukordadesse, kus on vaja tagada, et tsükli sees olevad käsud täidetakse vähemalt üks kord. while
– ja do while
-tsükli erinevuste mõistmine aitab kirjutada paindlikumaid programme. Samuti tasub õppida break
ja continue
kasutamist ning mitme tingimusega keerukamate tsüklite koostamist, et C keele tsükleid tõeliselt valdada.
8. Harjutusülesanne ja lahendus
Ülesanne
Kirjutage programm, mis küsib kasutajalt täisarvu vahemikus 1 kuni 10 ning küsib uuesti seni, kuni sisestus on õige. Kui õige arv on sisestatud, kuvatakse selle arvu kahekordne väärtus.
Lahendusnäide
#include <stdio.h>
int main() {
int number;
do {
printf("Sisesta arv 1 kuni 10: ");
scanf("%d", &number);
} while (number < 1 || number > 10);
printf("Sisestatud arvu kahekordne väärtus: %dn", number * 2);
return 0;
}
Selles harjutuses kasutatakse do while
-tsüklit, et kontrollida kasutaja sisendit ja vajadusel küsida uuesti, kuni see vastab nõuetele.
9. Lisainfo ja järgmised sammud
Pärast do while
-tsükli mõistmist tasub õppida ka teiste tsüklistruktuuride (for
– ja while
-tsükkel) erinevusi ja kasutusvõimalusi. Järgmise olulise teemana C keeles soovitame tutvuda pointerite ehk viitadega, mille abil saab kirjutada veelgi võimsamaid programme. Soovitame julgelt edasi õppida!