Download Modula Lenguaje de Programación Basado en Objetos

Document related concepts
no text concepts found
Transcript
Anabel Martín González
Lenguajes de Programación
Dra. Ana Lilia Laureano Cruces
• INTRODUCCION
• Antecedentes de “Modula”
• ORGANIZACIÓN DE UN PROGRAMA en “Modula”
• Módulos
• Locales
• Externos
• MODULARIDAD
• TIPOS
Y COMPILACION
DE DATOS Y ESTRUCTURAS DE CONTROL
• PALABRAS
RESERVADAS
• PROCEDIMIENTOS
• EJEMPLOS
ESTANDAR en “Modula”
Y REFERENCIAS
Modula Lenguaje de Programación Basado en Objetos
• Antecedentes de MODULA
FORTRAN
COBOL, ALGOL, LISP
BASIC
Pascal
C
ADA
Modula-2
1955
1960
1965
1970
1975
1980
Niklaus Wirth
(Febrero,1934)
1985
Línea de Tiempo de Lenguajes de Programación
“MODULA” (MODUlar LAnguage)
Modula Lenguaje de Programación Basado en Objetos
• Antecedentes de MODULA
BASADO EN
OBJETOS
+ clases
Ada, Modula 2
(1979)
BASADO EN
CLASES
CLU
(1974)
+ herencia de clases
ORIENTADO
A OBJETOS
Smalltalk
(1972)
Modula Lenguaje de Programación Basado en Objetos
• Módulo
El módulo es la característica principal que distingue a
Modula de otros lenguajes de alto nivel.
Modula
Un programa en Modula
consiste de uno o más
módulos, los cuales
pueden contener varios
módulos locales
dispuestos en alguna
forma jerárquica.
BASIC
Módulo 1
Módulo 2
Módulo 3
Un solo
programa
Módulo N
Comparación entre Modula y BASIC
Modula Lenguaje de Programación Basado en Objetos
• Módulos Locales
Un módulo local define el alcance de los objetos que están
declarados dentro de él o importados hacia él.
Existe anidamiento de
módulos locales.
MODULE ident [prioridad] “;”
{import} [export]
block ident
IMPORT ListaIdent “;”
EXPORT [QUALIFIED] ListaIdent “;”
FROM ident IMPORT ListaIdent “;”
Modula Lenguaje de Programación Basado en Objetos
MODULE A;
MODULE B;
EXPORT x;
VAR x : INTEGER;
END B;
MODULE C;
IMPORT x;
BEGIN
(* Hace algo con x *)
END C;
BEGIN
(* Sentencias de A *)
END A.
• Módulos Externos
Los módulos de un programa librería, módulos externos, se
almacenan en forma compilada, listos para ser ligados a
otros programas.
Se divide en una parte de definición y una de implementación.
DEFINITION MODULE Nombre “;”
Import lists;
Export list;
Definition of exported objects
IMPLEMENTATION MODULE Nombre “;”
END Nombre.
Import lists;
Declaration of exported objects;
Declaration of local objects
BEGIN
Initialization of local and exported objects
END Nombre.
Modula Lenguaje de Programación Basado en Objetos
DEFINITION MODULE CoSin;
EXPORT QUALIFIED F, Func, sin, cos, pi, print, ReadReal;
CONST pi = 3.14159;
TYPE Func = PROCEDURE(REAL) : REAL;
VAR F : Func;
PROCEDURE sin (x : REAL) : REAL;
:
END CoSin.
IMPLEMENTATION MODULE CoSin “;”
IMPORT RealInOut;
CONST epsilon = 0.000001;
PROCEDURE sin (x : REAL) : REAL;
VAR f, s : REAL; i : INTEGER;
BEGIN
:
END
BEGIN
:
END CoSin.
Modula Lenguaje de Programación Basado en Objetos
Parte de
Definición
EXPORT
Parte de
Implementación
IMPORT
Módulo del
Programa
MODULE A
IMPORT
Parte de
Definición
MODULE C
EXPORT
Parte de
Implementación
MODULE B
Vista Esquemática de las Interfaces
Modula Lenguaje de Programación Basado en Objetos
• DEFINITION PART
Contiene las especificaciones de todos aquellos
componentes del módulo que podrán ser utilizados por
otros módulos.
Tipos de Datos – Constantes – Variables – Procedimientos
• IMPLEMENTATION PART
Contiene las especificaciones de los componentes que son
locales para el módulo, esto es, no podrán ser visibles o
usados por otras partes del programa.
Modula Lenguaje de Programación Basado en Objetos
• ARCHIVOS DE ALMACENAMIENTO
.def
.mod
para “definition part”
para “implementation part”
• ARCHIVOS DE COMPILACION
.sym
contiene la información original del archivo
.def en forma comprimida.
.obj ó .lnk
contiene el código objeto intermedio
Modula Lenguaje de Programación Basado en Objetos
• TIPOS DE DATOS
•BYTE
•INTEGER
•CARDINAL
•CHAR
•REAL
•BOOLEAN
•BITSET
•TIPOS ENUMERADOS
Dias = (Lunes, Martes, Miercoles, Viernes);
•POINTER
•ARRAY
•RECORD
Modula Lenguaje de Programación Basado en Objetos
• ESCTRUCTURAS DE CONTROL DE SELECCION
IF expresión THEN secuencia de sentencias
ELSIF expresión THEN secuencia de sentencias
:
ELSE secuencia de sentencias
END;
CASE NombreVar OF
const1 : secuencia de sentencias |
const2 : secuencia de sentencias |
:
ELSE : secuencia de sentencias
END;
Modula Lenguaje de Programación Basado en Objetos
• ESCTRUCTURAS DE CONTROL DE ITERACION
FOR VarControl := expresión TO expresión BY expresión DO
secuencia de sentencias
END;
WHILE expresión DO
secuencia de sentencias
END;
REPEAT
secuencia de sentencias
UNTIL expresión;
LOOP
secuencia de sentencias
END;
Modula Lenguaje de Programación Basado en Objetos
• 40 PALABRAS RESERVADAS
AND
ARRAY
BEGIN
BY
CASE
CONST
DEFINITION
DIV
DO
ELSE
ELSIF
END
EXIT
EXPORT
FOR
FROM
IF
IMPLEMENTATION
IMPORT
IN
LOOP
MOD
MODULE
NOT
OF
OR
POINTER
PROCEDURE
Modula Lenguaje de Programación Basado en Objetos
QUALIFIED
RECORD
REPEAT
RETURN
SET
THEN
TO
TYPE
UNTIL
VAR
WHILE
WITH
• Conversions
PROCEDURE ConvertCardinal (number, width: CARDINAL; VAR str: ARRAY OF CHAR);
PROCEDURE ConvertInteger (number: INTEGER; width: CARDINAL; VAR str: ARRAY OF
CHAR);
• FileSystem
PROCEDURE Again (VAR f: FILE);
PROCEDURE Close (VAR f: FILE);
PROCEDURE Create (VAR f: FILE; medium: ARRAY OF CHAR);
PROCEDURE Delete (VAR f: FILE; FileName: ARRAY OF CHAR);
• InOut
PROCEDURE Read (VAR ch: CHAR);
PROCEDURE ReadCard (VAR i: CARDINAL);
PROCEDURE Write (ch: CHAR);
PROCEDURE WriteLn;
Modula Lenguaje de Programación Basado en Objetos
• MathLib0
PROCEDURE arctan (r: REAL) : REAL;
PROCEDURE cos (r: REAL) : REAL;
PROCEDURE exp (r: REAL) : REAL;
• NumberConversions
PROCEDURE CardToString (c: CARDINAL; VAR str: ARRAY OF CHAR; width:
CARDINAL);
PROCEDURE IntToString (i: INTEGER; VAR str: ARRAY OF CHAR; width: CARDINAL);
PROCEDURE StringToCard (str: ARRAY OF CHAR; VAR c; VAR OK: BOOLEAN);
• RealInOut
PROCEDURE ReadReal (VAR r: REAL);
PROCEDURE WriteReal (r: REAL; width: CARDINAL);
Modula Lenguaje de Programación Basado en Objetos
• Processes
• Storage
• Strings
• System
• Terminal
Modula Lenguaje de Programación Basado en Objetos
• EJEMPLO 1
MODULE FourFuncCalc;
FROM InOut IMPORT WriteString, WriteLn, WriteInt, ReadInt, ReadString;
FROM NumberConversion IMPORT StringToInt;
FROM Strings IMPORT Length;
CONST MAX = 100;
TYPE str80 = ARRAY[0..79] OF CHAR;
VAR stack : ARRAY [1..MAX] OF INTEGER;
tos : INTEGER; (* points to top of stack *)
a, b, num : INTEGER;
s : str80;
done : BOOLEAN;
PROCEDURE Push (i : INTEGER);
BEGIN
IF tos >= MAX THEN
WriteString(‘Stack full’);
WriteLn;
ELSE
stack[tos] := i;
tos := tos + 1;
END;
END Push;
Modula Lenguaje de Programación Basado en Objetos
• EJEMPLO 1 Cont…
PROCEDURE Pop ( ) : INTEGER;
BEGIN
:
END Pop;
BEGIN
tos := 1;
WriteString(‘Four Function Calculator’);
WriteLn;
REPEAT
ReadString(s);
CASE s[0] OF
‘+’ :
a := Pop();
b := Pop();
WriteInt(a+b,5);
Push(a+b); |
‘-’ :
:
END;
UNTIL CAP(s[0]) = ‘Q’;
END FourFunctionCalc.
Modula Lenguaje de Programación Basado en Objetos
• EJEMPLO 2
Modula Lenguaje de Programación Basado en Objetos
• REFERENCIAS BIBLIOGRAFICAS
Budgen D., Software Development with Modula-2, International Computer
Science Series, Addison-Wesley, 1989.
Schildt H., Advanced Modula-2, Osborne McGraw-Hill, 1987.
Koffman E.B., Problem Solving and Structured Programming in Modula-2,
Addison-Wesley, 1988.
Modula Lenguaje de Programación Basado en Objetos