Avaa päävalikko

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.

Sisällysluettelo

While-rakenneMuokkaa

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-silmukkaMuokkaa

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-silmukkaMuokkaa

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-silmukkaMuokkaa

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ösMuokkaa

LähteetMuokkaa