AGK Tier 1 alapok 8. rész – Ciklusok

Az előző leckében a feltétel vizsgálatról volt szó. Ebben a leckében a ciklusokról fogunk beszélni.

Az eddigi leckék során már volt alkalmunk megismerni egy ciklust, mégpedig a Do-Loop ciklust ami egy végtelen ciklus és gyakorlatilag a fő ciklusnak tekinthető az AGK-ben, mivel ez gondoskodik arról hogy minden rendszeresen és ismétlődően fusson a programunkban. Ám lehetőségünk van használni más ciklusokat is.

For-Next ciklus

A For-Next ciklus segítségével lehetőségünk van szabályozni hogy a programunkban valami hányszor fusson le. Például ha azt szeretnénk hogy a képernyőre 5 alkalommal írjuk ki hogy “Hello” akkor a következő módon tehetjük azt meg.

Ahogy láthatjuk a ciklus a Do-Loop ciklusban foglal helyet. Ebben a bizonyos esetben a Print() utasítás miatt van erre szükség mivel szeretnénk hogy a kiírt szöveg a képernyőn maradjon ám ez nem követelmény, ott használhatjuk a ciklusokat ahol csak szeretnénk.

A For-Next ciklust a For utasítással kezdjük, ez jelzi a programunknak hogy ez a bizonyos ciklust itt kezdődik. Ezt követi pár paraméter, az első egy integer változó aminek adunk egy alap értéket, ebben az esetben a változó neve ‘i’ az értéke pedig ‘1’ (i = 1). A ciklus mindég egyel növelni fogja ennek a  változónak az értékét ahányszor csak lefut. A második paraméterben pedig azt tudjuk megadni hogy meddig fusson a ciklus, az-az mennyi legyen az előző paraméterben megadott változó maximum értéke. Ebben az esetben azt adtuk meg hogy ‘5’ (to 5). Szóval a ciklusunk miután lefutott, veszi az i változót aminek az alapértéke 1 és növeli az értéket egyel. Ezt addig ismétli még a változó értéke meg nem haladja a második paraméterben meghatározott értéket az-az ebben az esetben 5-öt.  Amikor az i értéke meghaladja a megadott értéket a ciklus megáll és nem fut le többször.

A ciklust a Next utasítással zárjuk ezzel jelezve a programunknak hogy a ciklusnak itt vége és a Next utasítás után, annak a változónak a nevét kell írnunk amit paraméternek megadtunk ezzel gondoskodva róla hogy növelje az értékét az adott változónak a ciklus végén.

Természetesen a köztes mezőbe, a For és a Next közé kerül minden parancs amit szeretnénk hogy lefusson a ciklusban, ez esetben a Print(“Hello”) parancs került oda hogy kiírjuk a képernyőre hogy “Hello” ahányszor csak lefut a ciklus.

A ciklusnak meglehet adni egy harmadik opcionális paramétert is, mégpedig azt hogy menyivel növekedjen az első paraméterben megadott változó értéke minden alkalommal amikor a ciklus lefut.

Ebben az esetben az első paraméterben megadott változó értéke kettővel fog növekedni (step 2), minden ciklus végén ami azt eredményezi hogy ezúttal a ciklusunk csak háromszor fog lefutni mivel hamarabb éri el illetve lépi túl a második paraméterben meghatározott értéket..

Akár azt is megtehetjük hogy azt az utasítást adjuk a ciklusban hogy az adott változó értéke csökkenjen és ne növekedjen.

Itt azt láthatjuk hogy alap értéknek 5-öt adtam meg, maximum értéknek pedig egyet. Ez önmagában hibás mivel a ciklus alapértelmezettként növekszik és nem csökken, az ok ami miatt mégis működik a harmadik érték mivel annak az értéke ezúttal egy negatív szám (step -1) ami azt eredményezni hogy minden ciklus után a váltózó értéke csökkenni fog egyel és nem növekedni. A végeredmény ugyan az, amikor a váltózónk értéke meghaladja (ami ez esetben azt jelenti hogy kevesebb lesz mint 1) a második paraméterben meghatározott értéket, a ciklus leáll és a programunk kilép a ciklusból.

Ám nem csak a For-Next ciklus áll a rendelkezésünkre.

While-EndWhile ciklus

A While-EndWhile ciklust használva azt szabályozhatjuk hogy egy adott utasítás, mikor illetve meddig fusson. Ennek a ciklusnak a működése rendkívül hasonlít az IF feltétel vizsgálathoz azzal a különbséggel hogy még az IF feltétel vizsgálata során egy utasítás csak egyszer fut le ha a feltétel teljesül, addig a While ciklus mind addig ismétlődően fut még a feltétel teljesül. Éppen ezért óvatosán kell bánni vele mert könnyen kialakíthatunk egy végtelen ciklust a használatával amiből a programunk soha nem lép ki és ott elakad.

Ebben az esetben létrehoztam egy változót aminek az alap értéke ‘1’, majd azt tesztelem a While ciklusban hogy az ‘a’ értéke kisebb-e mint 10. Ameddig a feltétel igaz, a ciklusban található utasítás folyamatosan fut és csak is az. Amint az ‘a’ értéke eléri a 10-et, a ciklus többet nem fut le és a programunk kilép a ciklusból. A ciklust a While utasítással kezdjük és az EndWhile utasítással zárjuk le. Minden ami a kettő közé kerül folyamatosan futni fog addig még a feltétel igaz. Ahogy láthatjuk a ciklusban én az ‘a’ értéket növelem egyel minden alkalommal amikor lefut a ciklus ezzel szabályozva meddig fusson a ciklus, más esetben a ciklus örökké futna, majd kiíratom a képernyőre hogy ‘Hello’ és frissítem a képernyőt a Sync() utasítással. Ebben az esetben azért kell a képernyőt frissíteni a cikluson belül, mert a ciklusból a programunk nem lép ki mind addig még a feltétel igaz, csak és kizárólag az fut ami a cikluson belül van. Ahhoz hogy a képernyőn lássuk kiírva hogy “Hello”, frissíteni kell a képernyőt a cikluson belül is.

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