amelyben kiderül, hogy Lóti és Co. tanulékony,
és hogy éppen ez a fő erőssége.
(Függöny föl!)
Ahelyett, hogy folytatnánk az eddigi probléma részleteinek további boncolgatását inkább álmodozzunk! Milyen jó volna megtanítani valahogy Lótit magát nyelvünk megértésére, de legalábbis közelíteni az ő nyelvét az emberi nyelvhez! Vagy ez reménytelen? Nem! Hogy mi is lenne jó, mit is várnánk el legszerényebb álmaink szerint tőle? Lássuk nagystílű terveinket! Az általunk elképzelt gusztusos ukáz-sorozatot Lóti és Társai beolvassa, közben megemészti, ha tudja. Az emésztés eredményét, azt az ukáz-sorozatot, amely számára közvetlenül is érthető, egy másik fióktartományba helyezi el. Ezt fogja később végrehajtani.
Utasításnév | Utasítás |
---|---|
Olvasd | Olvasd be az adatot! |
Tégy | Tégy ... noteszbe ...-t! |
Szorozd | Szorozd a ... noteszen lévőt a ... noteszen levővel! |
... | ... |
Folytasd OTT
...
OTT: Tégy A,'I'
Olvasd
Eltedd A,XOP
...
Állj
XOP:
YOP:
ZOP:
Figyelem: utóbb kimondatlanul feltételeztük, hogy egységnyi (azaz egy fióknyi) méret tartozik mindhárom munkaváltozónkhoz! Lehet, hogy időnként szükség lesz még további két információ lejegyzésére:
Egy ilyen barátságosabb nyelven a fenti ukáz-sorozat valahogy így nézne ki:
Olvasd
Eltedd A,XOP
Olvasd
Eltedd A,YOP
Olvasd
Eltedd A,ZOP
Visszatedd A,XOP
Visszatedd B,XOP
Szorozd A,B
Eltedd A,XX
...
Folytasd nn,OTT
OTT: Tégy A,'N'
Írd
Tégy A,'E'
Írd
Tégy A,'M'
Írd
Állj
... és ahova kijön a fióksorszám, ott legyenek a néven nevezett adatfiókok! Ezt az alábbiakkal hoznám tudomására a szavaimat értelmező Lóti számára:
XOP:
YOP:
ZOP:
XX:
Vegyük észre, hogy ez a kis szívesség Lótitól, ez az automatizmus mekkora haszonnal jár számunkra: nem véthetjük el a fióksorszám kiszámítását, sőt az utasításkódolás veszélyes elírásától is megmenekülhetünk! Mit kell tennünk ahhoz, hogy ilyen kényelmesen fogalmazhassunk Lótinak? Válaszunk: tanítsuk meg arra, hogy
Ezeket az ismereteket akár táblázatokba is tömöríthetjük. Az ukáztábla:
Ukáz | Lóti kód | Hossz |
---|---|---|
Olvasd | 0 | 1 |
Eltedd | 1 | 3 |
Visszatedd | 2 | 3 |
... | ... | ... |
... és a notesztábla:
Notesz | Lóti kód |
---|---|
A | 0 |
B | 1 |
C | 2 |
... | ... |
Ezután Lóti először mondanivalónkat végigrágcsálja (esetleg többször is), majd elhelyezi fiókjaiba a saját maga által saját maga számára lefordított kódot, hogy azután végrehajt. Minderre tehát először nekünk kell megtanítani, de ha ezt egyszer megtesszük, meg lesz a jutalma.
Álmainkat szövögessük tovább! Mi lenne ha ..., ha bonyolultabb dolgokat is mondhatnánk Futinak? Például egy matematikus szeretne mindenféle képlettel dolgozni:
négyzetgyök(X^2+Y^2-Z^2);
vagy a korábbi feladat megoldását akár így is elképzelhetjük:
Utasítás | Megjegyzés |
---|---|
X, Y, Z: Egész Be: X,Y,Z Ha X*X+Y*Y-Z*Z=0 akkor Ki: "IGAZ" különben Ki: "HAMIS" Elágazás vége | ⇐ a változók ábrázolása (fiókszáma) ⇐ beolvasás, és konverzió karakteresből egész ábrázolásúba ⇐ formula-kiértékelés, feltételvizsgálat, és a folytatás megszervezése ⇐kiírás . ⇐kiírás . |
Ehhez megtanítanánk őt először is megérteni nyelvünket, majd arra is, hogyan hajtsa végre óhajainkat. Úgy hiszem: senkinek sem tűnik ez reménytelennek! Ahogy az előbb is Lótinak a tudást néhány táblázatba sűrítettük, most is megpróbálkozhatunk ezzel. Itt persze érezhetően nehezebb dologról van szó, és aligha várható el, hogy csupán egy-két táblázattal megoldhatjuk a gondot. Ami nem tűnik nehéznek, a fenti példából rekonstruálható nyelvünk szabályait rögzítő ismeret táblázatolása. Tessék észrevenni, hogy akárcsak egy természetes – mondjuk – angol nyelvű mondat szavainak a rekonstruálásához ismerni kell a nyelv mondattanát: tipikus kijelentő, tagadó, kérdő stb. mondat szerkezetét, amelyeket gyakorta szó útjelző táblák (pl. do/did/can stb.) egyértelműsítenek. Ezeknek a szerepébe lép itt a nyelvünk kulcsszavai: Be:/Ha/akkor stb., és a műveleti jelek (*/+/=/ stb.). A képletek megfejtéséhez elegendőnek látszik, ha ismeri Lóti az egyes műveletek sorrendiségét (ezt egy újabb táblázattal megadhatjuk). Ami a végrehajtást illeti: arra két ötletünk is adódik.
A mélyebb részleteket most ne firtassuk!
Nos, ébredjünk mély álmunkból! A szünet és a száraz újrafogalmazás következik.
A gép túlnőhet önmagán, mert rendelkezik a tanulás képességével.
Az elkövetkező felvonások mottója az lesz (eltérve az eddigi három felvonás banális problémájától), hogy miképpen küzdték (küzdjük) le e tanulási képesség felhőtlen kibontakozásának útjába került időleges korlátokat. A problémák minőségileg nagyobbak lesznek, így nemigen nyílik módunk részletes forgatókönyv írására, megelégszünk a problémák vázlatos megoldásával, annak végiggondolásával: hogyan küzdhető le (elvileg) az akadály.
1. Adjuk meg a magyar nyelvbeli egyszerű mondat leírását! A leíráshoz használjuk föl az ún. BNF metanyelvet! A BNF-ről a következőket kell tudnunk:
nemterminális ::= nyelvi egységek (terminálisok, nemterminálisok) BNF-kifejezése
<egyszerű mondat> ::= <alanyi rész> <állítmányi rész>
<alanyi rész> ::= <névelő> <jelző> <alany>
<állítmányi rész> ::= <határozó> <állítmány>
<alany> ::= Bodri | körte | ...
<állítmány> ::= áll | ül | lóg | kukacoskodik | érik | ...
<jelző> ::= érett | pajkos | ...
<névelő> ::= a | egy
<határozó> ::= nyugodtan | zamatosan | tétován | ...
Mondjunk néhány példát, amely a fentieknek megfelel!
Miért nem jó, s hogyan kellene a szabályokat módosítani, hogy helyesek (szabályosak) legyenek a következő mondatok:
Nyugodtan ül a pajkos Bodri (rossz az alanyi és állítmányi rész sorrendje)
A körte érik (nincs jelző és határozó)
A szabályoknak megfelel-e az alábbi példamondat?
A érett Bodri tétován kukacoskodik (igen, de magyarul az a névelő, továbbá paradox a tartalma = szemantika!)
2. Gyakorlásként tanítsuk meg magyarul a LOGO teknőcöt!
Megoldás:
<program> ::= <programnév> <programtörzs> <programvég>
<programnév> ::= <név> :
<programvég> ::= vége.
<programtörzs> ::=
menj <programtörzs> vissza |
vissza <programtörzs> menj |
balra <programtörzs> jobbra |
jobbra <programtörzs> balra |
<semmi>
...
Ha paraméterezzük az utasításokat (menj 10, balra 90 ...), akkor hogyan módosítandó a szabályzat, ha lehetséges?
(Nem lehetséges! Ui. nem garantálható, hogy menj 10 párjaként vissza 10 szerepeljen! A nyelvtani szabályokba nem építhető be emlékezet, amely felidézné külön-külön az egyes paramétereket.
... menj <szám> <...> vissza <szám> ...
<szám> ::= 0 | 1 | 2 | 3 | ...
(Nem egy-esélyes a szabály; nyelvtanilag elválik a paramétert reprezentáló <szám> az előtte álló, tartalmilag hozzátartozó kulcs-szótól; ismét a szemantika!)
(B)
házi feladat!
![]() ![]() |
![]() |
![]() |
A tananyag az ELTESCORM keretrendszerrel készült