A Modula2 programozási nyelv

Vezérlési szerkezetek

Vezérlési szerkezetek

üres utasítás

 Az utasításokat pontosvesszôvel kell elválasztani egymástól, az END blokklezáró elé nem kell kitenni a pontosvesszôt. Az üres utasítás szintaktikailag az üres karaktersorozatnak felel meg.
 

értékadás

 Az értékadás a bal oldalon álló változóba helyezi a jobb oldalon álló kifejezés értékét. A két oldal típusának meg kell egyeznie, kivéve, ha mind a kettô egész szám. Sztring értékadásnál csak hosszabb sztringnek adható értékül rövidebb, a sztring végére lezáró nulla byte kerül. Példák:

Szam := 123
Sztring := "Hello world!"
 

Ejáráshívás

 Az eljáráshívás tartalmaz egy aktuális paraméterlistát, melynek az aktuális paraméterei sorrend szerint megfelelnek a formális paramétereknek. A Modula-2 az érték szerinti és a cím szerinti paraméterátadási formát ismeri.
 

Szekvencia

 Az egymás után leírt utasítások sorozatát pontosvesszôvel kell elválasztani. Szintaxis:

Utasitas1; Utasitas2
 

Elágazás

 Az elágazás egy logikai kifejezést értékel ki és annak eredményétôl függôen hajtja végre az elágazás egyik vagy másik felét. Lehetôség van több ág definiálására is, ekkor a kiértékelés a felírás sorrendjében hajtódik végre és az elsô olyan utasítássorozat fut le, amelynek a feltétele igaz volt. Szintaxis:

IF Kifejezes THEN Utasitas END
vagy
IF Kif1 THEN Ag1 ELSIF Kif2 THEN Ag2 ... ELSIF KifN THEN AgN END
vagy
IF Kifejezes THEN IgazAg ELSE HamisAg END
vagy
IF Kif1 THEN Ag1 ELSIF Kif2 THEN Ag2 ... ELSIF KifN THEN AgN ELSE EgyikAgSem END
 

Többszörös elágazás

 A CASE utasítás egy kifejezés értéke alapján választ ki végrehajtásra egy utasítássorozatot. A kifejezés predefinit elemi típusú (kivéve a nem diszkrét típusok), felsorolási típusú és részintervallum típusú lehet. A variánskijelölô kifejezések konstansok kell legyenek és diszjunk eseteket kell lefedniük. Ha egyik felsorolt alternatívánál sem szerepel a kifejezés értéke akkor a program abortál, hacsak nincs ELSE ág megadva. Példa:

 CASE azEredmeny OF
  1 :
    eljaras1 |
  0, 2, 5 :
    eljaras2 |
  3, 4, 6 :
    eljaras3 |
  7 .. 9, 11 :
    eljaras4
  ELSE
    eljaras5
  END

Ciklus

 Az elöltesztelôs ciklusban elôször a kifejezés értékelôdik ki; ha igaz, a ciklus magját képezô utasítássorozatot fut le és a ciklus újrakezdôdik. Ha a kifejezés értéke hamis, a program futása a ciklust követô utasítással folytatódik. Szintaxis:

 WHILE Kifejezes DO Utasitas END

 A hátultesztelôs ciklusnak elôször a magja fut le és ezután értékelôdik ki a kifejezés; ha hamis, a ciklus újrakezdôdik. Ha a kifejezés értéke igaz, a program futása a ciklust követô utasítással folytatódik. Szintaxis:

 REPEAT Utasitas UNTIL Kifejezes

 A számlálós ciklusban egy változó értéke lépked elôre meghatározott kezdôértéktôl végértékig adott növekménnyel, miközben minden lépésben végrehajtódik a ciklusmag is. A növekmény egy konstans érték lehet. A ciklusváltozónal értéket adni a ciklusmagban hiba, a ciklus terminálása után a változó értéke definiálatlan. Szintaxis:

FOR Valtozo := Kezdo TO Veg DO Utasitas END
vagy
FOR Valtozo := Kezdo TO Veg BY Novekmeny DO Utasitas END

 A végtelen ciklusnak nincsen feltétele, explicit kell belôle kilépni. Általában párhuzamos folayamtokban használatos, ahol nem lehet elôre pontosan tudni, mikor és milyen feltétellel kell behejezni a ciklust. Szintaxis:

LOOP Utasitas END

 Az összes ciklusból bármikor ki lehet lépni az EXIT utasítással.