Institute of Computer Science
  1. Courses
  2. 2023/24 spring
  3. Introduction to Programming II (MTAT.03.256)
ET
Log in

Introduction to Programming II 2023/24 spring

  • 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. Objektorienteeritud programmeerimine
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

Ü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



II OSA sisukord
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment