amelyben megismerjük az alapszituációt,
és – természetesen – a szereplőket
Bemutatkozás gyanánt: e drámának – mint mindegyiknek – szereplői is vannak. Legfontosabb szereplője, amolyan főszereplője Lóti Futi. Mellék-, bár semmi esetre sem nélkülözhető szereplői: Össze Ady, K. I. Vony, Össze Szorzy, ... Sejthető, hogy a főszereplő egy rendkívül agilis, temperamentumos, környezetében meghatározó jellemű egyéniség. A többiekről talán csak annyit, precíz, ámbár kissé tesze-tosza, vagy szelídebben fogalmazva béketűrő, befolyásolható személyiségek.
Néhány szót kell még szólni a helyszínről, ahol a történések zajlanak majd. Egy szoba két ablakkal, igen szerény bútorzattal: egy fiókos szekrény, egy asztal rajta néhány notesszal, s körülötte székek.
Rendkívüli az előadás, ez abból is látszik, hogy nem poéngyilkosság a mondanivalót előre ismerni, ugyanis a történés maga lesz oly váratlan fordulatokkal tűzdelt, hogy a műélvezetet ez maga megteremti. Kezdődjék hát! Íme:
A látvány: a puritánul berendezett szobában Lóti Futi a jobboldali ablaknál áll, míg a többiek az asztal körül egy-egy széken ülnek. (Függöny föl!)
A felvonásban a szereplőknek a következő konfliktussal kell megbirkózniuk – persze a mi segítségünkkel –; ugyanis elfelejtettem említeni, hogy a dráma fordulatossága nem kis részben rajtunk fog múlni: mi töltjük be a Rendező hálátlan szerepét; nekünk kell a történet fonalát úgy gombolyítani, hogy a végső mondanivaló kigombolyodjék, akarom mondani: kigömbölyödjék, egyszóval kidomborodjon.)
Tehát a kulcsprobléma: E gyülekezet adjon választ a világot oly régóta foglalkoztató súlyos kérdésre: igaz-e, hogy
X²+Y²=Z²!
Az alapszituáció: Lóti Futi, mint egy karmester, a székeken lustálkodó szereplőket – hogy el ne bóbiskoljanak – felváltva, hol egyiket, hol másikat mozgósítja, testre szabott munkával látja el. Azt, hogy mi az éppen megoldandó részfeladat, ő is a szekrény egyes fiókjaiban található papírokról tudja meg. Ezek a papírok tartalmazzák tehát az események menetét olyan apró utasítások formájában, amelyeket az egyes szereplők végre képesek hajtani. Ennek megfelelően Futi többnyire a szekrény és az asztal között cikázik ukázokat és adatokat adva a megfelelő alárendeltnek. Amazok az adatokat valamelyik noteszre írva kapják, és munkájuk gyümölcsét (az eredményt) szintén valamely noteszre tálalják. Meg kell jegyeznünk, hogy akár a fiókban lévő papírról, akár a noteszbeliről csak az utoljára ráírt adatot lehet leolvasni (de azt persze akárhányszor). (Mintha a ráírás előtt leradíroznák.) A feladat tehát ennek koreografálása, vagyis az ukáz-sorozatnak a kigondolása, elhelyezése a fiókokban. Első dolog nyilván meggondolni, hogyan válaszolható meg elvileg a kérdés. Számoljuk ki és írjuk ki az X²+Y²-Z² eredményét! Ha valaki 0-t lát, akkor tudja a választ, hogy igaz, különben pedig, hogy hamis. Most már jöhet e nagystílűen elintézett megoldás aprópénzre váltása, vagyis maga a részletes utasítássorozat.
Ki kell találnunk olyan elemi utasításokat, amelyeket várhatólag a szereplők végre tudnak hajtani. Az elsőt mindjárt Futi kapja: szerezze be a szükséges adatokat, persze egyenként, először az X értékét, majd a Y-ét, végül a Z-ét! Ezt jegyezzük le, mondjuk így: Olvasd be az adatot! Igenám, de honnan és hová tegye (nem káptalan az ő feje sem, nem beszélve társairól)? Honnan: a jobboldali ablakon át. Hová: valamelyik, pl. az A jelű noteszbe. (Hogy mindig tudjuk, hogy melyik noteszről van szó, címkézzük meg őket az ABC betűivel!) Ezután az Olvasd be az adatot utasítás mindig azt jelenti, hogy Futi rohanjon a jobboldali ablakhoz, várja meg míg valamit kap, és azt írja az A notesz lapjára. Most folytathatjuk a második adat beolvasásával; illetve mégsem. Hiszen az A notesz lapja már foglalt, csak egy dolog írható rá. Pontosabban az utolsó ráírt adat olvasható el csupán. A konfliktus feloldása: a már beolvasott adatot tegyük el egy biztos helyre! Mi lehet biztonságosabb, mint a szekrény valamelyik fiókja? Hogy a sok fiók között ne keveredjünk el, sorszámozzuk meg őket alulról felfelé 0-val kezdve. Továbbá Lóti Futi alapjellemvonásaként tételezzük föl azt, hogy mindig a legalsó fióknál kezdi az ukázok kivételét, és sorban halad ebben a tevékenységben; s azt, hogy éppen hol (mely sorszámúnál) tart a fiókrángatásban egy speciális – csak ő általa használt – jegyzettömbbe írja föl.
A következő adat beolvasása előtt Futinak adjuk azt a parancsot, hogy Tedd el az A noteszbelit ... a 15. fiókba! Megvan már a 0. és az 1. fiók tartalma:
Fióktartalom | Megjegyzés |
---|---|
0: Olvasd be az adatot |
|
1: Tedd el az A noteszbelit a 15. fiókba | 15⇐X |
A folytatás már könnyen megy:
Fióktartalom | Megjegyzés |
---|---|
2: Olvasd be az adatot |
|
3: Tedd el az A noteszbelit a 16. fiókba | 16⇐Y |
4: Olvasd be az adatot |
|
5: Tedd el az A noteszbelit a 17. fiókba | 17⇐Z |
Most következik az érdemi munka: a számolás. Lóti Futi az utasításból látja, hogy ő maga meg tudja-e csinálni, illetve, hogy kit kell felbiztatni a tennivalók elvégzésére. Ilyenkor persze megvárja, amíg az illető végez a munkájával. (Erről még kicsit később szólunk.) Nincs sajnos olyan segéderő, aki négyzetre tudna emelni, így azután erre Össze Szorzyt próbáljuk rávenni. Először is házhoz kell szállítani a szükséges adatot (az X-et); hiszen – mint tudjuk – a mellékszereplők meglehetősen helyhez (pontosabban: székhez) kötöttek. Ezért ki kell adnunk két olyan parancsot, amely révén a fiókból a noteszre kerül a szorzás mindkét adata (az X-érték két noteszre is rá kell, hogy kerüljön): Tedd vissza a 15. fiókbelit az A noteszra, majd a Tedd vissza a 15. fiókbelit a B noteszra! Ezt követően már a szorzásnak nincs akadálya.
Fióktartalom | Megjegyzés |
---|---|
6: Tedd vissza a 15. fiókbelit az A noteszra 7: Tedd vissza a 15. fiókbelit a B noteszra |
|
8: Szorozd az A noteszen lévőt a B-n levővel (az eredmény az A noteszben) | X*X |
9: Tedd el az A noteszbelit a 18. fiókba 10: Tedd vissza a 16. fiókbelit az A noteszra 11: Tedd vissza a 16. fiókbelit a B noteszra |
|
12: Szorozd az A noteszen lévőt a B-n levővel (az eredmény az A noteszben) | Y*Y |
13: Tedd vissza a 18. fiókbelit az B noteszra 14: Add hozzá az A noteszbelihez a B-n levőt |
|
15: Tedd el az A noteszbelit a 19. fiókba | 19⇐X*X+Y*Y |
16: Tedd vissza a 17. fiókbelit az A noteszra 17: Tedd vissza a 17. fiókbelit a B noteszra |
|
18: Szorozd az A noteszen lévőt a B-n levővel (az eredmény az A noteszben) | Z*Z |
19: Tedd vissza a 19. fiókbelit a B noteszra |
|
20: Vond ki az A noteszbeliből a B-n levőt | Z*Z-X*X-Y*Y |
Nem marad más hátra, mint az eredmény közlése, vagyis a másik ablakhoz szállítása:
Fióktartalom | Megjegyzés |
---|---|
21: Írd ki az adatot |
Hej, de hisz nem jó így a rendezői utasítás: már a 15. fiókot (és az azt követő néhányat) adatok tárolására szántuk, most meg parancsokat terveznénk oda?!? Megoldás: javítsuk át az utasításokban a fiók-sorszámokat 10-zel nagyobbra, s akkor megszűnik ez a konkurencia. Persze a dolog még nincs egészen ekkor sem rendben, hisz Futi rángatja tovább a fiókokat, és hajtaná (hajtatná) végre az ukázokat a 22., 23., 24. … fiók tartalma alapján, ami – mondani sem kell – furcsa eredményre vezethetne. Befejezésként Lóti Futit utasítani kell arra, hogy nincs tovább:
Fióktartalom | Megjegyzés |
---|---|
22: Állj |
Ezzel megvolnánk; csakhogy hogyan értessük meg magunkat Lótival, mert hogy ilyen hosszadalmasan nem lenne jó, az biztos, sőt e fogalmazványszerű programstílus egyértelműsége sem biztos. Az ötlet (neumanni): feleltessünk meg minden utasításnak valamilyen számkódot, és azt írjuk be az egyes fiókokba. (Így az adat- és utasítástárolás egyöntetűsége is megvalósul, ami a tárolás szekrénytani [ti. műszaki] szempontjából nagy előnyt jelent.) Vegyük sorba a fenti utasításokat, és hozzárendelünk egy-egy számot, mint kódot, így kódoljuk újra a fenti programot!
utasítás | kód |
---|---|
Olvasd be … Tedd el … Tedd vissza … Szorozd meg … Add hozzá … Vond ki … Írd ki … Állj | 0 1 2 3 4 5 6 7 |
Így a program a következőképpen alakul:
Fióksorszám | Fióktartalom |
---|---|
0: | 0 |
A következő utasítás kódolásánál azt kell észrevennünk, hogy az, amit eddig egyetlen utasításként jegyeztünk le, és egyetlen fiókba helyeztünk el, 3 dolgot is magába foglalt; nevezetesen: melyik utasításról van szó, mely noteszre és mely fiókra vonatkozik (az utóbbi kettőt az utasítás operandusainak mondják, és az operálandókat jelentik). Mivel egy fiókba csak egyféle dolgot tehetünk, ehhez az utasításhoz 3 fiókra van szükségünk. Mindez alaposan bonyolítja a mi helyzetünket is, de Lóti Futiét pláne. Tegyük föl, hogy Lóti Futi nem jön ettől zavarba! Folytassuk tehát a kódolást ennek reményében! Persze föltéve egy elég természetes notesz↔kód egymáshoz rendelést:
notesz | kód |
---|---|
A B C … | 1 2 3 … |
Fióksorszám | Fióktartalom | Fióksorszám | Fióktartalom |
---|---|---|---|
1: 4: 5: 8: 9: 10: 13: 16: 19: 22: 25: | 1 1 25 0 1 1 26 0 1 1 27 2 25 1 2 25 2 3 1 2 1 1 28 2 26 1 2 26 2 | 28: 31: 34: 37: 40: 43: 46: 49: 52: 55: 56: | 3 1 2 2 26 2 4 1 2 1 1 29 2 27 1 2 27 2 3 1 2 2 29 2 5 1 2 6 7 |
Mint látható a keletkezett programkód fiók-sorszámai alaposan elcsúsztak, s emiatt az utasításbeli fióksorszámokat újból javítanunk kell, – mondjuk – 50-nel megnöveljük. De ezeket a változtatásokat most már csak fejben végezzük el! Ja, ... és még egy dolog látszik – az tudniillik –, hogy nem látszik a fióktartalmakon: mi utasítás, mi adat, csak attól függ, hogyan kezeljük! (Csak a könnyebb áttekinthetőség kedvéért írtuk utasításnyi csoportonként.)
Egy aprócska észrevételt kell tennünk még! Nevezetesen, nem számoltunk azzal az elég természetes körülménnyel, hogy – bár rettentő sebességgel tudnak dolgozni szereplőink – nem egyforma ideig tart egy összeadás, egy szorzás. Így elképzelhető lenne az a szerencsétlen helyzet, hogy Lóti a saját türelmetlen tempójában idejekorán kitépi Szorzy keze közül a félig kész eredményt. Ez elkerülendő az asztalon elhelyezünk egy metronómot, amelyet – mondjuk – a leglassúbb szereplőhöz igazítunk, és Lótinak meghagyjuk, hogy ennek ütemében osztogassa ukázait.
A felvonás szünetében beszéljük meg a tapasztalatokat; fogalmazzuk meg számítástechnikaiul a fontos gondolatokat!
Fogalom | Mesebeli megfelelő | |
---|---|---|
központi (vezérlő) egység | Lóti Futi | |
(operatív) tár | fiókos szekrény | |
aritmetikai/logikai egység | mellékszereplők | |
be-/kimeneti egység | ablakok |
Fogalom | Mesebeli megfelelő |
---|---|
óra(jel-generátor) | metronóm |
bájt (=8 bit) | fiók: egyként kezelhető információ, amely 8 bitből (azaz 8 kettes számrendszerbeli számjegyből) álló szám |
belső regiszterek | noteszek, az átmeneti tárolói a számításnak |
programszámláló | Lóti saját notesze, ami azt mutatja meg, hogy hol (melyik fiók feldolgozásánál) tart éppen |
cím | fióksorszám |
gépi utasítások | Tedd el/vissza, Add hozzá, Vond ki, Olvasd be, Írd ki, Állj |
gépi kód | utasításokhoz rendelt számok |
gépi kódú utasítás | operációs (műveleti) kód + operandusok (címei) |
Gondolkozz el a következő misztikusan hangzó kérdésen: a kitalált programunk, hogy kerül be a szekrény fiókjaiba? (Az első lökés kérdése.)
Válaszlehetőségek:
Mindkét esetben a valamilyen alapintelligenciának eleve a memóriában kell lennie, ebből következik, hogy a memóriának legalább kétfélének kell lennie:
![]() ![]() |
![]() |
![]() |
A tananyag az ELTESCORM keretrendszerrel készült