30

Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Programmeerimine

5.loeng

Page 2: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

T�ana loengus

Funktsioonid ja protseduurid

Page 3: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Protseduurid

Page 4: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Protseduurid

Protseduur on suhteliselt iseseisev korduvkasutatav program-

miosa, mis koosneb k�askudest ja mida on v~oimalik v�alja kut-

suda tema nime kaudu.

Protseduur v~oib olla parametriseeritud argumentidega, mille

konreetsed v�a�artused m�a�aratakse protseduuri v�aljakutsel.

Protseduuride de�neerimine Pythonis:

def procName(arg1,. . . ,argn):

procBody

Page 5: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Pykkar v�arvib triibu

Page 6: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Protseduurid

Algseis: Pykkar on p~ohjaserval n�aoga l~ounasse. Pykkar

v�arvib triibu

from pykkar import �def triip ():while True:paint()if is wall ():break

else:step()

Page 7: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Pykkar liigub tagasi

Page 8: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Protseduurid

Algseis: Pykkar on l~ounaserval n�aoga l~ounasse. Pykkar

p�o�orab �umber ja liigub p~ohjaservani.

from pykkar import �def tagasi ():right () # �umberp�o�ord

right ()while True:

if is wall ():break

else:step()

Page 9: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

P~ohiprogramm

Page 10: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

P~ohiprogramm

Algseis: Pykkar on loodenurgas n�aoga l~ounasse. Pykkar

v�arvib ruudustiku triibuliseks.

from pykkar import �while True:

triip ()tagasi ()right ()if is wall (): # ei lase robotil vastu seina p~orgata

breakelse:step() # robot liigub �uhe ruudu v~orra edasi

if is wall ():break

else:step()right ()

Page 11: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Kontrollt�o�o �ulesanne

Joonistada kilpkonna vahendusel 5� 5 ruudu kahe k�ulje ruudud

�ule �uhe alustades nurgast. Boonus joonistatud k�uljeruutude

v�arvimise eest.

Page 12: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

Page 13: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

Funktsioon on protseduur, mis v�aljastab v�a�artuse.

Funktsiooni rakendus on avaldis, mille v�a�artust v~oib kasu-

tada sarnaselt teiste (aritmeetilised-, loogilised-, jne) avald-

istega.

Ilma v�a�artuseta protseduuri saab kasutada lausena ning tema

"toimeks" on k~orvalefekt programmi olekule.

Objektorienteeritud keeltes (n�ait. Java) on protseduurid seo-

tud mingi klassiga, misjuhul neid nimetatakse meetodideks.

Page 14: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

Funktsioonide de�neerimine Pythonis:

def funcName(arg1,. . . ,argn):

funcBody

funcName on funktsiooni nimi.

argi on funktsiooni formaalsed parameetrid.

funcBody on funktsiooni keha, mis koosneb lausetest.

Funktsiooni v�aljakutsel antakse formaalsetele parameetritele

tegelike argumentide v�a�artused.

Formaalsed parameetrid ja funktsiooni kehas de�neeritud

muutujad on funktsioonis lokaalsed; so. on n�ahtavad ainult

selle funktsiooni kehas.

return lause l~opetab funktsiooni t�o�o ja kui tal on argument,

siis selle v�a�artus on funktsiooni v�aljakutse v�a�artuseks.

Page 15: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

N�aide { keskmise arvutamine

def keskmine(arv1,arv2):k = (arv1 + arv2) / 2return k

N�aide { temperatuuri teisendamine Fahrenheiti skaalasse

def celsius2Fahrenheit(tempC):tempF = round(tempC�1.8+32.0)return tempF

Page 16: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

N�aide { keskmise arvutamine

def keskmine(arv1,arv2):k = (arv1 + arv2) / 2return k

N�aide { temperatuuri teisendamine Fahrenheiti skaalasse

def celsius2Fahrenheit(tempC):tempF = round(tempC�1.8+32.0)return tempF

Page 17: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Kontrollvoog funktsioonide v�aljakutsetel

Main Foo Bar

Foo(); Bar();

Page 18: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

Page 19: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 7

Page 20: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 7

arv1

arv2

8

2

Page 21: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 7

arv1

arv2

k

8

2

5

Page 22: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 5

Page 23: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 5

arv1

arv2

5

3

Page 24: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 5

arv1

arv2

k

5

3

4

Page 25: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

arv = 7

arv = keskmine(arv + 1; 2)arv = keskmine(arv; arv � 2)

def keskmine(arv1; arv2) :k = (arv1+ arv2)=2return k

arv 4

Page 26: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

Funktsiooni keha v~oib alata s~onega, mis annab funktsiooni

l�uhikirjelduse (ingl. docstring).

{ Vastav s~one seotakse funktsiooniobjekti atribuudiga doc .

N�aide { Fahrenheiti skaalast temperatuuri teisendamine

def fahrenheit2Celsius(t ):"""Teisendab temperatuuri Fahrenheiti skaalast

Celsiuse skaalasse."""

return round(5�(t�32)/9)

Page 27: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Kolmest arvust suurim

Page 28: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Funktsioonid

N�aide { kolmest arvust suurim

def kolmestSuurim(a, b, c):suurim = aif suurim < b:

suurim = bif suurim < c:

suurim = creturn suurim

Page 29: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

J�argmiseks korraks

Lugeda l�abi ~opiku peat�ukid:

{ Ptk. 5 "Alamprogrammid ehk funktsioonid"

{ Ptk. 6 "Tingimuslaused"

Page 30: Programmeerimine - cs.ut.eehhein/progr12/loeng5.pdf · unktsioF onid unktsioF onide de neerimine Pythonis: def funcName ( arg 1,..., arg n): funcBody funcName on funktsiooni nimi

Suur t�anu osalemast

ja

kohtumiseni!