A Modula3 programozási nyelv

Utasítások, vezérlési szerkezetek

Értékadás, üres utasítás

Értékadás az = jellel történik. Üres utasítás a ; jellel hozható létre.

Szekvencia

A szekvenciát a " ; " jelenti, tehát két utasítás egy pontosvesszővel elválasztva egy szekvencia.

Elágazás

Az elágazás megvalósítása is szokványosan történik. Lehetőség van ELSIF ágak, illetve ELSE ág létrehozására. Egy elágazás általánosan tehát:

IF feltétel THEN utasítások; ELSEIF feltétel THEN utasítások; ... ELSEIF feltétel THEN utasítások; ELSE utasítások;
Példa:
IF x >= 0 THEN IF x < 10 THEN SIO.PutText("one-digit") ELSIF x < 100 THEN SIO.PutText("two-digit") ELSIF x < 1000 THEN SIO.PutText("three-digit") ELSE SIO.PutText("at least four-digit") END; ELSE SIO.PutText("negative") END;

A többszörös elágazás a megszokott CASE utasítással érhető el, mely csak diszkrét típusú változókra működik. Az egyes ágakban feltételként megadható egy-egy külön elem, vagy több alternatív elem, akár tartomány is. Szintaxisa:

CASE kifejezés OF | érték/tartomány => utasítások; ... | érték/tartomány => utasítások; ELSE utasítások; END;
Példa:
SIO.PutText("Choose one of the following: "); SIO.PutText("(1) first, (2) second, (3) third menu item."); CASE SIO.GetInt() OF 1 = > SIO.PutText("first menu item") |2 = > SIO.PutText("second menu item") |3 = > SIO.PutText("third menu item") ELSE SIO.PutText("improprer input") END;

Ciklus

A ciklusoknak megtaláljuk a szokásos típusait.

A WHILE és a REPEAT-UNTIL használata a szokásos. A végtelen LOOP ciklusból az EXIT paranccsal lehet kilépni. A FOR ciklus lokális változóját nem szükséges előre deklarálni. A ciklusváltozó "manuálisan" nem változtatható és a ciklusból kilépve többé nem látható. A ciklusok magját mindenhol utasítássorozatként definiálták, ezért mindig kötelező kitenni az END-et azok után, eléjük viszont nem kell BEGIN. Érdekesség: while és repeat reprezentálása if-fel és loop-pal

WHILE B DO A END = LOOP IF B THEN A ELSE EXIT END END REPEAT A UNTIL B = LOOP A; IF B THEN EXIT END END
Megfordítások:
WHILE B DO A END = IF B THEN REPEAT A UNTIL NOT B END REPEAT A UNTIL B = A; WHILE NOT B DO A END
Példa (WHILE):
VAR b: INTEGER; BEGIN b:=SIO.GetInt(); WHILE b <= 0 DO SIO.PutText("Please enter a positive number"); b:=SIO.GetInt(); END; END
Példa (REPEAT):
VAR x: INTEGER; BEGIN REPEAT x:=SIO.GetInt(); IF y<=0 THEN SIO.PutText("Enter a positive number! ")END; UNTIL x>0; END

Vezérlésátadó utasítások