-
Beszéljünk most a ciklusokról!
-
Van itt egy while ciklusunk, és ezzel a néhány
sornyi kóddal teleírtuk a képernyőt.
-
Ha itt elöl átírom az üzenetet,
-
akkor mindegyik sor megváltozik.
-
De miért? Hogyan működik? Mindjárt átnézzük
a kódot,
-
de előtte lépjünk egyet vissza, és gondoljuk át,
hogy hogyan írnánk meg ezt a programot
-
a mostani tudásunkkal, ciklus használata nélkül.
-
Ehhez azt kell tennünk,
-
hogy ugyanazt a szöveget kiírjuk újra és újra.
-
Leírom, hogy text, majd az üzenetet (message)
az elejére teszem, és ezt fogom ismételni
-
egymás alatt sokszor, egészen az aljáig.
-
De ez elég sok munka lesz, nem?
-
Merthogy az alja elég messze van. Ráadásul,
még rosszabb a helyzet, ha szólsz, hogy
-
igazából ennek nem is 70-nek kellene lennie,
hanem 60-nak, hogy közelebb legyen.
-
És ez nem csak ezt befolyásolja, mert ugye a
többinek is végig kisebbnek kell lenni,
-
ezért ezt minden text függvénynél
módosítanom kell.
-
Sőt ez még sokkal tovább tartana, ha egész az
aljáig szeretnék leérni.
-
Ez így tehát elég bajos, de szerencsére ott
vannak ciklusok,
-
amik pont ebben segítenek.
-
Mostantól mindig, ha ilyesmi ismétlődő kódot
látsz, arra gondolj:
-
"Tudok erre ciklust használni?".
-
A ciklus segít, hogy egy kódrészletet újra és
újra ismételj úgy,
-
hogy minden alkalommal csak kicsit változtatsz
valamin.
-
Nézzük meg, hogy írhatjuk át ezt ciklus
segítségével.
-
Először leírjuk, hogy "while", majd kerek
zárójelek végül kapcsos zárójelek.
-
Kapunk egy üzenetet, de csak azért, mert még
nem vagyunk készen.
-
Ne aggódj, ez el fog majd tűnni.
-
Minden egyes alkalommal, ha ciklust írsz,
három kérdésre kell választ adnod.
-
Itt is vannak - angolul.
-
Az első kérdés az, hogy "Mit szeretnék
ismételni?"
-
és bármit is szeretnél ismételni, az a kapcsos
zárójelek közé kell, hogy kerüljön.
-
Tehát most a "text" hívást szeretnénk minden
alkalommal ismételni, tegyük is ide.
-
De ennek így nincs sok értelme, ugye?
-
Mert hát most ugyanazt a text hívást ismételjük
újra és újra, ami nem segít.
-
Valami olyanra lenne szükségünk, ami változik.
-
És ebben segít a második kérdés: "Mit kell
megváltoztassak, minden egyes alkalommal?"
-
Az "y" pozíciót szeretnénk változtatni, ugye?
Azt szeretnénk, ha 60 lenne, majd 80,
-
úgyhogy készítünk inkább ehhez egy változót.
-
Legyen y, mert az y pozíciót tároljuk benne.
-
Itt fent deklaráljuk, a kezdeti értéke 40 lesz.
-
Remek, most már csak annyit kell tennünk,
hogy megváltoztatjuk az y-t.
-
Ezt itt lent tehetjük meg: legyen y értéke "y +
20",
-
így minden alkalommal egyre nagyobb lesz.
-
Sőt! Használhatjuk a korábban tanult rövidebb
formát inkrementálásra.
-
Jó, most már csak a harmadik kérdést kell
megválaszolnunk.
-
"Milyen sokáig kellene ismételnünk?"
-
Szeretnénk ezt újra és újra ismételni, de nem
örökké, ugye?
-
Ha örökké szeretnénk csinálni, az nagyon
sokáig tartana,
-
másrészt az is lehet, hogy összeomlana miatta
a böngészőnk, és ezt nem akarjuk.
-
Tehát igazából csak addig szeretnénk ezt
csinálni, amíg az oldal aljára nem érünk, igaz?
-
Tehát addig, amíg y értéke 400-nál kisebb. Ezt
pedig ide írjuk.
-
És készen is vagyunk! Az üzenetünk az egész
vásznat beborította!
-
Láthatod, hogy ez sokkal egyszerűbb, mint a
korábbi megoldás,
-
amivel nagyjából ugyanennyi időt töltöttünk, de
akkor a negyede sem volt még kész.
-
Ezt ki is törölhetjük, hiszen itt van a
programunk.
-
Próbáljuk meg jobban megérteni, hogy mi is
történik itt!
-
Ehhez minden alkalommal kiíratom az y-t.
-
Ideírom, hogy "y értéke most" (y is now) és
odaírom a végére az y értékét.
-
Láthatjuk, hogy az érték jelenleg 20-asával
változik, és ha ezt módosítani szeretnénk,
-
megváltoztatjuk ezt az értéket. Például 50-re.
-
És akkor látszik is, hogy 50-esével változik.
-
Hasonlóképpen megváltoztathatod akár ezeket
az értékeket is,
-
és látni fogod, milyen hatással van a
programodra, például, hogy mikor áll meg.
-
Hogy megértsd, arra is gondolhatsz, hogy ez
valójában kicsit olyan, mint egy "if".
-
Van itt egy logikai kifejezés, amiről korábban
már tanultál.
-
És akkor hajtjuk végre a törzsét az utasításnak,
-
ha a logikai érték igaz, egyébként a végére
ugrunk.
-
De ami ebben érdekes, az az, hogy a while
ciklus esetén
-
van egy titkos utasítás a végén, ami azt mondja
"menj vissza a ciklus elejére".
-
És ez a titkos utasítás azt jelenti,
-
hogy ahelyett, hogy tovább folytatnánk, mint az
"if"-nél,
-
minden alkalommal végrehajtjuk a ciklus
törzsét, majd visszamegyünk,
-
és megvizsgáljuk, hogy a feltétel továbbra is
igaz-e. És ha igen, megismétljük még egyszer...
-
És biztos ki is találtad, hogy mikor másodjára
ismételjük, ugyanez történik...
-
ellenőrizzük, hogy az y még mindig kisebb-e
mint 279.
-
És ha igen, megismételjük és megint
ellenőrizzük.
-
És ha nem, visszatérünk az elejére.
-
És végül kilépünk és továbbhaladunk a
programunkban.
-
Nagyszerű!
-
A ciklusok még sokféleképpen használhatóak,
és fogunk is még tanulni róluk,
-
de már most is sok hasznos dolgot láttál!