Arvutiteaduse instituut
  1. Kursused
  2. 2025/26 sügis
  3. Programmeerimine (LTAT.03.001)
EN
Logi sisse

Programmeerimine 2025/26 sügis

  • Üldinfo
  • 1. Muutuja ja avaldis
  • 2. Tingimuslause
  • 3. Funktsioon
  • 4. Korduslause
4.1 Korduslause. While-tsükkel
4.2 For-tsükkel
4.3 Kodutöö
4.4 Harjutused
4.5 Silmaring: veebirakendus
  • 5. Sõned. Lihtsam failitöötlus
  • 6. Kontrolltöö 1
  • 7. Järjend
  • 8. Järjend 2
  • 9. Kahekordne tsükkel. Failitöötlus
  • 10. Andmestruktuurid
  • 11. Andmestruktuurid 2
  • 12. Kontrolltöö 2
  • 13. Objektorienteeritud programmeerimine
  • 14. Objektorienteeritud programmeerimine 2
  • 15. Rekursioon
  • 16. Kordamine. Projektide esitlused
  • Viiteid
  • Silmaringimaterjalid
  • Materjalid

For-tsükkel

For-tsükkel

Lisaks while-tsüklile on Pythonis veel üks tsüklitüüp – for-tsükkel. Järgnev näide väljastab ekraanile "Tere!" 3 korda.

for i in range(3):
    print("Tere!")

Nagu näed, sarnaneb for-tsükkel kuju poolest while-tsükliga – esimesel real on päis, mis määrab korduste arvu, ning edasi tuleb taandreaga esitatud keha, mis sisaldab lauseid, mida igal kordusel käivitatakse. For-tsüklit saab nimetada määratud tsükliks, sest päises määratakse kindel arv, kui palju kordi tsüklit läbitakse.

Miks "for"?

Mõnedes programmeerimiskeeltes nimetatakse for-tsüklit hoopis for-each-tsükliks, sest tsükli keha täidetakse päises näidatud järjendi iga elemendi jaoks uuesti. Pythonis on otsustatud lühema nime "for" kasuks.

Funktsioon range

Sageli on meil vaja selliseid tsükleid, kus tsüklimuutuja väärtus teatud reeglite järgi muutub. Meil endalgi on olnud vaja, et näiteks i omandaks järjest väärtusi 0, 1, 2, 3 jne. Siin tuleb appi funktsioon range, mis genereerib järjendit meenutava väärtuse. Näiteks range(4) annab vahemiku, milles on 0, 1, 2 ja 3:

for i in range(4):
    print(i)

Kui argumendiks on mittepositiivne arv, siis ühtegi arvu vahemikus pole:

for i in range(-4):
    print(i)

Vahel pole for-tsüklis tsüklimuutuja i väärtus oluline, sest meid huvitab vaid korduste arv. Kuna tsüklimuutuja peab ikkagi kirjas olema, kuid selle väärtust ei pea kasutama, saab muutuja i asemel kasutada ka alakriipsu _:

for _ in range(3):
    print("Tere!")

Kui funktsioonile range anda kaks argumenti, siis esimene näitab seda, millisest arvust alustatakse ja teine seda, millise arvu juures lõpetatakse (seda ennast mitte kaasates).

for i in range(1, 4):
    print(i)

Kui teine argument ei ole esimesest suurem, siis ühtegi arvu vahemikus pole.

Kui funktsioonile range on antud kolmas argument, siis see näitab sammu, mis võib olla ka negatiivne. Nii annab funktsioon range(0, 13, 2) arvud 0, 2, 4, 6, 8, 10, 12 ja range(4, -5, -3) arvud 4, 1, -2.

Ekraanile saab väljastada arvud 0, 2, 4, 6, 8, 10, 12 selliselt:

for i in range(0, 13, 2):
    print(i)

Ja arvud 4, 1, -2 selliselt:

for i in range(4, -5, -3):
    print(i)

for vs while

Tegelikult saaks for-tsükli asemel alati kasutada ka while-tsüklikt, aga tulemus poleks alati nii selge. Võrdleme omavahel samaväärseid while- ja for-tsükleid.

while-tsükli näide:

i = 0
while i < 5:
    print(i)
    i += 1

ja samaväärse for-tsükli näide:

for i in range(5)
    print(i))

Nagu näha, annab for-tsükkel koos range()'iga sama tulemuse palju lihtsamalt – tsüklimuutuja algväärtustamine, selle suurendamine ja tsükli lõpetamise kontrollimine toimuvad kõik automaatselt. Seetõttu ongi soovitatav loenduril põhinevad tsüklid kirjutada for-tsüklina.

Samas, mõnede probleemide lahendamisel ei piisa for-tsüklist. Näiteks arvutimänge, kus tegevus kordub teatud tingimuse kehtivuseni ei saa mugavalt for-tsükliga kirja panna. Seetõttu ongi Pythonis kaks erinevat korduslauset – paindlik, aga pisut tülikas while-lause ning mugav, aga teatud juhtudel ebasobiv for-lause.

Funktsiooni korduv kasutamise tsüklis

Nüüd, kui me oskame kasutada tsükleid, saame ka funktsioone mugavamalt korduvalt kasutada. Teeme suurema näite, kus kirjutame ümber varasemalt ringipindala arvutamise programmi selliselt, et leiaks ringi pindala, kui raadius on 1, 2, 3, 4 ja 5. Selleks kutsume funktsiooni ringi_pindala korduvalt välja põhifunktsioonis selliselt, et

  1. for-tsükliga anname funktsioonile argumendiks ükshaaval arvud ühest viieni ja
  2. väljastame ekraanile vastavalt funktsiooni tagastatud väärtuse ehk ringi pindala.
from math import pi


def ringi_pindala(raadius: int) -> float:
    pindala = pi * raadius**2
    return round(pindala, 2)


def main():
    for i in range(1, 6):
        print(f"Ringi pindala on {ringi_pindala(i)}")


if __name__ == "__main__":
    main()

Korduslause video

Enesekontroll

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused