AGK Tier 1 alapok 7. rész – Feltétel vizsgálat, feltételes utasítás

Az előző leckében a felhasználói adattípusokról volt szó, ebben a leckében a feltétel vizsgálatról fogunk beszélni.

Eddig szó esett arról hogy a programunk fentről lefele haladva egyenként hajtja végre az utasításokat és a Do-Loop ciklusban minden utasítás ismétlődően fut. Ám mi van akkor ha egy bizonyos utasítást, csak és kizárólag egy bizonyos esetben szeretnénk lefuttatni és nem minden egyes alkalommal amikor az adott utasítás következik a sorban.

Ebben segít nekünk az If-ElseIf-Else utasítás készlet amit szerintem egyszerűbb megérteni ha látjuk, ezért kezdjünk is egy példával.

a as integer = 1

do
	
	If a = 1
		Print("Az a értéke egyenlő egyel")
	EndIf
	
    Sync() 
loop

Ahogy láthatjuk, létrehoztam egy integer változót aminek az alap értéke 1 és az If utasítást használva, gyakorlatilag azt vizsgálom hogy az ‘a’ értéke egyenlő-e egyel. Ha a feltétel teljesül, akkor a képernyőre kiírjuk a szöveget “Az a értéke egyenlő egyel”, más esetben viszont az utasítás egyszerűen nem fog lefutni és nem írunk ki semmit a képernyőre. Egy If feltétel vizsgálatát mindég az If utasítással kezdjük, amit a feltétel követ ez esetben az hogy “a = 1”, majd a feltétel vizsgálatot az EndIf utasítással zárjuk le. Mind az amit az If és Endif közé kerül, csak akkor fut le ha a feltétel teljesül.

Természetesen nem csak azt vizsgálhatjuk hogy valaminek az értéke egyenlő-e hanem sok minden mást is:

  • = egyenlő
  • =! nem egyenlő
  • < kisebb
  • <= kisebb vagy egyenlő
  • > nagyobb
  • >= nagyobb vagy egyenlő

The order generic viagra product helps by inhibition of the PDE5 enzyme from breaking down cGMP. The most purchase viagra no prescription hyperventilating disorders are Bulimia, Post traumatic stress disorder Insomnia Anxiety Eating disorders Obsessive compulsive disorders The concept of Cognitive Behavioral Therapy evolved in early 1960’s. Imagine this: You get selling here viagra on line australia paid to share your pictures, your videos, your opinions, your skills, your knowledge, with like-minded, open-minded individuals within a global network. Right now, Lyriana is considered to be the sildenafil españa .
Van egy másik speciális utasítás is ami egy kis magyarázatra szorul a NOT. Ezzel bármilyen feltétel ellentétét vizsgálhatjuk. Például:

  • If NOT a = 1 Ha ‘a’ nem egyenlő egyel
  • If NOT a < 1 Ha ‘a’ nem kisebb mint egy
  • If NOT a > 1 Ha ‘a’ nem nagyobb mint 1

És így tovább. Bármilyen feltételt is vizsgáljunk, ha a NOT utasítást használjuk az előbb láthatott módon, akkor mindég a feltétel ellentétét vizsgáljuk.

A feltétel vizsgálat során akár felállíthatunk egy sorrendet is hogy milyen feltételeket milyen fontossági sorrendben szeretnénk vizsgálni.

If a = 1
	Print("Az a értéke egyenlő egyel")
ElseIf a = 2
	Print("Az a értéke egyenlő kettővel")
ElseIf a = 3
	Print("Az a értéke egyenlő hárommal")
EndIf

Ebben az esetben a programunk először le ellenőrzi hogy az ‘a’ értéke egyenlő-e egyel, ha igen, lefut a Print() utasítás és a többi feltétel nem kerül vizsgálatra és így a többi utasítás sem fut le. Ha viszont az első utasítás feltétel nem teljesül, akkor a programunk le ellenőrzi hogy a második feltétel teljesül-e miszerint az ‘a’  értéke egyenlő-e kettővel. Ha ez a feltétel igaz, az utasítás lefut és a harmadik feltétel már nem kerül ellenőrzésre és a hozzá tartozó utasítás sem fut le. Ha viszont a második feltétel sem teljesül akkor a harmadik feltétel kerül vizsgálatra miszerint az ‘a’ értéke egyenlő-e hárommal. Ha a feltétel igaz, az utasítás lefut, ha viszont nem, akkor ez az utasítás sem fut le és a képernyőnk megint üres marad.

Ám mi van akkor, ha nem szeretnénk hogy üres maradjon, mindenképp ki szeretnénk írni egy üzenetet a képernyőre de nem szeretnénk ennél a 3 feltételnél többet vizsgálni?.

If a = 1
	Print("Az a értéke egyenlő egyel")
ElseIf a = 2
	Print("Az a értéke egyenlő kettővel")
ElseIf a = 3
	Print("Az a értéke egyenlő hárommal")
