Procedúra je tiež nazývaná podprogram.
Ak sa v kóde opakuje nejaká skupina príkazov na rôznych miestach, môžeme ju napísať len raz - ako procedúru (podprogram) a na týchto miestach potom len spustiť takúto procedúru. Procedúra je teda skupina príkazov, ktorá má svoj názov a pomocou tohoto názvu ju vieme kdekoľvek v kóde zavolať (spustiť). Výhodou procedúry je aj to, že umožňuje náš program sprehľadniť. Extrémne pravidlo hovorí, že pre každú časť programu, ktorej funkciu vieme pomenovať, by mala existovať procedúra. Definovaním (vytvorením) procedúry si vlastne vytvárame svoj vlastný príkaz.
# proceduru definujem pomocou klucoveho slova 'def'
# po 'def' piseme nazov procedury, platia pravidla ako pri nazvoch premennych
# za nazvom su zatvorky a po nich dvojbodka!
# prikazy odsadene pod tymto riadkom tvoria telo procedury
def overPouzivatela():
meno = input()
heslo = input()
if meno == "admin" and heslo = "123456":
print("overenie uspesne")
else:
print("nespravne meno/heslo")
# teraz mozem proceduru kdekolvek zavolat a spustit pomocou takehoto prikazu
# vsimni si, ze spustenie procedury sa pise ako jej meno nasledovane zatvorkami
# takto sa volaju aj vstavane prikazy ako int() print() input()...
overPouzivatela()
overPouzivatela()
overPouzivatela()
Procedúra z ukážky vyššie je použiteľná len na overenie používateľa "admin" s heslom "123456". Bežný systém, ktorý podporuje prihlásenie používateľov má ale viac ako len jedného používateľa. Ak by bolo treba overovať aj iných používateľov, museli by sme pre každého napísať jeho vlastnú overovaciu procedúru. Vyzeralo by to asi takto:
def overPouzivatelaAdmin():
meno = input()
heslo = input()
if meno == "admin" and heslo = "123456":
print("overenie uspesne")
else:
print("nespravne meno/heslo")
def overPouzivatelaFerko():
meno = input()
heslo = input()
if meno == "ferko" and heslo = "feri123":
print("overenie uspesne")
else:
print("nespravne meno/heslo")
def overPouzivatelaAdam():
meno = input()
heslo = input()
if meno == "Adam" and heslo = "a1d2a3m4":
print("overenie uspesne")
else:
print("nespravne meno/heslo")
👆️ Takéto riešenie je značne nepraktické. Systém môže mať aj stovky používateľov, predstavte si napríklad, že by bolo takto riešené prihlasovanie do Edupage... Hodila by sa nám všeobecnejšia procedúra, taká, ktorej by sme pri jej volaní (spúštaní) povedali, koho má overiť a ona by sa potom správala tak, ako potrebujeme. Na tento účel nám slúžia parametre. Parametre procedúry sú hodnoty, na základe ktorých pracuje. Parametre sú uvedené v zátvorkách pri volaní procedúry. Predstavte si napríklad príkaz print(), ten sa tiež správa podľa toho, čo mu napíšeme do zátvoriek...
# pri definovani procedury mozeme za jej menom uviest nazvy premennych - parametrov
# tieto premenne budu reprezentovat hodnoty, s ktorymi proceduru zavolame
def overPouzivatela(spravneMeno, spravneHeslo):
meno = input()
heslo = input()
if meno == spravneMeno and heslo == spravneHeslo:
print("overenie uspesne")
else:
print("nespravne meno/heslo")
# teraz mozem proceduru kdekolvek zavolat pomocou prikazu
overPouzivatela("admin", "123456") # takze spravneMeno = "admin" a spravneHeslo = "123456"
overPouzivatela("ferko", "feri123") # takze spravneMeno = "ferko" a spravneHeslo = "feri123"
Kresliť do canvas kruh pomocou canvas.cereate_oval je nepraktické, lepšie by bolo mať príkaz, ktorému by sme povedali, kde má mať kruh stred a aký má mať polomer... Aj na takéto niečo si vieme vytvoriť vlastný podprogram:
def kruh(x,y,polomer):
canvas.create_oval(x-polomer, y-polomer, x+polomer, y+polomer)
# ak potrebujem nakreslit kruh so stredom na [20,40] a polomerom 10, môžem teraz použiť
kruh(20, 40, 10)