Java:Tsüklid

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Tsükkel (ik loop) võimaldab mingit koodiosa korrata teatud reeglite alusel. Kui näiteks programm peab väljastama numbrid ühest viieni, võib seda teha 5 reaga. Samas kui see programm peaks hakkama väljastama numbreid ühest tuhandeni, oleks 1000 rea kirjutamine väga ebapraktiline. Kui vaatate allolevat koodi, hakkab silma, et read on üsna sarnased:

System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);

Ainuke erinevus ridade vahel on argument, mis println() meetodisse antakse kaasa. Vaatleme, kuidas sama asja lahendada erinevate tsüklitega.


WHILE tsükkel

while-tsüklit saab kasutada, et mingit koodiosa korrata. Tsükli puhul on oluline määrata ära, kui kaua (ehk mis tingimusel) korrata tuleb.

Süntaks:

while (tingimus) {
    käsud
}

kogu seda koodiosa käsud korratakse senikaua, kuni tingimus on tõene (true).

Näiteks: <source lang="java" line> int i = 0; while (i < 5) {

   System.out.println(i);
   i = i + 1;

} System.out.println("läbi"); </source>

Mida see kood teeb? Esimesel real deklareeritakse muutuja i ja pannakse selle väärtuseks 0. Järgneb while-tsükkel, mille tingimus on i < 5. Ehk siis tingimusel, et i väärtus on väiksem kui 5, korratakse koodiosa, mis on ploki sees (read 3 ja 4). Esimesel käivitamisel on i väärtus 0, see on väiksem kui 5, seega käivitatakse while-tsükli sisu. 3. rida prindib välja i väärtuse, et 0. 4. rida muudab i väärtust. i väärtus on i endine väärtus + 1 ehk siis i = 0 + 1 = 1. Sellega on tsükli sisu läbitud. Nüüd kontrollitakse jälle, kas tingimus vastab tõele (i < 5) ehk (1 < 5), see on tõene. Samamoodi tehakse need sammud läbi i = 1, i = 2, i = 3 puhul. Kui i = 4, siis prinditakse välja 4. 4. rida muudab i väärtust: i = 5. Nüüd kui tsükli päises kontrollitakse, kas i < 5 (ehk 5 < 5), on tulemus väär. Seega enam tsükli sisu käima ei panda. Järgmine rida, mis käivitatakse on 6, mis trükib välja "läbi".

FOR tsükkel

Pythonis oleks saanud kasutada sellist lahendust: <source lang="python"> for i in range(5):

   print(i)

</source>

Javas saab kirjutada sellise koodi:

<source lang="java"> for (int i = 0; i < 5; i++) {

   System.out.println(i);

} </source>

Üldine kuju:

for (initsialiseerimine; jätkamise-tingimus; uuendamine) {
    käsud
}

initsialiseerimine käivitatakse ainult üks kord - kõige alguses. Jätkamise-tingimust kontrollitakse enne igat kordust. Kui jätkamise-tingimus annab tulemuseks true, pannakse käskude osa käima. Peale käskude käivitamist toimub uuendamine, millele järgneb jälle jätkamis-tingimuse kontrollimine.

Ehk siis for-tsükli käivitamise järjekord on selline:

  • initsialiseerimine
  • kui jätkamise-tingimus on tõene, jätkame, muul juhul lõpetatakse tsükli täitmine ära.
  • käsud
  • uuendamine
  • jätkamise-tingimuse kontroll (ja sedasi hakkab korduma)

for-tsüklit saab kasutada ka selliselt, et mõni (kasvõi kõik) nendest kolmest osast on täitmata. Näiteks:

<source lang="java"> int i = 0; for ( ; i < 10; i++) {

   System.out.println(i);

} </source>