Hogyan működik a számítógép?

A mûveletek sorrendje

Ha egy kifejezés értékét meg akarjuk határozni, akkor a matematika órán megismert szabályokat alkalmazzuk, amelyek a kifejezésben szereplõ mûveletek végrehajtási egyértelmû sorrendjét meghatározzák. E sorrend a prioritás.

  1. zárójel: ( )
  2. függvény: abs(), ^,
  3. egy operandusú operátorok: elõjel, NOT, …
  4. multiplikatív operátorok: *, /, mod, div, AND, ...
  5. additív operátorok: +, –, OR, XOR, ...
  6. relációk: <, >, =, <=, <>, >=, , …
  7. balról jobbra haladás szabálya

A LOGO nyelvû megvalósításban a prioritást is átültethetjük. Az egyszerûség kedvéért csak a négy alapmûveletet használjuk.

A # jel a veremvégjel, a használata a verem megvalósítása miatt szükséges csak.

Az elkészített program automatikus indulásához indító néven adtuk meg a fõeljárást, ami csak a részek meghívását végzi.

Vizsgáljuk meg példaként az alábbi kifejezést.

Ha a kifejezést akár számológép, akár táblázatkezelõ program segítségével szeretnénk kiszámítani, akkor elsõként azt át kell írnunk egysoros alakra. A soros átírás alatt is alkalmaznunk kell szabályokat, például azt, hogy a törtvonal zárójelet is jelent.

(9+3)*2/(5-4/2)

A sorrendi szabályokat a számítógépes programok a megszokottól kissé eltérõen alkalmazzák, ezért fontos ismernünk ezeket. Lényeges eltérés például, hogy a logikai mûveleteket is be szokás sorolni a hagyományos mûveletek közé. A továbbiakban a mûveleteket gyûjtõnéven operátornak, amin végrehajtjuk, azt operandusnak nevezzük.

Milyen szabályokat alkalmaztunk a továbbiakban?

A példából is jól látható, hogy igen körülményes lehet egy kifejezés feldolgozása már akkor is, ha a teljes képletet látjuk. A számolásnál az a jó, ha csak a soron következõ elemekkel kell foglalkozni. A számológéppel való mûveletvégzésnél is az a kényelmes, ha a kijelzõn megjelenõ eredményt használhattuk fel a következõ mûvelet egyik elemeként, mert különben a memóriára is szükségünk lehet.A számítógép aritmetikai egysége is hatékonyabban mûködne akkor, ha az elõzõ lépésben kapott végeredménnyel tudna dolgozni a következõ lépésben. Ez az elvárás a számítógép soros mûködésébõl is következik. A kifejezést ehhez át kell alakítani. Az erre kifejlesztett módszert nevezzük lengyelformára hozásnak.

Egy képlet kiértékelése

A számítógép aritmetikai egységének mûködése Charles Babbage gondolatán alapszik. Egy mûvelethez ismernünk kell az operátort és az operandusait. A gyors mûködés akkor valósítható meg, ha a mûveletek sorrendje megfelel a feldolgozás sorrendjének. A legfõbb gondot a zárójel okozza, ami a sorrendet leginkább felborítja. A lengyelforma fontos tulajdonsága, hogy nem tartalmaz zárójeleket!

A kifejezés átalakításához egy veremre és egy sorra van szükség. Kezdetben mindkettõ üres.Az alábbi hét szabály alkalmazásával a sorban alakítjuk ki a lengyelformát.

  1. A veremben a nyitó zárójelre mindent rá lehet tenni.
  2. A verembe nyitó zárójelet akármire rá lehet tenni.
  3. A verembe kell tenni a jelet, ha az magasabb rendû, mint a verem tetején lévõ.
  4. Ha záró zárójel a következõ jel, akkor a verembõl mindent üríteni kell a sorba az elsõ nyitó zárójelig. A két zárójelet el kell dobni.
  5. Ha a verem tetején lévõ jel azonos vagy magasabb rendû, mint a következõ, akkor addig kell a vermet üríteni a sorba, amíg a verem tetején alacsonyabb rendû jel nem lesz.
  6. Számot egybõl hozzá kell írni a sorhoz.
  7. A kifejezés végére érve a verem tartalmát üríteni kell a sorba.

A fenti szabályokról és a bevitel módjáról a tájékoztató nevû eljárás közöl információt.

A tényleges feldolgozást az lf eljárás végzi el. Ez a képernyõn is megjeleníti az egyes lépések eredményét.

Az lf hívja meg várakozás után a feldolgozó számol eljárást. A zárójel feldolgozását külön eljárásba készítettem el.

A mûveleti sorrend megállapításában a mûvelet eljárás segít, amely a korábbi pior eljárás alapján dönti el a prioritást.

A fentiek alkalmazásával nézzük a példánk eredményét!

9 3 + 2 * 5 4 2 / - /

A lengyelforma feldolgozása

A kapott kifejezés szokatlan lehet elsõ ránézésre, de ideális a feldolgozás szempontjából. Az aritmetikai egység ugyancsak egy verem segítségével dolgozza fel a kifejezést tartalmazó sort. Ennek a feldolgozásnak már lényegesen egyszerûbb szabályai vannak.

  1. A sorból a szám a verembe kerül.
  2. Ha a sor elsõ eleme egyoperandusú mûveleti jel, akkor a verem legfelsõ elemén azt végre kell hajtani, és az eredményt vissza kell írni a verembe.
  3. Ha a sor elsõ eleme kétoperandusú mûveleti jel, akkor a verem legfelsõ és az az alatt lévõ elemén azt végre kell hajtani, és az eredményt vissza kell írni a verembe.
  4. Ha a sor kiürül, a veremben az eredmény található.

A fenti négy szabályt alkalmazva nézzük a képletünket!A feldolgozó szabályok alkalmazása hasonló a relációk és a függvények esetében is. A fenti példák alapján könnyen elkészíthetjük a számítógép aritmetikai egységének egyszerûsített modelljét is. A számol eljárás a feldolgozandó lengyelforma sorában található mûveleti jelek alapján a tényleges mûveleteket végz eljárásokat hívja meg.

Például a szorzás eljárása az alábbi.

A mûveletek a verem tetején lévõ két elemmel hajtódnak végre, és a végeredmény is a verembe kerül.

A verem a feldolgozás végén egyetlen értéket tartalmaz csak majd, ami a végeredmény lesz.

A teljes program LENGYEL.LGP neven le is tölthetõ.

2003. január 22.

Rozgonyi-Borus Ferenc