8. hodina - Podprogramy¶
Vytvor program, ktorý nakreslí kockatú dúhu. Do premenných
x
,y
priraď súradnice pravého dolného vrcholu kockatej dúhy a použi ich pri kreslení farebných štvorcov. Najmenší štvorec má rozmery20x20
a každý ďalší je o20
väčší:
Doteraz si mohol písať iba také príkazy, ktoré poznal počítač. Teraz ho naučíš nové, tvoje vlastné príkazy, takzvané podprogramy. Postupuj nasledovne:
Vytvor nový program, v ktorom bude napísané iba toto:
prázdne zátvorky aj dvojbodka sú veľmi dôležité
def vypis_text(): print('************') print('** Python **') print('************')
príkazy nechaj takto odsunuté (Python tam automaticky vloží 4 medzery)
Program spusti – ak, je všetko v poriadku, uvidíš:
Do príkazového riadku napíš:
>>> vypis_text()
Ak si postupoval správne, počítač zobrazí text:
************ ** Python ** ************
Definovanie a volanie podprogramu
Čo sa stalo?
slovom
def
začína definícia tvojho nového príkazu – podprogramuvypis_text
je názov podprogramu
def vypis_text():
print('************')
print('** Python **')
print('************')
ďalšie tri riadky tvoria telo podprogramu
Po spustení programu sa počítač naučil nový príkaz vypis_text. Počítač ho zatiaľ nevykonal, iba sa ho naučil. Skupinu príkazov print – teda telo podprogramu vypis_text, počítač vykoná až vtedy, keď do príkazového riadku napíšeš:
>>> vypis_text()
prázdne zátvorky sú veľmi dôležité
Takýto zápis sa nazýva volanie podprogramu.
Pridaj do svojho programu ďalšie príkazy – nesmú mať odsadenie:
def vypis_text(): print('************') print('** Python **') print('************') print('Vitaj!') vypis_text() print() vypis_text() print('to je koniec')
Keď program spustíš, uvidíš takýto výsledok:
Vitaj! ************ ** Python ** ************ ************ ** Python ** ************ to je koniec
V tomto programe sa najskôr zadefinoval podprogram
vypis_text
. Za ním nasledujú príkazyprint
a príkazy pre volanie podprogramu. Python zobrazil svoju vizitku 2-krát, lebo v programe sú 2 volania podprogramuvypis_text
.
Zmeň predchádzajúci program tak, aby počítač vypísal:
Hello! ***************** ** I am Python ** ***************** How are you? ***************** ** I am Python ** ***************** I am fine. ***************** ** I am Python ** ***************** The end
Vytváral si program, ktorý zobrazil, napríklad takúto tvoju vizitku:
+--------------------+ | ~~~ | | Juraj / o o \ | | RUMCAJS \ ~ / | | """ | | IT lúpežník | +--------------------+
Vyrob nový program. V ňom zadefinuj podprogram
vizitka
, ktorý takúto vizitku zobrazí. Nakoniec tento podprogram zavolaj, aby si overil, že funguje správne.
Doplň do predchádzajúceho programu volania podprogramu
vizitka
tak, aby sa pod seba zobrazilo 10 tvojich vizitiek.
Vo svojom programe môžeš definovať aj viac podprogramov. Vytvor nový program a zadefinuj v ňom tri podprogramy. Každý z nich zobrazí jeden z nasledujúcich obrázkov:
podprogram
noha
nakreslí takúto nohu (dole sú dva podčiarkovníky vľavo aj vpravo):| __|__
podprogram
obdlznik
nakreslí:##### # # #####
podprogram
trojuholník
:* *** *****
Na konci programu vlož volanie podprogramov, aby si otestoval každý z nich a skús pomocou nich zobraziť nasledujúce obrázky
* *** ***** * *** ***** | __|__
* *** ***** ##### # # ##### | __|__
##### # # ##### | __|__ ##### # # #####
toto je noha: | __|__ toto je obdlznik: ##### # # ##### toto je trojuholnik: * *** *****
Teraz budeš vytvárať podprogramy, ktoré kreslia do grafického okna. Vyskúšaj:
import tkinter canvas = tkinter.Canvas() canvas.pack() def kresli(): canvas.create_rectangle(10, 20, 30, 40, fill='red') kresli()
Zadefinuj podprogram
kriz
, ktorý po zavolaní nakreslí červený kríž:
(*)
Vytvor štyri podprogramy – keď ich zavoláš v takomto poradí:hlava() ruky() nohy() telo()
každý z nich nakreslí jednu časť takéhoto robota: