Upload failed. Maybe wrong permissions?

User Tools

Site Tools



5. Elágazások, ciklusok

5-0.jpg
  

31:41
1985. február 13.
MTV 2. csatorna, 19:30

Szalagnaptár

5-1.jpgPinkert László Commodore 64
  1:29 Köszöntöm nézőinket. Ígéretünknek megfelelően ma először megoldjuk a múlt heti házi feladatot. A házi feladat az volt, hogy módosítsuk a szalagnaptárt, első részt úgy, hogy ne csak harminc, hanem tetszés szerint huszonnyolc, huszonkilenc vagy harmincegy napos hónap naptárlistáját is el tudja készíteni. A módosítás két részből fog állni. Egyrészt a harmincas helyébe egy változót írunk, ez most H lesz, másrészt beírjuk 1. sorba, hogy a program kérdezze meg, hány napos hónapról van szó. Tehát kiírja: „hány napos a hónap?”, erre mi begépeljük mondjuk azt, hogy 28, ezek után a FOR–NEXT ciklusban a K értéke már csak 1-től H-ig, vagyis 28-ig fog változni.
  A második feladat az volt, hogy tegyünk olyan módosítást, hogy ne csak a hétfővel kezdődő hónapok listáját tudja elkészíteni, hanem szintén a futás elején kérdezze meg, hogy a hét hányadik napjára esik elseje. Itt tulajdonképpen arról van szó, hogy az I változót, amellyel a hét napjait számoltuk, nem 1-ről kell indítani, hanem egy tetszés szerinti értékről, melyet a program megkérdez. Ezért az 5-ös sort javítom ki.
  5-2.jpg
  Ezek után nézzük meg a program futását. Hány napos a hónap? – vegyünk mondjuk egy harmincegy napos hónapot… és elseje legyen mondjuk harmadik nap, vagyis szerda.
  5-3.jpg
  Amint látjuk, Commodore gépen van még egy szépséghibája ennek a listának, hogy az eleje nem olvasható, mert kifut a képből. Ezen egy egyszerű megoldással lehet segíteni: a CTRL gomb lenyomása ezeket a listázásokat lassítja. Tehát nézzük meg még egyszer. Hány napos a hónap? Legyen 28. Elseje essen mondjuk vasárnapra, vagyis hetedik nap. És a CTRL gombot lenyomom, a lista lelassul… fölengedem… ismét gyors. A huszonnyolcadik napnál vége.

A suszter

5-5.jpgHorváthné Majsa Katalin Commodore 64
  4:44 Korábbi adásaink példafeladataiban lényegében már találkoztunk programelágazásokkal, ciklusokkal. Ezek azonban olyan lényeges kérdések, hogy úgy gondoltuk, érdemes közelebbről is megvizsgálni őket. Kezdjük talán az elágazásokkal. Erre a hétköznapi életben is könnyen találunk példát. Képzeljünk el mondjuk egy hajdanvolt susztert. A suszter kezdetben egyedül dolgozott, tehát szépen sorban egymaga csinálta végig a cipőkészítés valamennyi fázisát. Mivel egymaga dolgozott és jól dolgozott, tevékenységének folyamatában nem voltak elágazások. Később azonban, amikor kezdett jól menni az üzlet, a mester segédeket, inasokat fogadott és rájuk bízta a munkát. A segédek azonban nem voltak olyan lelkiismeretesek, mint ő, és bizony gyakran előfordult, hogy selejtes darabot készítettek. Ezért az egyes darabok elkészítése után egy ellenőrzést kellett közbeiktatni. Nézzük meg ennek a tevékenységsorozatnak a folyamatábráját.
  

5-6.jpg5-7.jpg

  Tehát először el kellett végezni a munkát, tehát el kellett készíteni a cipőt, és ezek után következett egy feltételvizsgálat, aminek az volt a lényege, hogy megnézték, hogy az elkészített cipő teljesen kifogástalan-e vagy selejt. Abban az esetben, ha a feltétel, tehát hogy selejt, teljesült, egészen más jellegű feladatot kellett végezni, a kosárba kellett tenni a cipőt, mint abban az esetben, hogyha a cipő kifogástalan volt, és ebben az esetben lehetett csomagolni, dobozba rakni.
  A folyamatábrán látható feladatokat, dobozokat természetesen tovább lehet finomítani, ezt majd a későbbiekben tesszük meg. Most először lássuk, hogy a folyamatábrán látható elágazást a BASIC nyelvben milyen módon lehet megvalósítani.

