Toistorakenteet
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:
Näistä kaksi ensimmäistä ovat ns. alkuehtoisia ja viimeinen, do...while on loppuehtoinen toistorakenne.
...
"Ikuinen" silmukka
- Joskus on tarpeen rakenne, joka toistaa haluttua koodia "ikuisesti".
- Lainausmerkit siksi, että ei tietenkään mikään ohjelma pyöri ikuisesti, mutta merkintää käytetään ilmaisemaan että toistorakenne toistuu ennalta tuntemattoman määrän kertoja.
Esimerkki
Seuraavassa on esimerkki ikuisen silmukan sekä if ja else-lauseiden käytöstä.
Ikuista silmukkaa tarvitaan ohjelmissa, missä ei ennalta tiedetä milloin ohjelmasta tulisi poistua.
Ikuisesta silmukasta poistutaan break tai return käskyillä.
Code Block |
---|
/* 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. ---- h2. 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); } ---- h2. 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); ---- h2. h2. 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++; } h2. "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> void main() { int Luku; while(1)//"ikuinen silmukka" { #include <stdio.h> #include <conio.h> int main() { int Luku; while (1) // "ikuinen" silmukka { printf("\nAnna jokin luku: "); scanf("%d",&Luku); if if (Luku < 10) printf("Luku on < 10"); else if (Luku >= 10 && Luku <= 100) printf("Luku on 10...100"); else else printf("Luku on > 100"); if(Luku== if (Luku == 500) break; //* poistutaan silmukasta, kun käyttäjä antaa luvun 500*/ } } } return 1; } |