Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. for
  2. do...while
  3. while

...

for-silmukka

For-silmukka on hyvä valinta silloin kun toistojen lukumäärä on ennalta tiedossa.rakennetta kannattaa käyttää, jos toistojen määrä tiedetään ohjelmassa, ennen kuin toistot aloitetaan.

  • For-lauseessa toistojen lukumäärää hallitaan ohjelmassa olevan toistolaskurin avulla.
  • Se määritellään yleensä kokonaislukumuuttujana, jolle annetaan nimi i:
Code Block

    int i;
  • Toistot päätetään, kun laskuri on ylittänyt sovitun loppuarvon.
  • Jos for-silmukoita on sisäkkäin, tarvitaan useita laskureita.
  • Sisempien silmukoiden laskureille voidaan käyttää nimiä j ja k.

Toistolaskurin käsittely

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

  1. laskurin alkuarvon asettaminen (alkutoimet)
  2. laskurin arvon vertaaminen loppuarvoon (toistoehto)
  3. laskurin arvon kasvattaminen yhdellä (lopputoimet)

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

Code Block

    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

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
Code Block

for (alkuarvo; silmukassa olo ehto; lisäys toistokertojen välillä)
{
    toiminnot silmukan sisällälauseita;
}

Esimerkki

Esimerkiksi seuraavassa Seuraavassa for-silmukassa tulostetaan i:n arvo arvot (0...9) ruudulle:

Code Block
int i;
for (i=0; i<10; i++)
{
    printf("\n i = %d",i);
}

...

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 toistorakenteeksi.

Code Block
do
{
   toiminnot silmukan sisällä;
}
while (silmukassa olo ehto);

...