Az olvashatóságot javítandó az Algol68 azonosítókban szerepelhetnek szóköz karakterek. Minden változót deklarálni kell. A deklaráció során megadjuk a változó módját (típusát), majd vesszővel elválasztva azonosítókat. Az Algol68 kifejezés nyelv, azaz az utasításoknak is van visszatérő értékük, azok állhatnak értékadás jobb oldalán. Lehetőségünk van ilyenekre is:
A kifejezéseket unitoknak hívjuk. Szerepük általánosabb, mint a programozási nyelvek legtöbbjében. A leggyakrabban előforduló unit-fajták a következők:
denotation | konstans, pl.: real pi := 3.14; |
változó | pl.: i := 3; |
formula | operátor + operandus(ok) Lehetnek egyoperandusúak vagy kétoperandusúak, több mint 100 beépített operátora van a nyelvnek. Pl.: "abc"+"xyz"; |
slice | résztömb pl.:
begin
[1:10] int vector;
vector[1,4] := (1,2,3,4);
end;
|
szelekció | struktúra egy elemének kiválasztása pl.: szerző of könyv := "A. A. Milne"; |
eljáráshívás | pl.: print(x); |
értékadás | Baloldal (referencia T típus):= jobboldal (T típus) Mivel az éertékadásnak is értéke van, állhat értékadás jobboldalán. Pl.:
begin
[1:3] int a;
int i, j, k;
a[i := j := k] := 3;
end;
|
memória allokáció | Két memóriakezelés lehet verem és heap. Amikor egy eljárás meghívódik egy újabb szint képződik a veremben,
ahol a lokális változók elhelyezkedhetnek. A loc kulcsszóval több tárat lehet kérni a veremben.
loc m típusa az m objektumra mutató pointer (ref m) A programozó használhat heap-et is
pl.: ptr : = heap[1:1000] real; Amikor a memória elfogy, szemétgyűjtő algoritmus csinál helyet. Példák:
begin # valami számolás #
begin # háromszögmátrix és loc demo #
int n; read(n);
[1:n] ref [] real triangle; # n db pointer valós vektorokra #
for k from 1 to n
do
triangle[k] := loc[1:k] real; # k méretű sornak foglalunk helyet a veremben #
for j from 1 to k # adjunk neki értéket #
do triangle[k][j] := k + j od
od
end # a triangle által foglalt terület most már felszabadult #
# teszteljük a szemétgyűjtőt #
ref [] real ptr;
to 1 000 000 # egymillió ismétlés #
do ptr := heap[1:1000] real od
end
|
nil | nullpointer |
casting | kényszerítés módok között: (mód)változó |
választási klóz | Algol 68-ban megengedett, hogy az if és case utasítást unit-ként kezeljük. if felt then ut1 else ut2 fi ugyanaz mint
( felt | ut1 | ut2 ). Választási klóz nem szerepelhet értékadás baloldalán és típusának is függetlennek kell lennie attól,
hogy végül is melyik ág választódik ki. Példák:
x := if i3 then .3/x else z+4.0 fi;
int abs x := if x0 the x else -x fi;
int abs xx := (x0|x|-x); # ugyanaz mint az előző #
w := (i<0|y|z)+(j<0|4.0|z+5);
|
zárt klóz | Deklarációk és utasítások sorozata begin end-ben vagy zárójelpárban. A módot és értéket az utolsó utasítás vagy deklaráció adja. Példák:
k := (int i; read(i); i+1);
int a,b,c;
a := 3 * begin b := 1; c := b+1 end; # a 6, b 1, c 2 lesz #
|
mutatók összehasonlítása | Hasonlít az operátorokhoz, de végtelen sok számú módra működik (végtelen kis precedenciával). Két pointer ugyanarra az objektumra mutat-e: :=: Nilhez is hasonlíthatunk. |
skip | Két jelentése van. Egyrészt nemdefiniált értékű egység (akármilyen módú lehet), helykitöltésre használják. Másrészt üres utasítás, hogy szintaktikailag helyes legyen a program. skip != nil. |
rutinszöveg | Eljárástörzs, amit értékül adhatunk az eljárás változóknak. |