Príloha A – Jazyk na jednej strane
Ťahák. Vysvetlenie každej veci je v kapitole uvedenej v zátvorke.
Kostra programu
; komentár do konca riadka
DEFINE MAX="10" ; mená pre texty a čísla (17)
TYPE Point=[BYTE x, y] ; typ záznamu (21)
BYTE score ; globálne premenné (16)
PROC Helper(BYTE n) ; procedúra (3, 14)
BYTE i ; lokálne premenné – pred prvým príkazom
…
RETURN
BYTE FUNC Twice(BYTE n) ; funkcia (15)
RETURN(n*2)
PROC Main() ; program začína v POSLEDNEJ rutine
…
RETURNHodnoty (5)
| Zápis | Príklad |
|---|---|
| desiatkové číslo | 65 |
| šestnástkové číslo | $41 |
| znak | 'A |
| reťazec | "text", úvodzovka vnútri "" |
Typy (6, 18–21)
| Typ | Bajtov | Rozsah |
|---|---|---|
BYTE, CHAR | 1 | 0 až 255 |
CARD | 2 | 0 až 65535 |
INT | 2 | −32768 až 32767 |
typ POINTER | 2 | adresa |
typ ARRAY meno(n) | n prvkov | indexy 0 až n−1 |
TYPE Meno=[…] | súčet položiek | záznam |
Deklarácie
BYTE a, b ; premenné
BYTE lives=[3] ; s počiatočnou hodnotou
BYTE colour=710 ; na adrese (24)
BYTE ARRAY t(10) ; pole
BYTE ARRAY days=[31 28 31] ; pole s hodnotami
CHAR ARRAY name="Atari" ; reťazec: name(0) je dĺžka (19)
CHAR ARRAY buffer(40) ; miesto pre reťazec
BYTE POINTER p ; ukazovateľ (20)
Point here ; záznam
Point POINTER pp ; ukazovateľ na záznam
Operátory (7, 9, 22)
Od najvyššej priority; pri rovnakej zľava doprava.
| Priorita | Operátory | Význam |
|---|---|---|
| 1 | ( ) | zátvorky |
| 2 | - (pred hodnotou), @ | záporné číslo, adresa premennej |
| 3 | * / MOD LSH RSH | násobenie, delenie, zvyšok, posun bitov |
| 4 | + - | sčítanie, odčítanie |
| 5 | = # <> < > <= >= | porovnania |
| 6 | AND & | a zároveň / bitové AND |
| 7 | OR % | alebo / bitové OR |
| 8 | XOR ! | bitové XOR |
Typ výsledku: samé BYTE → BYTE; BYTE s INT → INT; čokoľvek s CARD → CARD.
Príkazy
x=výraz ; priradenie (7)
x==+1 x==-1 x==*2 ; skrátené priradenie
p^=5 t(i)=x r.pole=1 ; cez ukazovateľ, do prvku, do položky
Meno(a, b) ; volanie procedúry
x=Meno(a, b) ; volanie funkcie
IF podm THEN … FI ; (9)
IF podm THEN … ELSE … FI
IF podm THEN … ELSEIF podm THEN … ELSE … FI
DO … OD ; nekonečná slučka (10)
WHILE podm DO … OD ; (11)
DO … UNTIL podm OD ; (12)
FOR i=a TO b DO … OD ; (13)
FOR i=a TO b STEP s DO … OD
EXIT ; von z najbližšej slučky
RETURN ; koniec procedúry
RETURN(výraz) ; koniec funkcie s výsledkom
[$A9 $00] ; blok strojového kódu (25)
Pokyny prekladaču (17, 23)
| Pokyn | Význam |
|---|---|
DEFINE MENO="text" | nahrádza meno textom |
INCLUDE "D:SUBOR.ACT" | vloží súbor |
SET adresa=hodnota | nastaví prekladač |
MODULE | dovolí globálne deklarácie medzi rutinami |
Vyhradené slová
Nedajú sa použiť ako mená:
AND ARRAY BYTE CARD CHAR DEFINE DO ELSE ELSEIF EXIT FI FOR FUNC IF INCLUDE INT LSH
MOD MODULE OD OR POINTER PROC RETURN RSH SET STEP THEN TO TYPE UNTIL WHILE XORMenami nemajú byť ani rutiny a premenné knižnice (Print, Stick, color, device, EOF …) – vlastná premenná s takým menom ich zakryje. Veľké a malé písmená sa nerozlišujú.
Rozšírenia action26 (;@modern, 35–42)
CONST MAX=10 ; konštanta
TYPE Light=ENUM [RED, GREEN] ; vymenovaný typ; hodnota Light.RED
BYTE ARRAY grid(4,6) ; viacrozmerné pole
CASE x OF ; výber
WHEN 1 THEN …
WHEN 2, 3 THEN …
WHEN 4 TO 9 THEN …
WHEN 10 TO 20 IF podm THEN …
ELSE …
ESAC
y=(a>b) ; porovnanie ako 1/0
y=IF a>b THEN a ELSE b FI ; IF ako hodnota
y=CARD(a)+b ; pretypovanie
"text\{RETURN}" ; špeciálne znaky
ORG $CB … ENDORG ; deklarácie na adrese
ORG $4000 BANK 1 … ENDORG ; dáta v banke
ALIGN 1024 ; zarovnanie
ASM … ENDASM ; assembler
BYTE ARRAY d=FILE "súbor" ; súbor ako pole
BYTE ARRAY d=PACK FILE "súbor" ; zbalený
CHAR ARRAY t=PACK "text" ; zbalený text
Päť pascí, ktoré treba vedieť naspamäť
- Program začína v poslednej rutine.
BYTE x=5je premenná na adrese 5; počiatočná hodnota jeBYTE x=[5].- Výraz zo samých
BYTEsa počíta vBYTE– 200+100 je 44. - Indexy polí idú od 0 a nikto ich nekontroluje.
- Lokálne premenné nezanikajú – rekurzia nefunguje.