Toistorakenne

Kohteesta Wikipedia
Siirry navigaatioon Siirry hakuun

Toistorakenne on ohjelmointikielten rakenne, joka toistaa annettua ohjelmakoodia, kunnes annettu toistoehto ei enää evaluoidu todeksi.[1]

Useat ohjelmointikielet tukevat eri muotoja, mutta eivät välttämättä jokaista muotoa. Sivunkuvauskielet kuten HTML ja kyselykielet kuten SQL eivät yleensä tue toistorakenteita.

While-rakenne[muokkaa | muokkaa wikitekstiä]

Java-kielessä, C-kielessä ja C++ -kielessä while-silmukka kirjoitetaan seuraavasti:

while (toistoehto) {
    /* toistettava ohjelmakoodi */
}

Python-kielessä taas seuraavasti:

while (toistoehto):
    #toistettava ohjelmakoodi

Python-kielessä ei ole erillisiä silmukan alku- eikä loppumerkkejä. Siksi sisennys eli rivien alussa olevat välilyönnit ovat erityisen tärkeitä.

Do{...}while-silmukka[muokkaa | muokkaa wikitekstiä]

do-while-silmukka eroaa while -silmukasta siinä, että toistoehdon tarkastus tehdään vasta silmukan rungon suorittamisen jälkeen, jolloin annettu runko tulee aina suoritetuksi vähintään kerran.

do {
    /* toistettava koodi */
} while (toistoehto);

For-silmukka[muokkaa | muokkaa wikitekstiä]

for-silmukka on samankaltainen kuin while, mutta sen arvot voidaan alustaa suoraan argumenteissa. Silmukan määrittelyssä annetaan kolmessa kohdassa alustustoimenpiteet, tarkistusehdot ja toiston jälkeen suoritettava toiminto, joita voi kielestä riippuen olla useita joka kohdassa. Tavanomainen määrittely näyttää samanlaiselta C, C++ ja Java kielissä:

for (int i = 0; i < 10; i++) {
    //toistettava koodi
}

Ehtoja voidaan yhdistää eri kentissä seuraavasti:

int a, b;
for (a = 0, b = 9; a < 10 && b >= 0; a++, --b)
{
    printf("a: %d, b: %d\n", a, b);
}

Foreach-silmukka[muokkaa | muokkaa wikitekstiä]

foreach-silmukka toistaa silmukan runkoa, kunnes jokainen annetun kokoelman tietue on käsitelty. Foreach-rakenne piilottaa viittauksen taulukon indeksiin tai vastaavaan käsittelyn kannalta epäoleelliseen tietoon. Kokoelman on oltava yhteensopiva foreach-rakenteen kanssa (esim. Javan Collection, Rubyn enumerable).

Seuraava Java-kielinen esimerkkiohjelma laskee kokonaislukutaulukon alkioiden summan - Javassa avainsana on ei ole foreach, vaan for:

int sum(int[] a) {
    int result = 0;
    for (int i : a)
        result += i;
    return result;
}

Python:

#Luodaan lista.
lista = ["1. arvo", "2. arvo", "3. arvo"]
#silmukka:
for x in lista:
            print (x);

C++ tukee foreach-silmukkaa C++11:stä lähtien rajatun alueen for-silmukkana (engl. range-based for loop):

#include <iostream>

int main()
{
    int myint[] = {1, 2, 3, 4, 5};

    for (int i : myint)
    {
        std::cout << i << '\n';
    }
}

Katso myös[muokkaa | muokkaa wikitekstiä]

Englanninkielisiä artikkeleita aiheesta[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]