Arvutiteaduse instituut
  1. Kursused
  2. 2023/24 sügis
  3. Programmeerimine (LTAT.SO.001)
EN
Logi sisse

Programmeerimine 2023/24 sügis

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend ja for-tsükkel
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • 7. Kahemõõtmeline järjend. Kahekordne tsükkel
  • 8. Kordamine 1. kontrolltööks?
  • 9. Kontrolltöö?
  • 10. Viitamine ja muteerimine
  • 11. Andmestruktuurid
  • 12. Rekursioon ja andmetöötlus
  • Projekti esitamine ja esitlused
  • 13. Objektorienteeritud programmeerimine
  • 14. Kordamine 2. kontrolltööks?
  • 15. Kontrolltöö 2?
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Kiireksamist
  • Viited
< eelmine7. nädala sisukordjärgmine >

7.6 JÄRJEND JA FUNKTSIOON

Järjend funktsiooni argumendina

Programmide kirjutamisel on mõistlik püüda tööd jaotada erinevatest osadeks - alamprogrammideks ehk funktsioonideks. Funktsiooni teemat saate vajadusel korrata eelmise kursuse materjalidest. Pythonis on juba mitmeid defineeritud funktsioone, millele saab anda argumendiks järjendi, näiteks max, min ja len, aga ka näiteks print, kuigi talle saab ka paljusid teisi tüüpe argumendiks anda.

a = [2, -3, 5, 1]
print(max(a))
print(min(a))
print(len(a))
print(a)

Järgmine funktsioon kontrollib, kas esimese argumendina antud järjendis on elemente, mis on suuremad teisest argumendist. Kui on, siis tagastatakse tõeväärtus True ja kui pole, siis tõeväärtus False.

def on_suuremaid(jarjend, piir):
    for i in range(len(jarjend)):
        if jarjend[i] > piir:
            return True
    return False

Oluline on tähele panna, et seda, et piirist suuremaid elemente ei leidu (return False) saame öelda alles siis, kui kõik on läbi vaadatud. Leidumist saame kinnitada kohe, kui sellise leiame.

Pange tähele, et tegelikult saaks sama ülesannet lihtsamini lahendada funktsiooni max abil. Kui maksimaalne element järjendist on piirist suurem, siis järelikult peaks tulemus olema tõene, vastasel juhul väär:

def on_suuremaid(jarjend, piir):
    return max(jarjend) > piir

Ülesanne


Funktsioonina võime realiseerida ka mõne varemtoodud konstruktsiooni. Tabelit väljastava funktsiooni puhul ei tagastata midagi (tegelikult tagastatakse None). Küll aga toimub väljastamine.

def valjasta_tabel(tabel):
    for i in range(len(tabel)):
        for j in range(len(tabel[i])):
            print(tabel[i][j], end=" ")
        print()

arvude_tabel = [[1, 3, 5], [4, 6, 6], [3, 6, -3]]
valjasta_tabel(arvude_tabel)
print()
arvude_tabel2 = [[-1, 3, 5], [4, -8, 6]]
valjasta_tabel(arvude_tabel2)
print()
riimitabel = [['karu', 'maru', 'taru'], ['haru', 'varu', 'naru']]
valjasta_tabel(riimitabel)

Loomulikult võib funktsioon ka mingi väärtuse tagastada. Näiteks võib loendada, mitu positiivset elementi on esimese argumendina etteantud tabeli teise argumendina etteantud indeksiga veerus:

def positiivsete_arv_veerus(tabel, veeru_indeks):
    loendaja = 0
    for rida in tabel:
        if rida[veeru_indeks] > 0:
            loendaja += 1
    return loendaja

Ülesanne


Järjend funktsiooni väärtusena

Funktsioon võib tagastada samuti järjendi, kasvõi kahemõõtmelise järjendi.

Harjutamiseks koostame funktsiooni, millele antakse argumentidena kaks arvu: esimene näitab, kui suur ruutmaatriks tehakse ja teine, millega täidetakse peadiagonaal. Tahame, et funktsiooni rakenduse loo_diagonaalmaatriks(3, 1) väärtuseks oleks [[1, 0, 0], [0, 1, 0], [0, 0, 1]].

def loo_diagonaalmaatriks(jark, sisu):
    maatriks = []
    for i in range(jark):       # välimine tsükkel tekitab ridu
        rida = []
        for j in range(jark):   # sisemine hoolitseb veergude eest
            if i == j:          # tegemist on peadiagonaali elemendiga
                rida.append(sisu)
            else:
                rida.append(0)
        maatriks.append(rida)
    return maatriks

Matemaatiliselt pole diagonaalmaatriksil tegelikult piirangut, et kõik peadiagonaali elemendid peaksid võrdsed olema.

Ülesanne


Ülesanne


Ülesanne



< eelmine7. nädala sisukordjärgmine >
  • 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