Az Algol68 programozási nyelv

Vezérlési szerkezetek



Az Algol 68 kifejezésnyelv. Ez azt jelenti, hogy minden nyelvi konstrukció egy értékkel rendelkezik, és elvileg állhat értékadás jobboldalán. Utasításként állhat skip, értékadás, eljáráshívás, if, case, for vagy goto. Nincsenek nyelvi I/O utasítások, helyettük standard eljárásokat hívhatunk.

If utasítás

Az if utasítást fi-vel kell lezárni, így a csellengő if problémája is megoldott, valamint az ágakat sem kell blokkba foglalni. Az else if rövidíthető elif-fel.

if i<0 then if j<0 then print( "hello" ) else print( "goodbye" ) fi; fi;

Case utasítás

A case egy egészértékű kifejezés alapján rendre az első, második, harmadik, stb. utasítást vagy blokkot hajtja végre, ha a kifejezés értéke 1, 2, 3, stb. Default ág out-tal adható meg. Ha a kifejezés értéke egyik ágnak sem felel meg, a vezérlés hiba nélkül átugorja a case-t. A case esac-cal zárandó.

case i+4 in j := 0, i := j, print(i+j), out j := 3 esac;

Itt a j := 0, i := j, print(i+j) utasítások hajtódnak végre, ha az i+4 értéke sorban 1, 2 vagy 3. Ha egyik sem, akkor az opcionális out ág hajtódik végre. Az egyes eseteket vessző választja el.

For utasítás

A for általános ciklus, a from, by, to és while részek opcionálisak, alapértelmezett értékük rendre 1, 1, végtelen és true. A while a for speciális esete. A for ciklusváltozója automatikusan deklarált, ciklusmagra lokális, tilos neki értéket adni. A from, by és torészek egyszer értékelődnek ki a ciklus végrehajtása előtt.

for k from 1 by 1 to j+3 while true do utasítások; od;

Itt a from, by és to részeknek sorban az 1,1, végtelen az alapértelmezett értékük és csak egyszer értékelődnek ki. A fenti utasítást így is írhatjuk:

to j+3 do utasítások; od;

A for ciklusváltozója mindig integer és nem szabad deklarálni.

Egy példa while-ra:

while i

Goot utasítás

bed: goto bed;