...
For-rakennetta kannattaa käyttää, jos toistojen määrä tiedetään ohjelmassa, ennen kuin toistot aloitetaan.
Syntaksi
For-rakenteen kieliopillisesta muodosta on oleellista huomata, että kaikki kolme toistoa ohjaavaa operaatiota kirjoitetaan for-riville sulkujen sisään:
Code Block |
---|
for (alkutoimet; toistoehto; lopputoimet)
{
lauseita;
}
|
- For-lauseessa toistojen lukumäärää hallitaan yleensä ohjelmassa olevan toistolaskurin avulla.
-> Se määritellään yleensä kokonaislukumuuttujana, jolle annetaan nimii
:
...
- .
- Toistot päätetään, kun laskuri on ylittänyt sovitun loppuarvon (loppuarvo voi olla vakio tai muuttuja).
- Jos for-silmukoita on sisäkkäin, tarvitaan useita laskureita. Kts Esimerkki 2.
- Sisempien silmukoiden laskureille voidaan käyttää nimiä
j
jak
.
Toistolaskurin käsittely
Laskuriin kohdistuu kolme oleellista operaatiota. Nämä ovat:
- laskurin alkuarvon asettaminen (alkutoimet)
- laskurin arvon vertaaminen loppuarvoon (toistoehto)
- laskurin arvon kasvattaminen yhdellä (lopputoimet)
Nämä kaikki asiat tehdään for-lauseen alussa sulkujen sisällä:
Code Block |
---|
int i;
for (i=1; i<=N; i++)
|
- alkuarvon asettaminen tehdään kerran (ennen 1. toistoa)
- toistoehto tutkitaan ennen kunkin toistokerran alkua
- laskurin arvoa kasvatetaan kunkin toistokerran päätteeksi
Syntaksi
Esimerkki 1
Ohjelman pätkä, joka tulostaa arvot 0...9 allekain ruudulle käyttäen for-toistorakennettaFor-rakenteen kieliopillisesta muodosta on oleellista huomata että kaikki kolme toistoa ohjaavaa operaatiota kirjoitetaan for-riville sulkujen sisään:
Code Block |
---|
int i; for (alkutoimeti=0; toistoehtoi<10; lopputoimeti++) { printf("\n i = %d", lauseitai); } |
Esimerkki 2
Ohjelman pätkä, joka tulostaa arvot 0...9 allekain ruudulle käyttäen for-toistorakennettaOhjelma, jossa tulostetaan kymmenen kertotaulu käyttäen sisäkkäisiä for-rakenteita:
Code Block |
---|
#include <stdio.h> int main() { int i, j; // for-rakenteiden laskurit printf(" |"); // alkumuotoilut for (i=1; i<=10; i++) printf("%3d ", i); // tulostetaan ylärivin luvu 1...10 printf("\n--------------------------------------------"); // tulostetaan rivinvaihto ja 40 '-' -merkkiä for (i=01; i<10i<=10; i++) // ulompi silmukka, käydään arvot 1...10 läpi { printf("\n i = %d", i); }n%3d|", i); // tulostetaan vasempaan laitaan luku, millä kerrotaan ylärivin luvut for (j=1; j<=10; j++) // sisempi silmukka, jossa kerrotaan luvuilla 1...10 ulomman silmukan laskuri { printf("%3d ", i*j); // tulostetaan laskenta i*j ruudulle } } printf("\n"); // loppuun rivinvaihto } |
Ohjelma tulostaa seuraavan taulukon:
No Format |
---|
| 1 2 3 4 5 6 7 8 9 10
--------------------------------------------
1| 1 2 3 4 5 6 7 8 9 10
2| 2 4 6 8 10 12 14 16 18 20
3| 3 6 9 12 15 18 21 24 27 30
4| 4 8 12 16 20 24 28 32 36 40
5| 5 10 15 20 25 30 35 40 45 50
6| 6 12 18 24 30 36 42 48 54 60
7| 7 14 21 28 35 42 49 56 63 70
8| 8 16 24 32 40 48 56 64 72 80
9| 9 18 27 36 45 54 63 72 81 90
10| 10 20 30 40 50 60 70 80 90 100
|