Tsükkel (programmeerimine)

Tsükkel ehk silmus on konstruktsioon programmeerimiskeeltes, mis võimaldab ühte koodilõiku korduvalt käitada.

Tsükkel koosneb üldjuhul täidetavast koodist ja tingimuslausest.

Tsükli tüübid
Eelkontrolliga tsüklis kontrollitakse esmalt, kas tingimus kehtib. Kui kehtib, siis täidetakse tsükli kood ja kontrollitakse tingimust uuesti. Kui tingimus ei kehti, siis väljutakse tsüklist.

Järelkontrolliga tsüklis täidetakse kõigepealt kood, seejärel kontrollitakse tingimust. Kui tingimus kehtib, täidetakse kood uuesti, kui mitte, siis väljutakse tsüklist.

Tsüklite näited

While-tsükkel
While-tsükkel on eelkontrolliga tsükkel, mis on olemas enamikus programmeerimiskeeltes. Pythonis näeb see välja selline:
x = 0
while x < 5:
    print(x)
    x = x + 1

Do-while-tsükkel
Do-while-tsükkel on järelkontrolliga tsükkel. See on olemas näiteks programmeerimiskeeltes Java ja C. Näide C-s:
int x = 0;
do
{
    printf("%d\n", x);
    x++;
} while(x < 5);

Operaatorit ++ kasutatakse tihti iteratsioonimuutuja (loenduri) suurendamiseks ühe võrra. x++ on sama, mis x = x + 1. Muutuja vähendamiseks ühe võrra saab kasutada operaatorit --.

For-tsükkel
For-tsükkel võimaldab mõnes keeles läbida järjendit elementide kaupa. Näiteks Pythonis
for x in [2,4,6]:
    print(x)

Kolmeosaline for-tsükkel on olemas Javas ja C-s. Käsk for koosneb kolmest semikooloniga eraldatud osast: 1) kood, mis täidetakse ühekordselt enne tsüklit, 2) tingimuslause, 3) kood, mis täidetakse pärast igat tsükli sammu (iteratsiooni).
int x;
for(x=0; x<5; x++)
{
    printf("%d\n", x);
}

Kõik kolm osa on valikulised, seega on korrektne ka
int x = 0;
for(;;)
{
    if (!(x < 5)) break;
    printf("%d\n", x);
    x++;
}

Tsükli juhtimiskäsud
Paljudes keeltes on tsüklite juures kasutusel käsud break ja continue. Käsk break väljub tsüklist. Käsk continue lõpetab käimasoleva iteratsiooni ja alustab järgmist, sealjuures kontrollitakse tingimuslauset, kui see on olemas.

Näide Pythonis, mis trükib välja kõik paaritud arvud järjendis enne elementi 0 (trükitakse 1, 3, 5):
for x in [1,2,3,4,5,0,6,7]:
    if x == 0:
        break
    if x % 2 == 0:
        continue
    print(x)

Programmeerimine