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/ }
}