Else
	Print("Az a értéke nem egynlő sem 1-el sem 2-vel sem 3-al")
EndIf

Ahogy láthatjuk, utolsó feltételként beraktunk egy Else feltételt ami csak és kizárólag akkor fut le, ha az előtte található feltételek egyike sem teljesül.

Egy feltétel vizsgálat egy If feltételből, korlátlan ElseIf feltételből és egy Else feltételből állhat.

Ám nem csak egy feltételt vizsgálhatunk, akár több feltételt is egyszerre.

If a = 1 and b = 2
	Print("Mind 1 feltétel igaz")
ElseIf a = 1 or b = 2
	Print("az egyik feltétel igaz")
Else
        Print("Egyik feltétel sem teljesült!")
EndIf

Most 2 változó értékét ellenőrzöm. Az első feltételben azt ellenőrzöm, hogy a feltétel mind kettő paramétere igaz-e, tehát a = 1 és b = 2. Ám az ‘és’ angol megfelelőjét kell használnunk ami nem más mint ‘and’. A második feltételben pedig azt vizsgálom hogy legalább az egyik paraméter igaz-e, tehát a = 1 vagy b = 2. Ám a ‘vagy’ angol megfelelőjét kell használnunk ami nem más mint ‘or’. Szóval a program először le ellenőrzi az első feltételt hogy mind a kettő változóra igaz-e amit vizsgálunk, ha igen akkor az utasítás lefut és a második feltételt már nem vizsgálja. Ha nem teljesül az első feltétel, akkor vizsgáljuk a második feltétel hogy legalább az egyik változóra igaz-e amit vizsgálunk. Ha igen, az utasítás lefut. Ha a második feltétel sem teljesül, akkor lefut az Else feltétel.

Akár komplex zárójeles feltételeket is vizsgálhatunk.

If ((a = 1 and b = 2) or (a = 1 or b = 2)) and c = 3
	Print("Az a értéke lehet 1 a b értéke lehet 2, de legalább az egyik igaz és a c értéke biztos 3")
Else
	Print("A feltétel 1 vagy több okból nem teljesült")
EndIf

De akár egymásba ágyazott feltételeket is.

If a = 1
	Print("Az első feltétel teljesült")
	If b = 2
		Print("Az első és a második feltétel teljesült")
		If c = 3
			Print("Mind három feltétel teljesült")
		Else
			Print("A c értéke nem 3")
		EndIf
	Else
		Print("A b értéke nem 2")
	EndIf
Else
	Print("Az a értéke nem 1")
EndIf

itt mind a 3 feltételt külön-külön vizsgáljuk egymás után lépcsőzetesen és mind 3 feltétel vizsgálatnak megvan a maga Else utasítása arra az esetre ha a feltétel nem teljesülne. Ha az első feltétel nem teljesül, akkor a többi sem kerül vizsgálatra. Ha az első feltétel teljesül, akkor a második is vizsgálatra kerül, ha az teljesül, akkor a harmadik is.

Feltétel vizsgálatára van egy másik módszer is, a Select-Case más szóval eset vizsgálat.

Select a
	Case 1
		Print("Az a értéke 1")
	EndCase
			
	Case 2
		Print("Az a értéke 2")
	EndCase
		
	Case 3
		Print("az a értéke 3")
	EndCase
		
	Case Default
		Print("Az a értéke sem 1 sem 2 sem 3")
	EndCase
EndSelect

Ebben az esetben gyakorlatilag veszünk egy alanyt és több esetet illetve értéket vizsgálunk rá. Az alany ez esetben az ‘a’ változó, amit a Select utasítással jelölünk ki vizsgálatra, az esetek pedig a Case-EndCase utasítások ami gyakorlatilag ugyanúgy működik mint az If-ElseIf a Case Default pedig az Else utasításnak felel meg. Minden vizsgálatot a Select-el nyitunk és EndSelect-el zárunk, és minden esetet a vizsgálaton belül a Case-el nyitunk amit követ az érték amire teszteljük az alanyt és EndCase-el zárunk. Gyakorlatilag ugyan azt fogja végrehajtani mint korábban az If-ElseIf-Else programunk. Először le ellenőrzi az első esetet hogy az alany értéke egyenlő-e 1-el, ha igaz lefut az utasítás és a többi eset nem kerül vizsgálatra. Ha viszont nem teljesül akkor a programunk tovább lép a következő eset vizsgálatára. Ha egyik eset sem teljesül, akkor a Default vagyis alapértelmezett eset utasítása kerül végrehajtásra.

A programjaink fejlesztése során rajtunk áll, mit mivel és hogyan kívánunk vizsgálni. A Select-Case egy egyszerű módja hogy gyorsan és egyszerűen teszteljünk valamit egy bizonyos értékre, az If-ElseIf-Else pedig gyakorlatilag kitűnő bármilyen célra, ebből kifojólag sokat is fogjuk használni.

A következő leckében a ciklusokról lesz szó.