Príloha A – Jazyk na jednej strane

Ťahák. Vysvetlenie každej veci je v kapitole uvedenej v zátvorke.

Kostra programu

Action!
; 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
  …
RETURN

Hodnoty (5)

ZápisPríklad
desiatkové číslo65
šestnástkové číslo$41
znak'A
reťazec"text", úvodzovka vnútri ""

Typy (6, 18–21)

TypBajtovRozsah
BYTE, CHAR10 až 255
CARD20 až 65535
INT2−32768 až 32767
typ POINTER2adresa
typ ARRAY meno(n)n prvkovindexy 0 až n−1
TYPE Meno=[…]súčet položiekzáznam

Deklarácie

Action!
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.

PrioritaOperátoryVýznam
1( )zátvorky
2- (pred hodnotou), @záporné číslo, adresa premennej
3* / MOD LSH RSHnásobenie, delenie, zvyšok, posun bitov
4+ -sčítanie, odčítanie
5= # <> < > <= >=porovnania
6AND &a zároveň / bitové AND
7OR %alebo / bitové OR
8XOR !bitové XOR

Typ výsledku: samé BYTE → BYTE; BYTE s INT → INT; čokoľvek s CARD → CARD.

Príkazy

Action!
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)

PokynVýznam
DEFINE MENO="text"nahrádza meno textom
INCLUDE "D:SUBOR.ACT"vloží súbor
SET adresa=hodnotanastaví prekladač
MODULEdovolí 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 XOR

Menami 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)

Action!
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äť

  1. Program začína v poslednej rutine.
  2. BYTE x=5 je premenná na adrese 5; počiatočná hodnota je BYTE x=[5].
  3. Výraz zo samých BYTE sa počíta v BYTE – 200+100 je 44.
  4. Indexy polí idú od 0 a nikto ich nekontroluje.
  5. Lokálne premenné nezanikajú – rekurzia nefunguje.

Ďalej: Príloha B – Knižnica na jednej strane · Obsah