Relációk és műveleti sorrend

5-8.jpgHerneczki Katalin Commodore 64
  6:42 Az IF–THEN utasítás a programozásban azt jelenti, hogy egy tevékenységet vagy tevékenységcsoportot végrehajtunk, vagy pedig nem hajtunk végre egy feltételtől függően. Ha a feltétel igaz, előbbi példánkra hivatkozva: a cipő selejtes, akkor a THEN utáni utasítás kerül végrehajtásra, vagyis a cipőt az erre kijelölt kosárba kell bedobnunk – természetesen a selejtgyűjtő kosárba. Egyébként pedig az IF–THEN szerkezetet követő utasítás kerül végrehajtásra, vagyis a jó cipőket máris csomagolhatjuk.
  Nézzük meg, hogy mik lehetnek tulajdonképpen ezek a feltételek pontosabban. A feltételek matematikai relációk formájában fogalmazhatók meg. Nézzük most meg ezeket relációkat.
  5-9.jpgA relációk az egyenlőség, a kisebb, a nagyobb, a kisebb-egyenlő, a nagyobb-egyenlő és a nem egyenlő reláció. A relációs jel mindkét oldalán értéknek kell szerepelni, és ez az érték lehet egy konstans, lehet változó vagy bonyolultabb esetben valamilyen kifejezés. Kifejezésnek egyébként a változóknak és a konstansoknak műveleti jelekkel való összekapcsolását nevezzük. Előfordulhat az, hogy bonyolultabb kifejezésről van szó, amelyben sok művelet szerepel. Az egyértelműség kedvéért ilyenkor bizonyos elsőbbségi szabály bevezetésére volt szükség, ezt más néven prioritási szabálynak is szokták nevezni. (A mai szakirodalom gyakrabban használja a precedencia elnevezést – L. A. D.) A BASIC programozási nyelvben ismeretes a zárójel. Mégpedig a zárójelet pontosan ugyanúgy használhatjuk, mint ahogy a matematikában. A műveletek kiértékelésénél mindig a legbelső zárójelben lévő művelet kerül először végrehajtásra, aztán fokozatosan haladunk kifelé. Nézzük most erre egy példát.
  5-10.jpgEbben a példában a B–C/2 művelet kerül először végrehajtásra, hiszen ez van a legbelső zárójelben, és utána haladunk fokozatosan kifelé. Zárójeles kifejezésekben a zárójelben vagy pedig zárójel nélküli kifejezésekben elsőbbségi szabályra van szükség, ez pedig a következőt mondja ki. Legmagasabbrendű műveletünk a hatványozás. (A sorozatban eddig nem említették, a korabeli számítógépek ↑ jellel jelölték, a ZX81 kivételével, ahol *​* a jele – L. A. D.) Ezt követi a szorzás és az osztás, ezek egyenrangú műveletek, majd ezeket követi az összeadás és a kivonás, amelyek szintén egyenrangú műveletek. Tehát ebben a sorrendben kerülnek végrehajtásra a műveletek.
  5-11.jpgErre is mutatunk egy példát. Vagyis itt is először a hatványozás, utána a szorzás-osztás, majd pedig az összeadás és a kivonás következik.
  Előfordulhat azonban az is, hogy egy kifejezésben több azonos prioritású művelet szerepel, tehát szorzás-osztás, összeadás-kivonás, ilyen esetben van még egy szabályunk, az úgynevezett balról jobbra szabály, amely azt mondja ki, hogy a műveletek végrehajtása egyenrangú műveletek esetén balról jobbra történik.
  5-12.jpg
  Tehát a következő példánkban A+B az első, majd ebből az összegből levonjuk a C-t, és végül ehhez hozzáadjuk a D-t.

Elágazások

