Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MODULA-2
Programación 2
Curso 2009
InCo
Módulos
Los programas (ej:PASCAL) usan en
general funciones y procedimientos “de
biblioteca”
En Modula-2 las bibliotecas se organizan
en módulos (de biblioteca)
Biblioteca
Módulo
M1 M2 ... Mn
Módulos (2)
Un módulo contiene un número de entidades de
exportación.
Entidades posibles:
Tipos
Constantes
Variables
Procedimientos y funciones
Exportación: disponibles para ser utilizados por otros
módulos.
Cada módulo tiene también un nombre.
Los “programas principales” son también llamados
módulos.
Se distinguen:
Módulos de biblioteca
Módulo Principal.
Módulos (3)
Estructura de un programa (módulo principal) :
MODULE nombre;
<lista de importaciones>
<declaraciones>
BEGIN
<instrucciones>
END nombre
Importación:
Estructura de Datos
Conjunto de variables (de estado)
Cada variable puede contener ciertos valores (datos)
Estado de una variable x:
x tiene valor “v” (v es un valor permitido de la variable)
x está indefinida (no tiene valor)
Estructura de Programas (M-2) (2)
Expresiones
Variables y constantes denotan (representan)
valores
Los valores pueden combinarse a través de
operaciones para computar otros valores
Instrucciones
Estructuras de control
Asignación (x:=e;)
Secuencia
Selección
Iteración
Procedimientos
Instrucciones
Asignación
x:= e;
Secuencia:
s1;s2
Selección:
IF expresion(BOOLEAN) THEN
s1;
ELSEIF expr THEN s2;
…
ELSEIF expr THEN s(n-1);
ELSE sN;
END
Instrucciones
Iteración:
WHILE expr(BOOLEAN) DO
s1;
END
Procedimientos y Funciones
En general, mismas reglas que en PASCAL
Pasaje de parámetros:
Por Valor
Por Referencia (VAR)
Estructurados
Tipos Elementales
Los valores no se pueden descomponer
en partes (básicos, atómicos)
BOOLEAN
INTEGER
CARDINAL
REAL
CHAR
Enumeraciones
Subrangos
Tipos Elementales
El tipo INTEGER:
Valores: un rango de enteros (depende de la
versión del lenguaje)
Literales: se usa la notación decimal (octal y hexa)
Operadores
Aritméticos: +, -, *, DIV, MOD
Relaciones: <, <=, =, <> (#), >, >=, siguiendo casi las
mismas reglas que en Pascal.
Tipos Elementales
El tipo CARDINAL:
Tiene como valores números naturales (enteros no
negativos) hasta un máximo.
Para hallar ese máximo se utiliza la función
estándar MAX(T) (donde T es el tipo básico)
aplicado al tipo CARDINAL.
Tipos Elementales
Algunas diferencias con PASCAL:
+, -, * sobrecargados (igual que en PASCAL)
CAST(INTEGER,…) CARDINAL
CAST(CARDINAL,…)
INTEGER
CAST(REAL,…)
CAST(INTEGER,…) REAL
Tipos Elementales
Excepción: valores de tipos subrangos se
pueden combinar con valores del tipo
base del subrango.
Tipos Estructurados
Vectores y Matrices (“arreglos”)
ARRAY <tipoindice> OF <tipo>
Mismas reglas que en PASCAL
Indice: [i]
miArreglo[i], miArray[2];
Literales: {}
RECORD
nombre, apellido: Nombre;
CASE: estado: EstadoCIvil OF
soltero:
casado: cant_hijos: CARDINAL;
fecha_matrimonio: Fecha
END
Abstracción / Descomposición
Se descompone el programa en módulos.
Debe acordarse cual es la comunicación entre
ellos.
Que entidades importan/exportan
En caso que sean procedimientos, especificar QUE deben
hacer (y no es necesario conocer COMO)
Para que módulos?
Los módulos pueden desarrollarse y compilarse
separadamente.
Para obtener una versión ejecutable debe efectuarse el
proceso de linking.
Cambios en la implementación de entidades importadas
no obligan a recompilar todo el sistema.
Solo se recompila el módulo de implementación y se
reconecta todo el sistema.
Naturalmente, los “códigos incompletos” generados por
el compilador son también mantenidos en archivos.
Modulo de Biblioteca
Módulo de Definición
Módulo de Implementación
Modulo de definición
DEFINITION MODULE nombre;
<lista de importaciones>
<lista de declaraciones sintácticas (i)>
END
Ejemplo:
PROCEDURE: ReadCArd(VAR x:CARDINAL)
[1] [2]
Errores de
compilación
Compilación y creación del ejecutable
(linking)
[1]: El compilador no accede al código objeto de
los módulos referenciados.
Modulo de Definición
Modulo de Implementación.
Instalación del compilador
En el curso se trabajará con el compilador
Native XDS-x86 para Windows.
xc =compile archivo1.mod
xc =c archivo1.mod (abreviación)
[1] [2]
Errores de
compilación
Creación del ejecutable (linking) (2)
(* Input and output of character and string types over default channels. The
read result
is of the type IOConsts.ReadResults.
*)
CONST
pi = 3.141592;
exp1 = 2.718281;
…
PROCEDURE power (base, exponent: REAL): REAL;
(* Returns the value of the number base raised to the power exponent *)
END RealMath.
Algunas diferencias entre PIM y
estándar ISO
Existen varias definiciones del lenguaje Modula-2, cada
compilador utiliza una de ellas.