User Tools

Site Tools


abap2015

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
abap2015 [2016/02/17 09:48]
deva removed
— (current)
Line 1: Line 1:
-===== A beadandóhoz használandó programozási nyelv leírása ===== 
  
-A félév során az alábbi programozási nyelvhez kell fordítóprogramot írni //flex// és //​bisonc++//​ segítségével. 
- 
-A nyelv az [[http://​en.wikipedia.org/​wiki/​ABAP|ABAP]] egyszerűsített változata. 
- 
-Az alábbi példaprogram a bemenetről logikai értékeket és egészeket olvas felváltva. Az egészek közül a 10 és 100 közöttieket összeadja, amíg először hamis értéket nem kap a bemeneten. Az összeget kiírja a kimenetre. 
- 
-Tesztfájlok [[http://​deva.web.elte.hu/​fordprog/​abap2015-tesztfajlok.zip|letölthetőek]]! 
- 
-<​code>​ 
-* Osszegzes 
-PROGRAM osszeg. 
-DATA: 
-  i TYPE I, 
-  s TYPE I, 
-  more TYPE B. 
-MOVE 0 TO s. 
-READ TO more. 
-WHILE more. 
-  READ TO i. 
-  IF i> 10 AND i < 100. 
-    ADD i TO s. 
-  ENDIF. 
-  READ TO more. 
-ENDWHILE. 
-WRITE s. 
-</​code>​ 
- 
-==== A nyelv definíciója ==== 
- 
-=== Karakterek === 
- 
-A forrásfájlok a következő ASCII karaktereket tartalmazhatják:​ 
-  * az angol abc kis és nagybetűi 
-  * számjegyek (0-9) 
-  * ''​():<>​=_,​.''​ 
-  * szóköz, tab, sorvége ​ 
- 
-Minden más karakter esetén hibajelzést kell adnia a fordítónak,​ kivéve megjegyzések belsejében,​ mert ott tetszőleges karakter megengedett. Az ABAP-pal ellentétben ebben a nyelvben számítanak a kis és nagybetűk. 
- 
- 
-=== Azonosítók === 
- 
-A változók nevei, illetve a program neve az angol ábécé kisbetűiből,​ számjegyekből és ''​_''​ jelből állhatnak, és betűvel kell kezdődniük. 
- 
-=== Típusok === 
- 
-  * ''​I'':​ négy bájtos, előjel nélküli egészként kell megvalósítani;​ literáljai számjegyekből állnak és nincs előttük előjel 
-  * ''​B'':​ egy bájton kell ábrázolni,​ literáljai a ''​FALSE''​ és a ''​TRUE''​ 
- 
-=== Megjegyzések === 
- 
-A sor elején álló ''​*''​ karakterektől kezdve a sor végéig. Megjegyzések a program tetszőleges pontján előfordulhatnak,​ a fordítást és a keletkező programkódot nem befolyásolják. 
- 
-=== A program felépítése === 
- 
-A program szignatúrából,​ deklarációs részből és törzsből. A szignatúra tartalma: ''​PROGRAM''​ név ''​.'',​ ahol a név tetszőleges azonosító. A deklarációs részt ''​DATA:''​ vezeti be. A deklarációs rész nem kötelező, de ha van, akkor legalább egy változódeklarációt tartalamaz. A törzs utasításokat tartalamaz, de lehet üres is. 
- 
-== Változódeklarációk == 
- 
-Minden változót név ''​TYPE''​ típus alakban, egy vesszőkkel elválasztott listában kell deklarálni,​ minden változóhoz külön feltüntetve a típusát 
- 
-== Kifejezések == 
- 
-  * ''​I''​ típusú kifejezések:​ számliterálok,​ ''​I''​ típusú változók. 
-  * ''​B''​ típusú kifejezések:​ ''​TRUE''​ és ''​FALSE'',​ ''​B''​ típusú változók, két ''​I''​ típusú kifejezésből az ''​=''​ (egyenlőség),​ ''<''​ (kisebb), ''>''​ (nagyobb) infix operátorral,​ valamint az ezekből ''​AND''​ (konjunkció),​ ''​OR''​ (diszjunkció) infix és a ''​NOT''​ (negáció) prefix operátorral és zárójelekkel felépített kifejezések. 
-  * Az infix operátorok mind balasszociatívak és a precedenciájuk növevő sorrendben a következő:​ 
-    * ''​OR''​ 
-    * ''​AND''​ 
-    * ''​=''​ 
-    * ''<''​ ''>''​ 
- 
-== Utasítások == 
-  
-  * Értékadás:​ ''​MOVE''​ kifejezés ''​TO''​ változó ''​.''​ alakú. A változó és a kifejezés típusa csak azonos lehet. 
-  * Olvasás: A ''​READ TO''​ változó ''​.''​ utasítás a megadott változóba olvas be egy megfelelő típusú értéket a standard bemenetről. (Megvalósítása:​ meg kell hívni a be eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. A beolvasott érték az eax (logikai típus esetén az al) regiszterben lesz.) 
-  * Írás: A ''​WRITE''​ utasítás ''​.''​ a megadott kifejezés értékét a képernyőre írja (és egy sortöréssel fejezi be). (Megvalósítása:​ meg kell hívni a ki eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. Paraméterként a kiírandó értéket (mindkét esetben 4 bájtot) kell a verembe tenni.) 
-  * Aritmetika: 
-    * ''​ADD''​ kifejezés ''​TO''​ változó ''​.''​ 
-    * ''​SUBTRACT''​ kifejezés ''​FROM''​ változó ''​.''​ 
-    * ''​MULTIPLY''​ változó ''​BY''​ kifejezés ''​.''​ 
-    * ''​DIVIDE''​ változó ''​BY''​ kifejezés ''​.''​ 
-    * ''​MOD''​ változó ''​BY''​ kifejezés ''​TO''​ változó ''​.'' ​ 
-  * Ciklus: ''​WHILE''​ feltétel ''​.''​ utasítások ''​ENDWHILE''​ ''​.''​ 
-    * A feltétel logikai kifejezés, és a ciklus belsejében legalább egy utasításnak kell lennie. A megszokott módon, elöltesztelős ciklusként működik. 
-  * Elágazás: 
-    * ''​IF''​ feltétel ''​.''​ utasítások ''​ENDIF''​ ''​.''​ 
-    * ''​IF''​ feltétel ''​.''​ utasítások ''​ELSE''​ ''​.''​ utasitasok ''​ENDIF''​ ''​.''​ 
-    * A feltétel logikai kifejezés, és az egyes ágakban legalább egy-egy utasítás van. A megszokott módon működik. 
abap2015.1455698939.txt.gz · Last modified: 2016/02/17 09:48 by deva