C-kieli‎ > ‎

Toistorakenteet, for, while, do-while

Yleistä


C-kielessä on kolme toistorakenetta for, do while ja while for-toistorakenne on ehkä selväpiirteisin, for-sanan jälkeen tulee kaikki silmukan toimintaan
liittyvät määrittelyt.


for


         for(alkuarvo; silmukassa olo ehto ; lisäys toistokertojen välillä)
         {
                 toiminnot silmukan sisällä;
         }

Esimerkiksi seuraavassa for-silmukassa tulostetaan i:n arvo 0...9

         int i;
         for(i=0;i<10;i++)
         {
                printf("\n i = %d",i);
         }

 

do-while


do-while- tostorakennetta käytetään silloin, kun silmukkaan täytyy mennä kerran, vaikka silmukassa oloehto ei olisikaan tosi. do-while-rakennetta sanotaan loppuehtoiseksi while-silmukaksi

         do
        {
                toiminnot silmukan sisällä;
        }while(silmukassa olo ehto);

Esimerkki
        int i=0;
        do
       {
            printf("\ni = %d",i);
            i++;
       }while(i<10);



while

while- tostorakennetta käytetään silloin, kun silmukkaan ei mennä alkuehto ei ole tosi. while-rakennetta sanotaan alkuehtoiseksi while-silmukaksi

        while(silmukassa olo ehto)
      {
             toiminnot silmukan sisällä;
      }

Esimerkki
        while(i<10)
      {
             printf("\ni = %d",i);
             i++;
      }

"Ikuinen" silmukka


Seuraavassa on esimerkki ikuisen silmukan ja if sekä else- lauseiden käytöstä. Ikuista silmukkaa tarvitaan hyvin usein ohjelmassa, kun ennalta ei tiedetä koska ohjelmasta tulisi poistua. Tyypillisesti ikuisesta silmukasta poistutaan break tai return käskyillä.

        /*Ohjelma, joka tulostaa millä välillä annettu luku on.  Lukuvälit ovat <10, 10-100 ja >100. Käytetään ohjelmassa if else lauseita  */
        #include<stdio.h>
        #include<conio.h>
        void main()
        {
             int Luku;
             while(1)//"ikuinen silmukka"
             {
                     printf("\nAnna jokin luku: ");
                     scanf("%d",&Luku);
                     if(Luku < 10) printf("Luku on < 10");
                     else if(Luku >= 10 && Luku <= 100)
                     printf("Luku on 10...100");
                     else printf("Luku on > 100");
                     if(Luku==500) break;/*poistutaan silmukasta, kun käyttäjä antaa luvun 500*/
             }
        }



Comments