Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem...

43
1 Programmeerimise alused 5. loeng Eno Tõnisson 13. märts

Transcript of Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem...

Page 1: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

1

Programmeerimise alused

5. loeng

Eno Tõnisson

13. märts

Page 2: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Eelmisel nädalal

• Naistepäev

• Kodune tunnikontroll

– õpivideod

– tsükliülesanne

2

Page 3: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Umbes mitu tundi tegelesite alates eelmise

loengu algusest selle ainega

(loeng+praktikum+iseseisvalt)?

1. paariline

3 1. 2. 3. 4. 5. 6. 7. 8.

0% 0% 0% 0%0%0%0%0%

1. 0-2 tundi

2. 2-4 tundi

3. 4-6 tundi

4. 6-8 tundi

5. 8-10 tundi

6. 10-12 tundi

7. 12-14 tundi

8. üle 14 tunni

Page 4: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Kuivõrd olete selle ainega

graafikus?

1. paariline

4 1. 2. 3. 4. 5.

0% 0% 0%0%0%

1. Isegi ees

2. Täiesti graafikus

3. Veidi maas, aga saan

ise hakkama

4. Kõvasti maas, vajan abi

5. Ei oska öelda

Page 5: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Umbes mitu tundi tegelesite alates eelmise

loengu algusest selle ainega

(loeng+praktikum+iseseisvalt)?

2. paariline

5 1. 2. 3. 4. 5. 6. 7. 8.

0% 0% 0% 0%0%0%0%0%

1. 0-2 tundi

2. 2-4 tundi

3. 4-6 tundi

4. 6-8 tundi

5. 8-10 tundi

6. 10-12 tundi

7. 12-14 tundi

8. üle 14 tunni

Page 6: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Kuivõrd olete selle ainega

graafikus?

2. paariline

6 1. 2. 3. 4. 5.

0% 0% 0%0%0%

1. Isegi ees

2. Täiesti graafikus

3. Veidi maas, aga saan

ise hakkama

4. Kõvasti maas, vajan abi

5. Ei oska öelda

Page 7: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

7

Täna

• Test

• Tsüklist veel

• Järjendid

Page 8: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

8

Eelkontrolliga tsükkel:

while B:

S

B - loogiline avaldis

(jätkamistingimus) S - sisu

B?

S

+

while True:

print(8)

Page 9: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

>>> import random

>>> random.randint(0,3)

3

>>> random.randint(0,3)

3

>>> random.randint(0,3)

3

>>> random.randint(0,3)

0

>>> random.randint(0,3)

0

>>> random.randint(0,3)

2

>>> random.randint(0,3)

1

9

Page 10: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

10

Tunnikontrolli ülesanne

• Koostada plokkskeem ja Pythoni

programmilõik järgmise ülesande

lahendamiseks.

• Visatakse kulli ja kirja (1 ja 0). Igal viskel

väljastatakse visketulemus (1 või 0). Kui

tuleb kiri, siis visatakse uuesti. Kui kull, siis

visked lõpetatakse.

Page 11: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Organisatsioonilised küsimused

• Vaadake aeg-ajalt seda e-postkasti, mille

aadress ÕIS-is kirjas!!! Või suunake kirjad

aktiivses kasutuses olevasse postkasti

• Kontrolltööd

• Suuremad kodutööd

– 1. esitamine 5. praktikumis

– 2. esitamine 7. praktikum

• Programmeerimise alused II

– 10.-16. nädal

– ajad veel täpsustamata

11

Page 12: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

12

Arvestuseks on vaja

• teha 1. kodutöö (ülesande püstituse tähtaeg 4. praktikum, lahenduse tähtaeg 5. praktikum)

• teha 2. kodutöö (eksamiülesannete kogust, tähtaeg 7. praktikum)

• sooritada arvutipraktikumi kontrolltöö (7. praktikum)

• sooritada loengu kontrolltöö (8. nädal)

Page 13: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

13

Tunnikontrollide roll • Igakordsete arvutipraktikumide tunnikontrollide sooritamine

kokku vähemalt 90-protsendilise edukusega vabastab arvutipraktikumi kontrolltööst.

• Igakordsete arvutipraktikumide tunnikontrollide sooritamine kokku vähemalt 70-90-protsendilise edukusega annab võimaluse arvutipraktikumi kontrolltööl valida lihtsam ülesanne.

