AGK Tier 1 alapok 9. rész – Funkciók

Az előző leckében a ciklusokról beszéltünk, ebben a leckében pedig a “funkciókról” más néven metódusokról fogunk beszélni.

A funkciók vagy metódusok (ahogy tetszik) szerepe hogy a programunkban többször ismétlődő kódot tárolja és azt bármikor, bárhonnan meghívhatjuk a programunkban, így nem kell hosszú és bonyolult kódokat újra és újra leírnunk. Ami azt illeti, használtunk is már ilyen funkciókat mégpedig a Print() utasítást. Ez is egy funkció ami gyárilag rendelkezésünkre áll az AGK-ben, de saját magunk is készíthetünk hasonló funkciókat. Lássuk hogyan.

do
    
    Sync()
loop

Function uzenet()
	
	Print("ez egy üzenet")
	
EndFunction

Ahogy láthatjuk a funkciónk a do-loop ciklus alatt helyezkedik el. Fontos hogy minden általunk készített funkció a fő ciklusunk alatt helyezkedjen el.

A Function utasítással jelezzük a programunknak hogy ez egy funkció lesz amit a funkció neve követ ez esetben uzenet a név után pedig zárójelek () kerülnek aminek feladata is van, a későbbiekben paramétereket, változó értékeket vihetünk majd be a funkciónknak hogy azt felhasználja. Később erre is látni fogunk egy példát. Végül az EndFunction utasítással zárjuk a funkciót. Bármi ami a Function és EndFunction közé kerül, az fog lefutni amikor meghívjuk a funkciót. Lássuk hogyan

do
    uzenet()
    Sync()
loop

Hogy meghívjunk egy funkciót a programunkban, nemes egyszerűséggel a funkciónk nevét kell használnunk a zárójelekkel. A funkciókat bárhol meghívhatjuk a programunkban, értelemszerűen a tartalmától függ hogy ezt a do-loop cikluson belül vagy kívül tesszük.

Említettem hogy a zárójeleknek feladata is van, most lássunk erre egy példát

do
    uzenet("ez egy üzenet")
    Sync()
loop

Function uzenet(m as string)
	
	Print(m)
	
EndFunction

Ahogy láthatjuk, amikor létrehoztam a funkciót a zárójelek között egy string változót hoztam létre majd ezt a változót használom a funkción belül a Print utasításban. Amikor pedig meghívom a funkciót, a név után a zárójelek közé írom az üzenetem amit a funkción belül a Print() utasítás használni fog. Fontos hogy mindég a zárójelek között hozzuk létre más szóval deklaráljuk a változókat amit a funkción belül szeretnénk használni.

Na persze ez nem valamit hasznos példa elvégre a funkciónk gyakorlatilag ugyan azt a szerepet tölti így be mint önmagában a Print() utasítás. Lássunk egy gyakorlatiasabb példát.

do
viagra soft  Medicine like Super P Force tablets are available in the market. levitra tabs secretworldchronicle.com You take these pills dfreely and enjoy its numerous benefits like increase in blood flow, change in erection size etc. The best example can be noticed and felt to be highly target oriented that can help our heart to avail the streamline and smooth blood flow by removing all the barriers from its path.  viagra shops in india In the USA, online pharmacy has become very popular when it comes to curing erectile dysfunction in men and is by far the most effective, you can  cialis without prescription uk now choose for the kind of herbal treatment that you are going to get.     muvelet(2,3)
    Sync()
loop

Function muvelet(a as integer, b as integer)
	
	c = a + b
	Print(c)
	
EndFunction

Ahogy láthatjuk itt már nem egy hanem két változóval dolgozunk amiknek az értékeit a funkción belül összeadjuk majd az összeget kiírjuk a Print() utasítással. Ám ennél egy funkció még hasznosabb is lehet

do
    Print(muvelet(2,3))
    Sync()
loop

Function muvelet(a as integer, b as integer)
	
	c = a + b
	
EndFunction c

Alapértelmezettként egy funkción belül kapott érték mint például a c értéke privát, csak a funkción belül lehet hozzáférni. Ám lehetőségünk van értékeket a funkcióból visszaküldeni miután az lefutott és így az érték hozzáférhetővé válik a funkción kívül és ezt láthatjuk a fenti példában. Az EndFunction után írva a c változót, annak értékét visszaküldjük a funkció végén és így az hozzáférhetővé, olvashatóvá válik. Ez esetben a Print() utasítás zárójelei közé írva a funkciót az hozzáfér és fel is használja a c értékét hogy ki írja azt. De akár egy feltételes vizsgálatban is használhatjuk.

do
    If muvelet(2,3) = 5 then Print("A művelet eredménye 5")
    Sync()
loop

Ahogy láthatjuk itt azt a feltétel vizsgáljuk hogy a funkcióból visszaküldött érték egyenlő-e 5-el. Persze azt is megtehetjük hogy a funkcióból visszaküldött értéket eltároljuk egy változóban

eredmeny as integer
eredmeny = muvelet(2,3)

do
    Print(eredmeny)
    Sync()
loop

Ahogy láthatjuk, itt a do-loop ciklus előtt elvégezzük a műveletet egyszer és az eredményt eltároljuk az eredmeny változóban, majd a változót használjuk a Print() utasításban hogy azt kiírjuk a képernyőre. Illy módon, elég csak egyszer meghívnunk a funkciót hogy a műveletet elvégezze és a későbbiekben a műveletet eredményét bárhol felhasználhatom a művelet újabb elvégzése nélkül.

Ennyi lenne amit tudni lehet a funkciókról, ha a programozás teljesen új számunkra, ezt itt és most talán egy picit sok feldolgozni de ahogy egyre többet és többet fogjuk használni, egyre összetettebb programokat fogunk írni, garantálom hogy ez mind magától értetődő lesz.

A következő leckében a címkékről fogunk beszélni.