5-13.jpgPinkert László Commodore 64
  10:06 Térjünk most vissza az IF utasításhoz. Annál is inkább, mert alkalmazásának jó néhány trükkje van, ezekből most néhányat bemutatunk.
  Az IF utasítást a képen látható egyszerű szerkezetben használtuk eddig. Egy relációból és egy utasításból áll, melyet a reláció teljesülése esetén végre kell hajtani, egyébként pedig nem. Próbáljuk meg most ezt az egyszerű szerkezetet ábrázolni.
  5-14.jpgA relációt egy sarkára állított négyszöggel fogjuk jelölni, amelynek két kijárata van: az I-vel jelölt, ha a feltétel igaz, és az N-nel jelölt, ha nem igaz. Szemléletesebb az ábra, ha a megfelelő helyre beírjuk a relációt, illetőleg az utasítást.
  5-15.jpg
  Ez a szerkezet használható még akkor is, hogyha a feltétel teljesülése esetén nem egy, hanem néhány, mondjuk három-négy utasítást kell végrehajtani, mert ezek a THEN kulcsszó után kettősponttal elválasztva beírhatók a programba.
  5-16.jpg
  Ezt az egyszerű ábrát azért készítettük el, mert a későbbiekben a bonyolultabb szerkezetek kódolásához az ábrakészítés fog segítséget nyújtani.
  5-17.jpgVegyük például a következőt. A reláció teljesülése esetén most nem néhány, hanem sok, mondjuk húsz-harminc sorból álló programrészletet kell végrehajtani, ezt a részletet jelöli a képen a négyzet, illetőleg benne az R betű. Az biztos, hogy ezt a programrészletet is az utasítások sorában kell elhelyezni, tehát például a 20-as sorszámmal kezdődően.
  5-18.jpg
  Ezek után mit kell csinálni? Azt szeretnénk, ha a feltétel teljesülése esetén a programrészlet végrehajtódna, ezt elérhetjük, hogyha egy GOTO utasítással ugratunk a 20-as sorra. Másrészt amennyiben a feltétel nem teljesül, ezt a programrészletet ki kell kerülni, ezt egy másik GOTO utasítással érhetjük el.
  

5-19.jpg5-20.jpg

  Az ábrának megfelelően már könnyen elkészíthetjük a megfelelő kódolt BASIC programsorokat. Természetesen itt csak az ugrások, illetve az elágazás szempontjából fontos utasításokat, illetve sorszámokat írtuk ki.
  5-21.jpg
  12:30 Ez a programrészlet meglehetősen bonyolult, hiszen két ugrást is tartalmaz; egyszerűsíthető akkor, hogy ha még egyszer végiggondoljuk, mit csinál. Azt csinálja tehát, hogy ha a feltétel igaz, vagyis konkrétan ha A egyenlő B, akkor a programrészletet végrehajtja, egyébként pedig nem. Fordítsuk most meg a feltételt. Tehát ha a feltétel nem igaz, akkor a programrészletet ki kell kerülni. Ennek megfelelő ábrát készíthetünk ilyen módon.
  
5-22.jpg5-23.jpg

  Megfordítottuk a feltételt, A nem egyenlő B, tehát ekkor ki kell kerülni a programrészletet. Egy GOTO utasítással. Amennyiben A egyenlő B, akkor viszont nem kell további programsorokat közbeiktatni, hanem következhet a 20-as sor, az R programrészlet végrehajtása.
  
5-24.jpg5-25.jpg

  Az ennek megfelelő kódolt BASIC utasításcsoport is egyszerűbb az előzőnél.
  5-26.jpg13:39 A következő és talán a legáltalánosabb eset az, amikor a feltétel teljesülése esetén egyik, a feltétel nem teljesülése esetén pedig egy másik programrészletet kell végrehajtani, amit itt I-vel és N-nel jelöltünk. Az mindenesetre látszik, hogy a két programrészlet logikailag egymás mellé került, de biztos, hogy mint BASIC kódolt forma már csak egymás után kerülhetnek, hiszen az utasításokat csak sorba tudjuk írni. Ezért rajzoljuk át az ábrát, két lépésben.
  
