C-keele while-lauset põhjalik selgitus | Algajate juhend põhialustest edasijõudnuteni

1. Sissejuhatus

Programmeerimises on tsüklid hädavajalikud tõhusaks ülesannete täitmiseks. C-keeles on mitmeid tsüklistruktuure, millest while-lause on parim valik, kui korduste arv pole eelnevalt teada. Selles artiklis selgitatakse C-keele while-lauset algajatele arusaadavalt, alates põhikasutusest kuni keerukamate näideteni. Koos tegelike koodinäidetega õpitakse while-lause eeliseid ning selle praktilist rakendamist.

2. Mis on C-keele while-lause?

while-lause on tsüklistruktuur, mis kordab käsklusi seni, kuni tingimus on tõene (true). Kui tingimus muutub vääraks (false), siis tsükkel lõpeb. Järgmine koodinäide illustreerib while-lause põhistruktuuri:

int i = 0;
while (i < 10) {
    printf("i väärtus on: %d\n", i);
    i++;  // Suurendab loendurit
}

Selles koodis kuvatakse i väärtus seni, kuni see on väiksem kui 10. Kui i saavutab 10, tsükkel lõpeb. while-lause on kasulik olukordades, kus korduste arv pole eelnevalt teada.

3. Millal kasutada while-lauset?

while-lauset on eriti kasulik kasutada, kui korduste arv pole eelnevalt määratud. Näiteks kui programm ootab kasutajalt sisestust või töötleb andmeid seni, kuni teatud tingimus on täidetud. Järgmine koodinäide demonstreerib programmi, mis võtab kasutajalt numbreid vastu seni, kuni sisestatakse negatiivne arv.

int value = 0;
while (value >= 0) {
    printf("Sisestage number: ");
    scanf("%d", &value);
    printf("Sisestatud väärtus on: %d\n", value);
}

See programm jätkab kasutaja sisestuse vastuvõtmist, kuni sisestatakse negatiivne arv. Sellistes olukordades on while-lausel suur paindlikkus.

4. Levinud vead while-lauses

Lõputu tsükkel on üks sagedasemaid vigu while-lauses. See juhtub siis, kui tsükli lõpetamise tingimus pole kunagi täidetud. Järgmine koodinäide näitab tüüpilist viga:

int i = 0;
while (i < 10) {
    printf("i väärtus on: %d\n", i);
    // i++ on unustatud!
}

Selles koodis ei uuendata i väärtust, mistõttu tingimus i < 10 jääb igavesti tõeseks, põhjustades lõputu tsükli. Lõputud tsüklid võivad süsteemi koormata, seega on oluline alati veenduda, et tsükkel suudab mingil hetkel lõppeda.

5. Praktilised näited while-lause kasutamisest

Siin on mõned näited, kuidas while-lauset tegelikes programmides kasutada.

Näide 1: Kasutaja sisendi töötlemine

Programm kuvab sõnumit seni, kuni kasutaja sisestab “lõpeta”.

char input[50];
while (strcmp(input, "lõpeta") != 0) {
    printf("Sisestage sõnum (sisestage 'lõpeta' lõpetamiseks): ");
    scanf("%s", input);
    printf("Sisestatud sõnum: %s\n", input);
}

Näide 2: Korduv liitmine

Järgmine programm liidab numbreid seni, kuni summa ületab 100.

int sum = 0;
int num = 1;
while (sum < 100) {
    sum += num;
    num++;
    printf("Praegune summa: %d\n", sum);
}

Need näited näitavad, kuidas while-lauset saab kasutada korduvate protsesside juhtimiseks erinevates olukordades.

6. Edasijõudnud while-lause kasutusviisid

while-lauset saab kasutada ka keerukamate protsesside jaoks. Alljärgnev näide demonstreerib kahemõõtmelise massiivi töötlemist pesastatud while-tsüklitega.

int i = 0, j = 0;
int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

while (i < 3) {
    j = 0;
    while (j < 3) {
        printf("%d ", matrix[i][j]);
        j++;
    }
    printf("\n");
    i++;
}

See kood kasutab pesastatud while-tsükleid kahemõõtmelise massiivi sisu kuvamiseks. while-lausel on suur kasutusvõimalus ka keerukamate andmetöötlusülesannete puhul.

7. Võrdlus teiste tsüklitega

C-keeles on mitmeid erinevaid tsüklistruktuure. Järgnevas tabelis võrreldakse while-lauset teiste tsüklitega.

TsükkelKasutusolukordOmadused
while-lauseKui korduste arv pole eelnevalt teadaTingimust kontrollitakse enne igat iteratsiooni
for-lauseKui korduste arv on eelnevalt määratudAlgväärtustus, tingimus ja uuendamine saab määrata ühes reas
do-while-lauseKui soovitakse, et vähemalt üks iteratsioon toimuksTingimust kontrollitakse pärast esimest iteratsiooni

See tabel aitab valida sobivaima tsüklistruktuuri vastavalt programmi nõuetele.

8. Kokkuvõte

Selles artiklis selgitasime põhjalikult C-keele while-lauset. While-lause on paindlik ja võimaldab dünaamiliselt korduvate tingimuste alusel protsesse juhtida. On oluline vältida lõputuid tsükleid ning kasutada while-lauset efektiivselt, et parandada programmi jõudlust ja loetavust.

Soovitame katsetada artiklis toodud koodinäiteid ning harjutada while-tsüklite kasutamist erinevates olukordades. Head programmeerimist!