Languages

  Algol-68 C Pascal Turing
general block structured, expression based language "flat", some expression based features block structured, imperative imperative, has `modules'
expressions
arith +,-,*,/,^
NB.% is int div
+,-,*,/,%
NB.% is int mod
+,-,*,/, div, mod +,-,*,/, **
comparisons =, <>, <, <=, >, >= ==, !=, <, <=, >, >= =, <>, <, <=, >, >= =, not= <, <=, >, >=
logical and, or, not &&, ||, ! and, or, not and, or, not
conditional expression if e then e1
[elsf e' then e2]
else e3 fi
or (e | e1 | e2)
also case exp'n
e ? e1 : e2 n.a. n.a.
statements
assignment x:=e x=e; x:=e x:=e
conditional if e then s1
[elsf e' then s2]
[else s3] fi
if(e) s1
[else s2]
if e then s1
[else s2]
if e then s1
[elsf e' then s2]
[else s3] end if
case case e in s1,s2,... out s esac switch(e) {case e1:s1 ...} case e of e1:s1;... end case e of label e1:s1;... end case
for [for] [i] [from e1] [by e2] [to e3] [while eb] do ... od for(s1;eb;s2)s3 for i:=e1 (to | downto) e2 do s for [decreasing] i:range
s
end for
while see above while( ) while do loop ...
exit when e;
... end loop
repeat n.a. n.a. repeat until e use loop
group begin...end or (...) {...} begin...end begin...end
function result final exp'n return e fnName=e result e
declarations
constants T c=e #define const c=ce const c:=e
variables T x [=e] T x var x:T var x:T
subroutine proc( )void s void p( ) {...} procedure p(...) ... begin ... end procedure p(...) ... end
function proc(...)T e T f(...) {...} function f(...)T ... begin ... end function f(...)T ...end
function result final exp'n return e fnName=e result e
parameters T x T x [var] x:T [var] x:T
types © L.Allison '99
data type mode typedef type type
basic types int real bool char int float char integer real boolean char int real boolean char
structure struct( ) struct( ) record end record end record
field access f of s s.f s.f s.f
pointer ref * ^ pointer to
pointer access implicit or cast *,
-> ptr & field
^ thecollection(x)
special ptr value nil NULL nil nil(thecollection)
union union(...) union record case variant union ... end union
array array T1 of T2 T2 a[size] array [T1] of T2 array T1 of T2
array access a[i] a[i] a[i] a(i)
array slicing m[i:j, ] rows i to j of 2D n.a. m[i] is row i of 2d n.a.
sets n.a. n.a. (use bits) set of T set of T