Kódrészletek "újrahasznosítása" - eljárások
Amikor programokat készítünk, gyakran előfordulnak a kódban olyan részek, amiket többször is fel szeretnénk majd használni. Például elkészítünk egy kódrészletet, ami kiírja egy téglalap alakú szoba alapterületét a két oldal hosszúsága alapján:
a = 5
b = 3
terulet = a * b
print("A szoba területe:", terulet)
Ha ezt a kódrészletet többször, vagy több helyen is szeretnénk használni a kódunkban, akkor megírhatjuk többször, vagy lemásolhatjuk -- ennek azonban van néhány komoly hátránya. Egyrészt, amennyiben módosítani szeretnénk valamit ezen a kódrészleten, például módosítani a kiírás szövegét, vagy javítani egy hibát a képletben, akkor azt több helyen is át kell majd írnunk. Máésrészt, a kódunk hossza is hamar megnő - az átláthatósága pedig romlik.
Ezt a problémát megelőzhetjük eljárások használatával. Egy-egy "többször használatos" kódrészletből létrehozhatunk egy eljárást a def kulcsszóval, ezzel lényegében "elnevezve" a kódunk egy részét. Ezt követően pedig ezt az elnevezett kódrészletet a programunkból bárhol elérhetjük, és végrehajthatjuk.
Ezt az eljárást aztán később a kódunkban az alábbi módon érhetjük el:
print("NAPPALI")
szoba_terulet(5,3)
print("HÁLÓSZOBA")
szoba_terulet(3,3)
Ennek a kódnak a kimenete:
NAPPALI A szoba területe: 15 HÁLÓSZOBA A szoba területe: 9
Ezzel lényegében egy új utasítást tanítottunk meg a Pythonnak, amit ezen az egy programon belül bárhányszor újrahasznosíthatunk. Hogy jobban megérthessük az eljárások működését, érdemes áttekinteni az alábbi kódrészletet:
def miau():
print("Miau!")
print("A fekete cica azt mondja:")
miau()
print("A kék cica azt mondja:")
miau()
[
{ "steps": [1], "variables": [ ], "hint": "A program futása itt kezdődik - mivel fentebb csak eljárásokat hoztunk létre, ezek pedig csak akkor fognak elfutni, amikor meghívjuk őket."},
{ "steps": [1], "variables": [ ], "hint": "Kiírjuk a konzolra a feliratot.", "console":"A fekete cica azt mondja:"},
{ "steps": [2], "variables": [ ], "hint": "Meghívjuk a miau eljárást. A program odaugrik a miau eljáráshoz, és lefuttatja azt.", "console":"A fekete cica azt mondja:"},
{ "steps": [0], "variables": [ ], "hint": "A miau() eljárás kiírja a Miau! feliratot a konzolra.", "console":"A fekete cica azt mondja:\nMiau!"},
{ "steps": [3], "variables": [ ], "hint": "Miután a Miau eljárás végetért, a program folytatódik, kiírjuk a következő feliratot is a konzolra.", "console":"A fekete cica azt mondja:\nMiau!\nA kék cica azt mondja:"},
{ "steps": [4], "variables": [ ], "hint": "Meghívjuk a miau eljárást. A program odaugrik a miau eljáráshoz, és lefuttatja azt.", "console":"A fekete cica azt mondja:\nMiau!\nA kék cica azt mondja:"},
{ "steps": [0], "variables": [ ], "hint": "A miau() eljárás kiírja a Miau! feliratot a konzolra.", "console":"A fekete cica azt mondja:\nMiau!\nA kék cica azt mondja:\nMiau!"},
{ "steps": [4], "variables": [ ], "hint": "A miau() eljárás véget ért. Mivel további utasítás nincs, a programnak vége.", "console":"A fekete cica azt mondja:\nMiau!\nA kék cica azt mondja:\nMiau!"}
]
Előfordulhat, hogy egy eljárásnak semmilyen információra nincs szüksége a működéséhez - mint az előző, macskás példában. Fontos azonban, hogy a zárójeleket az eljárás neve mögött ez esetben is ki kell tennünk, hiszen ebből látható, hogy itt nem egy változóról, hanem egy eljárásról (vagy függvényről - ezekről később írunk) van szó. Ha viszont egy olyan eljárást készítenénk, amiv alamilyen adatokat használ fel, akkor itt vehetjük fel azokat a változókat, amikre az eljárásnak szüksége van a feladata elvégzéséhez.
Hová helyezzük az eljárásokat?
Ahhoz, hogy valamilyen tudást használni tudjunk, először meg kell azt tanulnunk. Gyermekként nem tudtunk szorozni egészen addig, ameddig meg nem tanultuk azt -- vagy éppen programozni sem tudtunk addig, ameddig el nem sajátítottuk. Ez nincs másként a Python világában sem -- csak azokat az eljárásokat tudjuk használni a kódunk egy adott pontján, amiket addigra már "megtanítottunk". Ennek okán érdemes az eljárásokat a kód elején létrehozni, mint ahogy a fentebbi példában is láthattuk.
Ahhoz, hogy szép és átlátható kódot készíthess, ismerd meg az eljárások "testvéreinek", a függvényeknek a működését is a következő fejezetben!