5-27.jpg5-28.jpg

  Első lépésben az egyik programrészletet behozzuk a feltétellel egy sorba, a másik lépésben pedig ügyes rajzolással elérhetjük, hogy a két programrészlet sorban egymás után következzen. Természetesen megfelelő ugrató, kikerülő utasításokra van szükség. Az ennek megfelelő programrészlet a következő.
  5-29.jpg
  Megtalálhatjuk benne a két programrészletet, az N-et és az I-t. Az egyik utasítás az N-et kerüli ki, GOTO 30, amennyiben a feltétel igaz, a másik pedig az igen, vagyis az I részletet kerüli ki, amennyiben az N-et már végrehajtottuk.
  5-30.jpg15:02 Az ilyen logikai szerkezetet a Primo és HT gépeken egyszerűbben is kódolhatjuk abban az esetben, hogyha mind az igen, mind a nem programrészlet rövid, néhány utasításból áll, vagyis a lényeg az, hogy elférjen egyetlen utasítássorban. Felhívom itt a figyelmet arra, hogy általában a gépek utasítássor-hosszúsága nem egyezik meg a képernyő sorával, tehát például a Primo esetében az utasítássor 210 karakter hosszú lehet, vagyis öt képernyősorból állhat. HT gépen hasonló a megvalósítás.
  Végül beszéljünk arról, hogy miért hívják ezeket a programrészleteket elágazásoknak. Nyilvánvalóan azért, mert a szerkezetek lényege az volt, hogy különböző GOTO utasítások segítségével bizonyos részeket kikerültünk a programban. A leggyakoribb utasítása ezért ezeknek a szerkezeteknek, ahol a reláció után THEN és GOTO kulcsszavak állnak. Az ilyen programrészletek kódolásának egyszerűsítésére használhatjuk a következő két formát is.
  
5-31.jpg5-32.jpg

  A legtöbb gépen a THEN után a GOTO, illetőleg a GOTO előtti THEN elhagyható.

Logikai műveletek

