Estructuras de Modula-2

Comentarios:
(***********************
* comentario de programa
************************)

(========================
* comentario de sección
=========================)

(*-- comentario de orden --*)

(* comentario al margen *)

Constantes:
CONST Nombre= valor;

Variables:
VAR Nombre : Tipo;

Secuencia:
Secuencia ::= sentencia;

Tipos:
TYPE declaracion = Tipo;

Tipos Enumerados:
TYPE nombre_Tipo = Indentificadores;

Tipos Subrango:
TYPE rango_Tipo = Tipo [Valor inicial .. valor final];

Tipos conjunto:
TYPE tipo_Conjunto = SET OF Tiporeferencial;

Funciones:

PROCEDURE Nombre (Argumento:Tipo;... ); Tipo_Resultado
BEGIN
Sentencias;
END Nombre;

Procedimientos:

PROCEDURE Nombre (Argumento:Tipo;... );
BEGIN
Sentencias;
END Nombre;

Paso de argumentos:

PROCEDURE Nombre (Argumento:Tipo;... );
BEGIN
Sentencias;
END Nombre;

PROCEDURE Nombre (Argumento:Tipo;... );
BEGIN
Sentencias;
END Nombre;

Estructura de un programa completo:
MODULE nombre_programa;
FROM lista_importaciones;

CONST lista_constantes;
TYPE lista_tipos;
VAR lista_variables;
PROCEDURE nombre_proce;
BEGIN
sentencias;
END nombre_proced;

BEGIN
sentencias;
END nombre_programa.

Vectores:
TipoVector = ARRAY Tipo_Indice OF Tipo_Elemento

Matrices:
TipoMatriz = ARRAY Tipo_Indice1, TipoIndice2,... OF
Tipo_Elemento

Vector Abierto:
PROCEDURE ejemplo (X: ARRAY OF Tipovector)

Registros:
RECORD
nombre : TIPO;
(Puede ir las variantes que sean);
nombre : TIPO;
END;

Punteros:
TYPE Tipo_Puntero = POINTER TO Tipo_de_Variable;

Variables Dinámicas:

ALLOCATE (puntero,tamaño);
DEALLOCATE (puntero,tamaño);

Sentencia IF:

IF condicion THEN
sentencia1
ELSE
sentencia2
END;

Sentencia WHILE:

WHILE condicion DO
sentencia
END;

Sentencia FOR:

FOR valor inicial TO valor final [BY +1]
DO
sentencia
END;

Sentencia RETURN:
RETURN expresion;

Sentencia REPEAT:

REPEAT
sentencias
UNTIL
condicion

Sentencia LOOP y EXIT:

LOOP
sentencias
EXIT
END;

Sentencia CASE:
CASE valor OF
valor1: accion1|
valor2: accion2|
valor3: accion3|
ELSE
accion por defecto
END;

Sentencia WITH:
WITH registro DO
secuencia_de_sentencias;
END;

Módulo de Definición:
DEFINITION MODULE Nombre;
...lista de importaciones...
...definiciones...
END Nombre.

Módulo de Implementación:
IMPLEMENTATION MODULE Nombre;
...lista de importaciones...
...definiciones...
BEGIN
...sentencias de inicializacion
END Nombre.