Arvutiteaduse instituut
  1. Kursused
  2. 2016/17 kevad
  3. Programmeerimise alused II (LTAT.TK.001)
EN
Logi sisse

Programmeerimise alused II 2016/17 kevad

  • Kursuse info
  • 1. Kahemõõtmeline järjend
  • 2. Kahekordne tsükkel

2.1 Järjend ja tsükkel 2.2 Järjend ja funktsioon 2.3 Reaalsete andmete kasutamine 2.4 Silmaring: Juhuslikkus

  • 3. Andmestruktuurid
  • 4. Viitamine ja muteerimine
  • 5. Testimine ja silumine. Rekursioon
  • 6. Rekursioon II
  • 7. Projekt?
  • Korraldajad
II OSA sisukord

2.2 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


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


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.





II OSA sisukord
  • 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.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo