Funkcie (podprogramy) v Pythone
Funkcia je pomenovaný blok príkazov (niekedy sa tomu hovorí aj podprogram). Popisujeme (definujeme) ju špeciálnou konštrukciou:
def meno_funkcie(): # zapamätaj si blok príkazov ako nový príkaz prikaz prikaz ...
Keď zapíšeme definíciu funkcie, zatiaľ sa z bloku príkazov (hovoríme tomu telo funkcie) nič nevykoná. Táto definícia sa “len” zapamätá a jej referencia sa priradí k zadanému menu - vlastne sa do premennej meno_funkcie
priradí referencia na telo funkcie.
ÚLOHA: Nakreslíme si v kresliacom plátne stromček, ktorého základná časť bude na súradnici [100,100]
canvas.create_rectangle(100,100,120,150,fill='brown')
canvas.create_oval(70,70,150,100,fill='green')
- program nasledovne upravíme tak, že vytvoríme podprogram stromcek(), ktorý pri zavolaní bude kresliť daný stromček:
def stromcek():
canvas.create_rectangle(100,100,120,150,fill='brown')
canvas.create_oval(70,70,150,100,fill='green')
stromcek()
- program nasledovne upravíme tak, aby pri zavolaní def stromcek() program vygeneroval stále na inom mieste kresliaceho plátna:
def stromcek():
x=random.randrange(50,550)
y=random.randrange(50,550)
canvas.create_rectangle(x,y,x+20,y+50,fill='brown')
canvas.create_oval(x-30,y-30,x+50,y,fill='green')
stromcek()
- program nasledovne upravíme tak, aby naraz nakreslil 10 stromčekov na ľubovoľnom mieste v kresliacom plátne:
for i in range(1,11):
stromcek()
- následne program úpravíme tak, aby sme už pri zavolení def stromcek() si sami zvolili, na ktoré konkrétne miesto sa daný stromček nakresli:
def stromcek(x,y):
canvas.create_rectangle(x,y,x+20,y+50,fill='brown')
canvas.create_oval(x-30,y-30,x+50,y,fill='green')
stromcek(100,100)
- následne program upravíme tak, aby program zobrazil 5 stromčekov vedľa seba takto:
def stromcek(x,y):
canvas.create_rectangle(x,y,x+20,y+50,fill='brown')
canvas.create_oval(x-30,y-30,x+50,y,fill='green')
stromcek(100,100)
stromcek(200,100)
stromcek(300,100)
stromcek(400,100)
stromcek(500,100)
- túto úlohu môžeme upraviť aj použitím cyklu FOR:
def stromcek(x,y):
canvas.create_rectangle(x,y,x+20,y+50,fill='brown')
canvas.create_oval(x-30,y-30,x+50,y,fill='green')
for i in range(100,501,100):
stromcek(i,100)
- následne upravíme program tak, aby nakreslil 5 stromčekov do 5 stĺpcov:
def stromcek(x,y):
canvas.create_rectangle(x,y,x+20,y+50,fill='brown')
canvas.create_oval(x-30,y-30,x+50,y,fill='green')
for j in range(100,501,100):
for i in range(100,501,100):
stromcek(i,j)
ÚLOHA_1: Program nech nakreslí vedľa seba 10 bytoviek rôznej (náhodnej) výšky, pričom v každá bytovka bude mať jedno okno, kde bude svietiť svetlo. V programe použite podprogram ulica, ktorý nakreslí jednu bytovku. Potom tento podprogram zavolajte v cykle FOR 10-krát.
ÚLOHA_2: Vytvorte program pošta, ktorý zobrazí 10 listových obálok vedľa seba. V programe vytvorte podprogram obalka, ktorý budete volať v cykle FOR 10-krát. :
ÚLOHA_3: Nakreslite program hodiny. V programe vytvorte podprogram hodiny(h). Pri zavolaní podprogramu s parametrom napr. hodiny(12), hodiny zobrazia 12 hodín. Alebo pri zavolaní podprogramu s parametrom hodiny(13), hodiny zobrazia 13 hodín. Program ukáže správny čas pri hodnotách:
hodiny(12), hodiny(13), hodiny(14), hodiny(15), hodiny(16), hodiny(17), hodiny(18), hodiny(19), hodiny(20), hodiny(21), hodiny(22), hodiny(23), hodiny(24), hodiny(1), hodiny(2), hodiny(3), hodiny(4), hodiny(5), hodiny(6), hodiny(7),
hodiny(8), hodiny(9), hodiny(10), hodiny(11).
Čo sme sa dnes naučili?
- pužívať podprogramy v programe
- poznať rozdiel medzi podprogramom s parametrom a bez parametra
Použitá literatúra:
http://python.input.sk/05.html
http://macek.sandbox.cz/texty/python-tutorial-cz/tut/node5.html
https://zona.fmph.uniba.sk/fileadmin/fmfi/sluzby/elektronicke_studijne_materialy/Python1.pdf