Yleistä
Kun jotain koodin osaa halutaan toistaa ennalta tiedetty määrä kertoja tai ennalta tuntematon määrä, niin voimme käyttää toistorakennetta.
C-kielessä on kolme toistorakennetta:
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- toistorakennetta 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); } while(i<10);
while
while-toistorakennetta käytetään silloin, kun silmukkaan ei mennä alkuehdon ollessa epätosi. while-rakennetta sanotaan alkuehtoiseksi while-silmukaksi.
while (silmukassa olo ehto) { toiminnot silmukan sisällä; }
Esimerkki
int i=0; 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 if ja else -lauseita. */ #include <stdio.h> #include <conio.h> int 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 } return 1; }