previous next Up Title Contents Index

Do...while-ratkaisu

    printf ("Anna luku väliltä 1-10:");
    do
    {
        scanf ("%d", &luku);
        if (luku<1 || luku>10)
        {
            printf ("Luku virheellinen.");
            printf (" Anna uusi luku (1-10):");
        }
    }while (luku<1 || luku>10);
    printf ("Annoit luvun %d",luku);

Tässä esimerkissä while-rakenne on muutettu samalla periaatteella do...while-rakenteeksi kuin lottonumeron arvonnassa.

Edellisestä poiketen do...while tuottaa tässä hieman kankeamman ja jopa sekavamman ratkaisun.

Tämä johtuu siitä, että luvun kysyminen ja vastaanottaminen on erotettu toisistaan ja että toistorakenteen lisäksi tarvitaan if-rakenne, joten ehto on jouduttu kirjoittamaan kahteen kertaan.

Virhetilanteiden hallinta kannattaakin yleensä aina toteuttaa while-rakennetta käyttäen.
Tällöin virhetilanteeseen varautunut ohjelmanosa on ohjelmassa oma irrallinen moduulinsa.

Seurauksena on, että ohjelman kontrolli pysyy paremmin hallinnassa.

previous next Up Title Contents Index