• Igakordsete loengute tunnikontrollide sooritamine kokku vähemalt 90-protsendilise edukusega vabastab vastavast kontrolltööst.

• Igakordsete loengute tunnikontrollide tulemus vähendab loengu kontrolltöö arvestuseks vajalikku lävendit kuni 9 protsendipunkti võrra.

Page 14: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

14

1. suurem kodutöö

• Ülesanne peab olema originaalne – teie enda välja

mõeldud.

• Ülesande temaatika peab teile endale huvi pakkuma.

• Ülesande lahendus peab sisaldama vähemalt kahte

endakirjutatud funktsiooni ja nende rakendamist.

• Ülesandes peab olema vähemalt 2 tingimuslauset,

kusjuures vähemalt üks peab sisaldama else-osa.

• Nii ülesande püstitus kui ka lahendus vaadatakse koos

õppejõuga praktikumis läbi.

• Tähtajad

– Püstitus 4. praktikum

– Lahendus 5. praktikum

Page 15: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

2. suurem kodutöö

• Ülesande tekst valida eksamiülesannete kogust H. Hein,

J. Kiho, R. Palm, E. Tõnisson. Programmeerimise

eksamiülesannete kogu. Tartu, 2007.

(Hulk eksemplare on arvutiklassi 203 riiulis – seal võib

vaadata, aga arvutiklassidest välja ei tohi viia).

• Lahendada ülesanne Pythoniga. Vajadusel kohendage

ülesande teksti, kuna ülesanded olid mõeldud Javaga

lahendamiseks.

• Lahenduse failis peab alguses kommentaarina

sisalduma programmi autori nimi ja ülesande tekst.

• Lahendus peab olema mõistlikult kommenteeritud.

• Ülesande lahendus vaadatakse koos õppejõuga

praktikumis läbi.

• Tähtaeg 7. praktikum

15

Page 16: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Kontrolltööd

• Kontrolltööd

– loengu, 8. nädalal

– praktikumi, 7. praktikum

• Järeltööd (registr. ÕISis)

– loengu, 9. nädalal (aeg täpsustub)

– praktikumi, 9. nädalal (aeg täpsustub)

• Järeltööd (enne kodutööd esitada!!!,

(registr. ÕISis) )

– loengu, mais??? (aeg täpsustub)

– praktikumi, mais??? (aeg täpsustub)

16

Page 17: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

17

Määratud tsükkel:

for muutuja in jada

S

S - sisu

S

Kas veel

elemente?

S

ei

jah

for i in range(6):

print(i)

Page 18: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

range

• list(range(6))[0, 1, 2, 3, 4, 5]

• list(range(5,8))[5, 6, 7]

• aritmeetiline jada

[start, start + step, start + 2 * step, ...]

• list(range(5,17,3))[5, 8, 11, 14]

• list(range(5,0,-1)) [5, 4, 3, 2, 1]

• for i in range(6):

18

Page 19: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Milline arv ilmub viimasena ekraanile?

19 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

for i in range(3,-5,-2):

print(i)

1. 3

2. -3

3. -5

4. mingi muu arv

5. mitte midagi

6. veateade

Page 20: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Milline arv ilmub viimasena ekraanile?

20 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

for i in range(3,-5, 2):

print(i)

1. 3

2. -3

3. -5

4. mingi muu arv

5. mitte midagi

6. veateade

Page 21: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Milline arv ilmub viimasena ekraanile?

21 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

for i in range(3):

print(i)

1. 3

2. -3

3. -5

4. mingi muu arv

5. mitte midagi

6. veateade

Page 22: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

22 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

def fun(n):

fu = 0

for i in range(1,n+1):

fu *= i

return fu

fun(3)

1. 0

2. 3

3. 6

4. mingi muu arv

5. mitte midagi

6. veateade

Page 23: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

23 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

def fun(n):

fu = 1

for i in range(1,n+1):

fu *= i

return fu

fun(3)

1. 0

2. 3

3. 6

4. mingi muu arv

5. mitte midagi

6. veateade

Page 24: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

24 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

def fun(n):

fu = 1

for i in range(1,n+1):

fu *= i

return fu

fun(5)

