Az ABC programozási nyelv

Alprogramok, modulok

FÜGGVÉNYEK, ELJÁRÁSOK

A nyelvben függvények és eljárások definiálását a HOW TO kulcsszóval kell kezdeni. Ha eljárást írunk, akkor az eljárás neve (akár több szóból is állhat), illetve a bemenő paraméterek következnek, majd egy kettőspont után az utasítások. Tehát a szintaxis a következő:
HOW TO ELJÁRÁS NÉV paraméterek: utasítások.
Például:

HOW TO CAN'T DO verb, object: WRITE "I can't do that!" /

Függvények definiálására három lehetőség van. Ezek az argumentumaik számában különböznek. Mindhárom esetben a HOW TO kulcsszót a RETURN-nak kell követnie. Ha a függvénynek nincsen egyetlen argumentuma sem, akkor a RETURN után a függvény nevét kell megadni, majd egy kettőspont után az utasításokat. Tehát a szintaxis:

HOW TO RETURN f: utasítások

Ha a függvénynek egy argumentuma van, akkor azt a következőképpen lehet megadni:

HOW TO RETURN f x: utasítások.

Az utolsó eset, amikor a függvénynek több, mint egy argumentuma van. Ekkor az argumentumok megadására függvény neve előtt és után is lehetőségünk van:

HOW TO RETURN x f y: utasítások.

A függvényeken és eljárásokon kívül lehetőség van predikátumok definiálására is. Ehhez a HOW TO után a REPORT kulcsszót kell beírni, amit argumentum nélküli esetben a predikátum neve követ:

HOW TO REPORT pr: utasítások.

Egy- vagy több argumentumú predikátumok definiálásakor a függvényeknél hasonló módon kell eljárni:

HOW TO REPORT pr x: utasítások.
HOW TO REPORT x pr y: utasítások.

Alprogramok írásakor szükségünk lehet globális változókra. Ehhez a SHARE kulcsszó szükséges. Utána kell megadni a használni kívánt változók neveit (amik nem mások, mint referenciák). A többi programozási nyelvhez hasonlóan ezt az alprogramokon belül az utasítások elé kell helyezni.
A programozó által definiált alprogramokra a nevükkel, és argumentumaik felsorolásával hivatkozhatunk. Például:

CAN’T DO verb,object.

Előredefiniált függvények, eljárások, kifejezések

Minden típushoz tartoznak beépített függvények, eljárások, kifejezések. Nézzük ezeket sorra:

Számok

~x --- x közelítő értéke
Exact value of x --- x pontos értéke.
+x, x+y, x-y, -x, x*y, x/y --- az aritmetikai műveletek.
x**y --- x az y-adik hatványon.
root x, n root x --- négyzetgyök x, illetve n-edik gyök x.
abs x, sign x --- x abszolút értéke, illetve signum x.
round x, floor x, ceiling x --- x kerekített, fölfele kerekített, illetve lefele kerekített értéke.
n round x --- x-et n számjegyig kerekíti.
a mod n --- a-nak n-nel vett osztási maradéka.
*/x --- x számlálója.
/*x --- x nevezője.
e, exp x --- természetes logaritmus alapja, illetve az exponenciális függvény.
log x, b log x --- természetes logaritmus, illetve b alpaú logaritmus.
pi, sin x, cos x, tan x, arctan x --- trigonometrikus függvények, ahol x radiánban van.

Szövegek

t^u --- t és u konkatenálása.
t^^n --- t szöveg n-szeri ismétlése.
lower t --- t szöveg kisbetűssé való alakítása.
upper t --- t szöveg nagybetűssé való alakítása.
stripped t --- t szöveg kezdő- és végződő SPACE-jeinek levágása.
split t --- t szöveg felbontása szavakká.
t@p --- t szöveg, a p-edik karaktertől kezdve.
t|q --- t szöveg, a q-adik karakterig.
t@p|q --- a t szöveg, a p-edik karaktertől kezdve, a q karakter hosszan.
"ABCD"@2|1 = "BCD"|1 = "B"

Listák

Listákat a {} segítségével tudunk létrehozni. Ez önmagában az üres lista. Ha szeretnénk elemeket a listába, akkor azokat fel kell sorolni:
{1; 2; 2; ...},{1..9}, {"a".."z"}

REMOVE kifejezés FROM list --- lista egy elemének eltávolítása.
INSERT kifejezés IN list --- egy elem beszúrása a listába.

Táblák

Táblákat a listákhoz hasonlóan tudunk létrehozni:
{[„Jan"]: 1; ["Feb"]: 2; ...}
keys table --- a table tábla kulcsainak listája
table [expr] --- a table tábla egy eleme.

Vonatok (trains)

#train --- a vonat elemeinek száma.
e#train --- igaz, ha a vonat elemeinek száma megegyezik e értékével, hamis, ha nem.
e in train, e not.in train --- eldönti, hogy egy elemet tartalmaz –e a vonat, vagy sem.
min train --- a vonat legkisebb eleme.
max train --- a vonat legnagyobb eleme.
train item n --- a vonat n-edik eleme.
choice train --- a vonat egy véletlenszerűen kiválasztott eleme.