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