1. 0

2. 3

3. 6

4. mingi muu arv

5. mitte midagi

6. veateade

Page 25: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Tsükkel funktsioonis

def faktoriaal (n):

fakt = 1

for i in range(1,n+1):

fakt *= i

return fakt

25

Page 26: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Funktsioon tsüklis

def ruutu (arv):

return arv*arv

for i in range(10):

print(ruutu(i))

26

Page 27: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

27

Järjend

• Jada – lineaarselt järjestatud hulk

• Järjend – lõplik jada

• Paljudes keeltes: massiiv – ühte ja sama

tüüpi muutujate hulk

• Pythonis: list

– listi elemendid võivad olla erinevat tüüpi

– saab lisada uusi elemente või olemasolevaid

eemaldada

Page 28: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

28

Listide konstrueerimine

a = [1, 7, 3, 5]

b = [2, 8, 0, 2]

c = [a, b, [0, 1, 8, 3]]

# 3*4 maatriks

d = ["Hello", 1, c]

# erinevat tüüpi elementidega

e = [ ] # tühi list

Page 29: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

29 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

a = [1632, 1802, 1918]

a[1]

1. 1632

2. 1802

3. 1918

4. mingi muu arv

5. mitte midagi

6. veateade

Page 30: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

30 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

a = [1632, 1802, 1918]

a[-1]

1. 1632

2. 1802

3. 1918

4. mingi muu arv

5. mitte midagi

6. veateade

Page 31: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

31 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

a = [1632, 1802, 1918]

a[3]

1. 1632

2. 1802

3. 1918

4. mingi muu arv

5. mitte midagi

6. veateade

Page 32: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

32

Indeksid

a = [1, 7, 3, 5]

b = a[0] # b = 1

c = a[1] # c = 7

d = a[-1] # d = 5

e = a[-4] # e = 1

a[7]??

len(a)

Page 33: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

33

Ümberpööramine

a = [3, 6, 8, 9]

for i in range(len(a)//2):

tmp = a[i]

a[ i ] = a[-i-1]

a[-i-1] = tmp

print (a)

Page 34: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

34

Tükeldamine

a[3:7]

a[:6]

a[8:]

a[:-4]

Page 35: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

35

Veel tehteid

järjend.append(x) – lisab x järjendi lõppu

järjend.pop(i) – väärtuseks on element

indeksiga i (st selle, millele vastab

järjend[i]), eemaldab selle elemendi

järjendist

Page 36: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Mis ilmub ekraanile?

36 1. 2. 3. 4. 5. 6.

17% 17% 17%17%17%17%

b = [1, 2, 3, 4]

b.pop(2)

1. 1

2. 2

3. 3

4. mingi muu arv

5. mitte midagi

6. veateade

Page 37: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

37

Mõned olulised klassikalised

tegevused

• Kõigi elementide eraldi väljastamine

a = [1, 4, 2, -5]

for elem in a:

print(elem)

• Maksimum

– olemas on max(a), aga teeme ise

Page 38: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

def maksimaalne(list1):

kandidaat = list1[0]

for k in list1: #0. element ka

if k > kandidaat:

kandidaat = k

return kandidaat

a = [1, 4, 2, -5]

print(maksimaalne(a))

38

Page 39: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Loengu tempo oli

(1. paariline)

39 1. 2. 3.

0% 0%0%

1. liiga kiire

2. paras

3. liiga aeglane

Page 40: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Materjal tundus

(1. paariline)

40 1. 2. 3.

0% 0%0%

1. liiga lihtne

2. parajalt jõukohane

3. liiga keeruline

Page 41: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Loengu tempo oli

(2. paariline)

41 1. 2. 3.

0% 0%0%

1. liiga kiire

2. paras

3. liiga aeglane

Page 42: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Materjal tundus

(2. paariline)

42 1. 2. 3.

0% 0%0%

1. liiga lihtne

2. parajalt jõukohane

3. liiga keeruline

Page 43: Programmeerimise alused - utkodu.ut.ee/~eno/progral13/Progralused2013loeng5.pdf · 2. suurem kodutöö • Ülesande tekst valida eksamiülesannete kogust H. Hein, J. Kiho, R. Palm,

Suur tänu osalemise eest!

Kohtumiseni!

43