Alprogramok

2019.11.11

Összetettebb ábrák rajzolásakor a kódunk átláthatatlan lesz, mivel sok utasítást tartalmaz. Hogy átláthatóbb legyen az ilyen kód használhatunk megjegyzéseket, vagy egy másik módszer, hogy alprogramokat hozunk létre. Egy egy kisebb kódrészlet, amit elnevezünk és amikor használni akarjuk, akkor elég csak a nevét leírni. Tulajdonképpen így saját utasításokat hozunk létre, amiket a programunkban használhatunk. A programozásban ezeket az alprogramokat eljárásoknak vagy függvényeknek is hívják.

Rajzoljunk egy házat, és definiáljunk hozzá egy haz eljárást (utasítást)!

import tkinter
canvas = tkinter.Canvas()
canvas.pack()

def haz():
      canvas.create_rectangle(100, 100, 150, 150)
      canvas.create_line(100, 100 , 125, 50, 150, 100)

Eljárást a def utasítással definiálunk, majd következik az utasítsunk neve zárójelekkel, és kettősponttal zárjuk a sort (ahogy a for ciklusnál is). Azzal, hogy beljebb kezdünk ezután néhány utasítást, jelezzük a Pythonnak, hogy melyik utasítások is tartoznak az eljárásunkba.
Ez a program futtatás után még semmit nem rajzol ki, mivel még csak definiáltunk egy új utasítást, de még sehol nem használtuk.

import tkinter
canvas = tkinter.Canvas()
canvas.pack()

def haz():
      canvas.create_rectangle(100, 100, 150, 150)
      canvas.create_line(100, 100 , 125, 50, 150, 100) 

haz()

A teljes program így fog kinézni, és most már kirajzol egy kis házikót. A haz() utasításunk mindig ugyanazt a házat fogja kirajzolni, ugyanazokra a koordinátákra. Módosíthatjuk az eljárásunkat úgy, hogy véletlen helyre rajzolja ki a házikót: 

def haz():
      x = randint(100, 300)
      y = randint(100, 300)
      canvas.create_rectangle(x, y, x+50, y+50 )
      canvas.create_line(x, y, x+25, y-50, x+50, y)

Az így létrehozott utasításokat is alkalmazhatjuk ciklusban is, pl 10 ház kirajzoltatása:

for i in range(1, 11):
      haz()  

Az utasításunkat úgy is módosíthatjuk, hogy minden használatakor (hívásakor) megadhassuk, hova szeretnénk rajzolni a házikót.

import tkinter
from random import*
canvas = tkinter.Canvas()
canvas.pack() 

def haz(x, y):
      canvas.create_rectangle(x, y, x+50, y+50 )
      canvas.create_line(x, y, x+25, y-50, x+50, y)  

haz(100, 100)
haz(180, 100)
haz(260, 100)

Ugyanúgy ahogy pl a create_rectangle utasításnál a zárójelbe megadjuk, hogy hova szeretnénk kirajzolni a téglalapot, most már a házikónknál is megtehetjük. A zárójelben lévő értékeket paramétereknek nevezzük. Az új utasítás definiálásánál megadjuk a paraméterek neveit vesszővel elválasztva. Ezeket az elnevezéseket használhatjuk az eljárásunkban - tulajdonképpen ezek egyfajta változók, melyeket az adott eljárásban használhatunk és értéket az eljárás hívásakor kapnak.

© 2023 Minden jog fenntartva.
Az oldalt a Webnode működteti
Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el