Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

for-toistorakenne

For-rakennetta kannattaa käyttää, jos toistojen määrä tiedetään ohjelmassa, ennen kuin toistot aloitetaan.

  • For-lauseessa toistojen lukumäärää hallitaan yleensä ohjelmassa olevan toistolaskurin avulla.
    -> Se määritellään yleensä kokonaislukumuuttujana, jolle annetaan nimi i.
  • Toistot päätetään, kun laskuri on saavuttanut sovitun loppuarvon (loppuarvo voi olla vakio tai muuttuja).

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

...

...

Toistolaskurin käsittely

Laskuriin kohdistuu kolme oleellista operaatiota. Nämä ovat:

...

 

Toimet

Merkitys

1.

alkutoimet

Laskurin alkuarvon asettaminen

2.

toistoehto

Laskurin arvon vertaaminen loppuarvoon

3.

lopputoimet

Laskurin arvon kasvattaminen

...

Nämä kaikki asiat tehdään for-lauseen alussa sulkujen sisällä:

...

  • alkuarvon asettaminen tehdään kerran (ennen 1. toistoa)
  • toistoehto tutkitaan ennen kunkin toistokerran alkua
  • laskurin arvoa kasvatetaan kunkin toistokerran päätteeksi
  • Jos for-silmukoita on sisäkkäin, tarvitaan useita laskureita. Kts #Esimerkki 2.
  • Sisempien silmukoiden laskureille voidaan käyttää nimiä j ja k, jne.

Esimerkki 1

Ohjelman pätkä, joka tulostaa arvot 0...9 allekain ruudulle käyttäen for-toistorakennetta:

...

Ohjelma, jossa tulostetaan kymmenen kertotaulu käyttäen sisäkkäisiä for-rakenteita:

Note

Ohjelmassa käytetään samaa laskuria i kahteen kertaan. Tämä on ok, kunhan silmukat eivät ole sisäkkäisiä.

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=1; i<=10; i++)                                     // ulompi silmukka, käydään arvot 1...10 läpi
    {
        printf("\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:

...