5-33.jpgKiss Donát Spectrum
  16:25 Mint az imént láttuk, egyes elágazások feltételeit érdemes átfogalmazni a jobb megoldás érdekében. Nos, ebben, bonyolultabb kifejezések felírásában lesznek segítségünkre a BASIC nyelv logikai műveletei. Mielőtt azonban belekezdenénk ennek részletes magyarázatába, nézzünk talán egy programot, amely remélhetőleg illusztrálja majd ezek hasznát.
  Tételezzük fel, hogy önök egy nagy forgalmú személyiszámítógép-üzlet eladói. Nap mint nap igen sokan avval a kérdéssel térnek be, hogy vajon milyen számítógépet vegyenek a gyereknek mondjuk húsvétra. Ez egy olyan munka, ami könnyen gépesíthető vagy könnyen számítógépre vihető, és ezért, számítógépbolt lévén, önök ehhez egy nagyon egyszerű kis programot írnak, amely ezeket a kérdéseket önmagától is megválaszolja. Hát ez a „milyen gépet vegyünk a gyereknek” tanácsadó program, amelyet itt látunk, amely – és ezt szeretném előrebocsátani – pusztán didaktikai jelentőségű, és arra szolgál, hogy bemutassa ezeket a logikai műveleteket majd.
  5-35.jpg
  Nos, a kérdés, ami itt látható alul, az, hogy a gyermek kora vajon mennyi. Tegyük fel, hogy önök igen előrelátóak, és óvodáskorú gyermeküket szeretnék majd meglepni egy számítógéppel, s ötéves a gyermek.
  5-36.jpg
  A program bölcs önmérsékletről tanúskodik, ugyanis azt állítja, hogy ebben a korban ez még egy kicsit korai. Ha azonban a gyermek már mondjuk kilenc éves, akkor egy ZX81-et javasol, ami kezdetben mindenképpen jó lesz.
  5-37.jpg
  Középiskolás korú gyermekeiknek azonban a program már egy Commodore 64-et vagy egy Spectrumot javasol, ami talán jobban megfelel ennek a korosztálynak az igényeinek.
  5-38.jpg
  Felnőtt vásárlók számára a program az anyagi helyzet tüzetes megvizsgálását javasolja, hiszen a választék akkora, hogy nagyon nehéz lenne itt javasolni egy vagy két típust.
  5-39.jpg
  Tegyük fel, hogy önök nemrég nyugdíjba vonult nagypapájukat szeretnék megajándékozni egy géppel, és a nagypapa nyolcvanhét éves – erre a program ugyanazt válaszolja, mint ötéves gyermekükre, hogy korai. No, nem cinizmusból, pusztán azért, mert itt éppen egy logikai művelet bemutatására lesz majd alkalmas ez a válasz.
  5-40.jpg18:57 Nézzük meg most ezt a programot, hogy néz ki a listája. Keressük meg azt a sort a programban, amelyik az „esetleg egy ZX81-et” kiírásért felelős. Miről van itt szó? Arról, hogy a K változóba korábban, egy korábbi programsorban beolvastuk „a gyermek kora” kérdésre adott választ, vagyis ebben a változóban az a szám található, amit ott bevittünk. Nos, itt látható egy k>=6 reláció. Ennek a relációnak vagy kifejezésnek van egy logikai értéke. Mégpedig aszerint, hogy K valóban nagyobb-e, mint 6 vagy nem. Eszerint ez a reláció vagy igaz, vagy hamis. Vagy más nyelven szólva: logikai 1 vagy logikai 0 értékű. Nomármost. A programot úgy írtuk meg, hogy az „esetleg egy ZX81-et” feliratot hat és tizenkét éves gyermekeknek ajánlanánk, vagyis azt kell megvizsgálnunk egyszerre, hogy K nagyobb-e, mint 6, és ugyanakkor kisebb-e, mint 12. Vagyis hogy a k>=6 reláció és a k<12 reláció egyszerre teljesül-e. És már el is mondtuk az ÉS függvénynek tulajdonképpen az igazságtáblázatát.
  5-41.jpg
  Arról van ugyanis szó, hogy két kifejezés ÉS kapcsolata akkor igaz értékű, ha mindkét kifejezés önmagában is igaz, minden más esetben hamis.
  5-42.jpg
  Nézzük meg azt a sort – amely, nagyon reméljük, nem tántorítja el majd nyugdíjas nézőinket ettől a műsortól –, amelyik a „korai” feliratért felelős. Mi úgy írtuk meg a programot, hogy k<6, valamint k>80 értékeknél legyen látható. Más szavakkal ha akár k<6, akár k>80, tehát vagy az egyik, vagy a másik teljesül, ebben az esetben azt szeretnénk, ha a gép kiírná ezt, hogy „korai”. Máris elhangzott a VAGY kulcsszó, ami nem más, mint ismét egy BASIC művelet, ez az OR angol szócska formájában látható is a képernyőn. Vagyis ha akár az egyik, akár a másik reláció teljesül, vagyis logikai értéke 1, akkor megtörténik ez a kiírás.
  5-43.jpg
  Azt jelenti ez más szavakkal, hogy a logikai VAGY művelet értéke akkor igaz, ha legalább egyik összetevőjének logikai értéke igaz, és csak akkor hamis, ha mindkettő hamis.
  Végezetül pedig létezik egy harmadik logikai függvény is, ez pedig a tagadás, aminek a BASIC angol nyelvű rövidítése az, hogy NOT. Ez nagyon egyszerű, ugyanis itt csak egyetlenegy relációról, egyetlenegy logikai kifejezésről van szó – amennyiben annak az értéke igaz, vagyis logikailag 1, akkor a tagadás értéke hamis lesz, és viszont.
  5-44.jpg
  Mint látni fogjuk, ezeket a logikai függvényeket vagy logikai műveleteket igen gyakran fogjuk majd használni, elsősorban az elágazásokat tartalmazó programokban.

ON GOTO

