This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
fordprog:while2017 [2017/02/27 09:34] deva created |
fordprog:while2017 [2017/03/08 17:38] deva |
||
---|---|---|---|
Line 11: | Line 11: | ||
<code> | <code> | ||
program oszto | program oszto | ||
- | integer a; | + | natural a; |
- | integer i; | + | natural i; |
- | integer oszto; | + | natural oszto; |
boolean vanoszto; | boolean vanoszto; | ||
begin | begin | ||
Line 42: | Line 42: | ||
* az angol abc kis és nagybetűi | * az angol abc kis és nagybetűi | ||
* számjegyek (0-9) | * számjegyek (0-9) | ||
- | * ''():+-*<>=_;#'' | + | * ''():+-*<>=_;.#'' |
* szóköz, tab, sorvége | * szóköz, tab, sorvége | ||
* megjegyzések belsejében pedig tetszőleges karakterek állhatnak | * megjegyzések belsejében pedig tetszőleges karakterek állhatnak | ||
Line 50: | Line 50: | ||
=== Kulcsszavak === | === Kulcsszavak === | ||
- | A nyelv kulcsszavai a következők: ''program'', ''begin'', ''end'', ''integer'', ''boolean'', ''true'', ''false'', ''div'', ''mod'', ''and'', ''or'', ''not'', ''skip'', ''if'', ''then'', ''else'', ''endif'', ''while'', ''do'', ''done'', ''read'', ''write'' | + | A nyelv kulcsszavai a következők: ''program'', ''begin'', ''end'', ''natural'', ''boolean'', ''true'', ''false'', ''div'', ''mod'', ''and'', ''or'', ''not'', ''skip'', ''if'', ''then'', ''else'', ''endif'', ''while'', ''for'', ''in'', ''do'', ''done'', ''read'', ''write'' |
=== Azonosítók === | === Azonosítók === | ||
Line 59: | Line 59: | ||
* ''natural'': négy bájtos, előjel nélküli egészként kell megvalósítani; konstansai számjegyekből állnak és nincs előttük előjel | * ''natural'': négy bájtos, előjel nélküli egészként kell megvalósítani; konstansai számjegyekből állnak és nincs előttük előjel | ||
- | * ''bool'': egy bájton kell ábrázolni; értékei: ''false'', ''true'' | + | * ''boolean'': egy bájton kell ábrázolni; értékei: ''false'', ''true'' |
=== Megjegyzések === | === Megjegyzések === | ||
Line 76: | Line 76: | ||
* ''natural'' típusú kifejezések: számkonstansok, natural típusú változók és az ezekből a ''+'' (összedás), ''-'' (kivonás), ''*'' (szorzás), ''div'' (egészosztás), ''mod'' (maradékképzés) infix operátorokkal és zárójelekkel felépített kifejezések. | * ''natural'' típusú kifejezések: számkonstansok, natural típusú változók és az ezekből a ''+'' (összedás), ''-'' (kivonás), ''*'' (szorzás), ''div'' (egészosztás), ''mod'' (maradékképzés) infix operátorokkal és zárójelekkel felépített kifejezések. | ||
- | * ''bool'' típusú kifejezések: ''true'' és ''false'', ''bool'' típusú változók, és két ''natural'' típusú kifejezésből az ''='' (egyenlőség), ''<'' (kisebb), ''>'' (nagyobb) infix operátorral, valamint a bool típusú kifejezésekből az ''&&'' (konjunkció), ''||'' (diszjunkció), ''='' (egyenlőség) infix és a ''not'' (negáció) prefix operátorral és zárójelekkel felépített kifejezések. | + | * ''boolean'' típusú kifejezések: ''true'' és ''false'', ''boolean'' típusú változók, és két ''natural'' típusú kifejezésből az ''='' (egyenlőség), ''<'' (kisebb), ''>'' (nagyobb) infix operátorral, valamint a boolean típusú kifejezésekből az ''and'' (konjunkció), ''or'' (diszjunkció), ''='' (egyenlőség) 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ő: | * Az infix operátorok mind balasszociatívak és a precedenciájuk növevő sorrendben a következő: | ||
* ''and'' ''or'' | * ''and'' ''or'' | ||
Line 82: | Line 82: | ||
* ''<'' ''>'' | * ''<'' ''>'' | ||
* ''+'' ''-'' | * ''+'' ''-'' | ||
- | * ''div'' ''mod'' | + | * ''*'' ''div'' ''mod'' |
== Utasítások == | == Utasítások == | ||
Line 90: | Line 90: | ||
* Olvasás: A ''read('' //változó// '');'' utasítás a megadott változóba olvas be egy megfelelő típusú értéket a konzolról. (Megvalósítása: meg kell hívni a ''be_egesz'' (vagy a ''be_logikai'') eljárást, amit a 4. beadandó leírásához mellékelt C fájl tartalmaz. A beolvasott érték natural típus esetén az ''eax'', logikai típus esetén az ''al'' regiszterben lesz.) | * Olvasás: A ''read('' //változó// '');'' utasítás a megadott változóba olvas be egy megfelelő típusú értéket a konzolról. (Megvalósítása: meg kell hívni a ''be_egesz'' (vagy a ''be_logikai'') eljárást, amit a 4. beadandó leírásához mellékelt C fájl tartalmaz. A beolvasott érték natural típus esetén az ''eax'', logikai típus esetén az ''al'' regiszterben lesz.) | ||
* Írás: A ''write('' //kifejezés// '');'' 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_egesz'' (vagy a ''ki_logikai'') eljárást, amit a 4. beadandó leírásához mellékelt C fájl tartalmaz. Paraméterként a kiírandó értéket (mindkét esetben 4 bájtot) kell a verembe tenni.) | * Írás: A ''write('' //kifejezés// '');'' 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_egesz'' (vagy a ''ki_logikai'') eljárást, amit a 4. beadandó leírásához mellékelt C fájl tartalmaz. Paraméterként a kiírandó értéket (mindkét esetben 4 bájtot) kell a verembe tenni.) | ||
- | * Ciklus: ''while'' //feltétel// ''do'' //utasítások// ''done'' A feltétel logikai kifejezés, a ciklusmag legalább egy utasítást tartalmaz. A megszokott módon, elöltesztelős ciklusként működik. | + | * While ciklus: ''while'' //feltétel// ''do'' //utasítások// ''done'' A feltétel logikai kifejezés, a ciklusmag legalább egy utasítást tartalmaz. A megszokott módon, elöltesztelős ciklusként működik. |
+ | * For ciklus: ''for'' //változó// ''in'' //kifejezés// ''..'' //kifejezés// ''do'' //utasítások// ''done'' A változónak a deklarációs részben deklarált, natural típusú változónak kell lennie, az intervallum határait jelző kifejezések szintén natural típusúak. Az intervallum határai a ciklus első iterációja előtt kiértékelésre kerülnek, és az értékük akkor sem változik meg, ha a kifejezésekben szereplő változók módosulnak. A ciklus változója az első iteráció előtt megkapja az intervallum alsó határának értékét, minden iteráció végén eggyel nő, az utolsó iterációban a felső határral egyezik meg. Ha az alsó határ nagyobb a felsőnél, a ciklus egyszer sem fut le. | ||
* Elágazás: ''if'' //feltétel// ''then'' //utasítások// ''endif'' vagy ''if'' //feltétel// ''then'' //utasítások// ''else'' //utasítások// ''endif'' A feltétel logikai kifejezés, az ágak legalább egy utasítást tartalmaznak. Az elágazások a megszokott módon működnek. | * Elágazás: ''if'' //feltétel// ''then'' //utasítások// ''endif'' vagy ''if'' //feltétel// ''then'' //utasítások// ''else'' //utasítások// ''endif'' A feltétel logikai kifejezés, az ágak legalább egy utasítást tartalmaznak. Az elágazások a megszokott módon működnek. |