5-45.jpgHerneczki Katalin
  22:18 Térjünk most vissza kedvenc cipészmesterünkhöz, és nézzük meg közelebbről, hogyan történik a cipők csomagolása. A cipészmester a különböző méretű, jellegű cipőket más-más dobozba helyezi és a dobozokat más-más polcra teszi. A már ismert folyamatábránk DOBOZ nevű részfeladatát emeljük most ki, és ezt részletezzük. A cipészmester a különböző méretű, jellegű cipőket más-más dobozba teszi és más-más polcra rakja őket. Ha egy feladat olyan, hogy egy feltételtől függően nemcsak kétfelé, hanem többfelé is el lehet ágazni, akkor a feladat működési ábrája az alábbi módon alakul.
  5-46.jpg
  A MÉRET feltételtől függően többféle elágazás is lehetséges. Például ha a cipő férficipő, az A1-es tevékenységet hajtjuk végre, a megfelelő dobozba, megfelelő polcra tesszük a cipőt. Ha a cipő női méretű, akkor az A2-es tevékenységet hajtjuk végre, másfajta dobozba, másik polcra kerülnek az ilyen cipők. Ha a cipő gyerekcipő, akkor az A3-as tevékenységet hajtjuk végre. Természetesen egyéb méretmegkülönböztetések is lehetnek, de előfordul, hogy egy cipő egyik feltételnek sem tesz eleget. Ebben az esetben az EGYÉB ágon fut tovább a programunk, az AN tevékenység végrehajtásával.
  5-47.jpg23:41 Az ilyen típusú elágazást CASE szerkezetnek nevezzük. A CASE angol szó, esetet jelent, és arra utal, hogy itt tulajdonképpen egy esetszétválasztó szerkezetről van szó. Ennek a szerkezetnek a megvalósítása BASIC nyelven IF–THEN utasítások segítségével történhet, mégpedig így:
  5-48.jpg
  A programrészlet megvizsgálja az egyes feltételek teljesülését, és attól függően ugrik tovább. Vagyis ha A=1, akkor az 500-as sorba, A=2 esetén a 600-asba, és így tovább, A=5 esetén a 2500-as sorba. Ez a megoldás azonban egy kicsit bonyolult, és erre egyszerűbb megoldás is létezik a BASIC nyelvben, mégpedig az ON GOTO utasításnak a használata. Ez sajnos nem minden gépnél van meg. (Az adásban szereplő gépek közül csak a Sinclair-gépekről hiányzik, de ott van helyette „kiszámított GOTO” utasítás – L. A. D.) Ugyanezt a programrészletet fogjuk most megnézni az ON GOTO utasítás segítségével.
  5-49.jpg
  (A programsor hibásan jelenik meg: a sorszámokat vesszővel kell elválasztani egymástól, de szóköz áll közöttük. A helyes szöveg: ON A GOTO 500,600,1200,1600,2500 – L. A. D.)
  A megoldás lényegesen egyszerűbb. A 30-astól a 34-es sorig mindössze egy sort kell beírni – ezt most 30-assal jelöltük –: ON A GOTO 500, 600 és így tovább, 2500. Ez az utasítás lehetővé tette, hogy az A kifejezés vagy változó értékétől függően a listában felsorolt ágak bármelyikére ugorjunk. Tehát az 500-as, 600-as, és így tovább, 2500-as sorba. Fontos az, hogy A itt is 1-ről indul és egyesével növekszik. Van még néhány megkötésünk az A-ra vonatkozóan. Ha A nulla, akkor a program az utasítást követő sorban folytatja működését. Ugyanez a helyzet akkor is, ha A értéke nagyobb, mint az elágazások száma. Vagyis ebben a programban öt elágazásunk volt, ha mondjuk A hat, akkor ez az eset áll fenn. Előfordulhat az is, hogy A negatív. Ebben az esetben hibajelzést kapunk. Ha pedig A nem egész szám, akkor A egész részét veszi figyelembe a program.
  A Rádiótechnika című lapban az ON GOTO utasítás használatára láttunk egy mintafeladatot. Utána tudnak nézni az 1984-es évfolyam nyolcadik számában. A feladat lényege az volt, hogy háromjegyű számokat, amelyeket számjeggyel adnak meg, szöveges formában kell kiírni.
  5-50.jpgNézzük meg ennek a működését. Az idő rövidségére való tekintettel csak az egyeseket kezelő programrészt vesszük szemügyre. A 360-as sorban az ON GOTO utasítás található, E változóval. Tehát ON E GO TO 380, 390, és így tovább, 460. A 380-as sorban történik meg az 1-es kiíratása egy PRINT utasítással, a 390-esben a 2-esé, és így tovább, a 460-as sorban a 9-es számjegyet tudjuk kiírni. (Ezek a sorok is hibásak. A kiírandó szövegek jól láthatóan ' aposztrófok között vannak (amelyet a Commodore-gépek ferde vonalkával írnak), pedig " idézőjelnek kellene ott állnia, és hiányzik az utasítások közötti kettőspont is. A helyes szöveg 380 PRINT "EGY": END lenne, és a többi sorban is hasonlóképpen – L. A. D.) Házifeladatként javasoljuk, hogy gondolják végig: a tízesek, százasok kiíratását hogy lehetne megoldani ezzel a programmal. Vagyis hogy az egész háromjegyű számot tudjuk most már szöveges formában kiírni. Ebben az esetben az se baj, ha egy kicsit puskáznak, tehát a Rádiótechnika című lap használható.

Ciklusok típusai

Horváthné Majsa Katalin Commodore 64
  27:04 Visszatérve a jó öreg suszterhez, elmesélem, hogy mi történt a selejtes kosárba került cipőkkel.
  

5-51.jpg5-52.jpg

  5-53.jpg
  Ezeknek általában nem volt különösebb bajuk, csak annyi, hogy a segédek nem varrták elég erősen hozzá a cipőfelsőrészt a talphoz. Ezen a hibán pedig úgy lehetett segíteni, hogy a suszter még néhányszor körbevarratta a segédekkel a cipők szélét. Ennek a tevékenységnek a folyamatábrája a következő.
  5-54.jpg
  Ezen a folyamatábrán egy ciklikus tevékenységet látunk, hiszen a tevékenységet, adott esetben a cipő körbevarrását egymás után többször, ciklikusan kell elvégezni. Az ilyen jellegű feladatok megvalósítására a BASIC nyelvben többféle lehetőség is adódik, ezek közül már láttunk is néhányat.
  27:50 Ciklusokat a legegyszerűbben a GOTO utasítással szervezhetünk. Már láttunk erre példát, de nézzünk egyet ismét.
  5-55.jpg
  Ez egy nagyon rövid, egyszerű kis mintaprogram, mindössze két sorból áll. Nézzük végig, hogy hogyan is működne, hogyha elindítanánk. Az első sor alapján ki kell íratni egy csillagot a képernyőre, a második sor pedig azt mondja, hogy ugorjunk vissza az elsőre. Ott megint egy csillag kiíratása következik, megint visszaugrunk, megint egy csillag, és így tovább. Amint látjuk, a második sor pusztán arra szolgál, hogy folyamatosan, újból és újból, ciklikusan végrehajtassa az első sort. A ciklusoknak ilyen részét a ciklus szervezőrészének nevezik. A ciklusok másik része, másik alkotóeleme, ami azokból az utasításokból áll, amit állandóan, újból és újból végre kell hajtani, nem más, mint a ciklus magja. Ezek több utasításból is állhatnak, ebben az esetben azonban a ciklusmag is és a szervezőrész is csak egy-egy utasításból áll. Amint láttuk, ez a program, hogyha elindul, csak írja, írja a csillagokat, egészen addig, amíg ezt egy BREAK utasítással (billentyűvel – L. A. D.) meg nem állítjuk, vagy amíg a gépet ki nem kapcsoljuk. Az ilyen ciklusokat végtelen ciklusoknak szoktuk nevezni. Abban az esetben, hogyha azt akarjuk, hogy a programunk végrehajtása közben a ciklusból kilépjen, akkor a programban a ciklus végrehajtását egy feltételhez kell kötnünk. Na lássuk azt is, hogy hogyan lehet ezt megvalósítani. (Eggyel több 9-est üt le – L. A. D.) Ez egy kicsit sok lesz…
  5-56.jpg
  No, íme. Itt az első sor alapján megint ki kell íratni egy csillagot, azután viszont megkérdezi a számítógép, hogy vajon folytassa-e. A választ egy V$ változóba olvassa be, tehát egy V-sztringbe, amit a következő sorban értékel ki. Hogyha ennek az értéke egy I betű, vagyis a válaszunk I betű volt, igen volt, akkor visszatérünk a ciklusba és újból végrehajtódik a ciklusmag, nemleges válasz esetén pedig kilépünk a ciklusból. Abban az esetben, hogyha már előre, a program írása során tudjuk, hogy hányszor akarjuk végrehajtatni a ciklusmagot, akkor egy kicsit másképp kell megfogalmaznunk a feltételeket, és használhatjuk a már jól ismert FOR–NEXT utasításpárost.
  5-57.jpg30:22 Egy másik szempont, ami szerint a ciklusokat osztályozhatjuk, hogy a kilépési feltétel a ciklusmag előtt vagy után helyezkedik-e el. Ezek alapján mondhatjuk egy ciklusra, hogy elöltesztelő vagy hátultesztelő.
  Az eddig látott ciklusoknál könnyen eldönthetjük, hogy elöl- vagy hátultesztelők-e. Ez alól csupán a FOR–NEXT utasításpárral kialakított ciklusok képeznek kivételt. Annak eldöntése, hogy ezek hol tesztelnek, legyen házi feladat. Így hát mindenki járjon, olvasson utána, próbálja ki saját maga.
  30:55