La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco.

Presentaciones similares


Presentación del tema: "Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco."— Transcripción de la presentación:

1 Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco

2 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Pascal es un lenguaje de programación desarrollado por Niklaus Wirth a principios de los 80s. Pascal es un lenguaje de programación desarrollado por Niklaus Wirth a principios de los 80s. Fue desarrollado con fines didácticos, pero debido a su claridad y capacidad pronto se convirtió en un lenguaje de desarrollo. Fue desarrollado con fines didácticos, pero debido a su claridad y capacidad pronto se convirtió en un lenguaje de desarrollo. Es un lenguaje multi-paradigma: su estructura esta basada en programación estructurada y las últimas versiones aceptan programación orientada a objetos. Es un lenguaje multi-paradigma: su estructura esta basada en programación estructurada y las últimas versiones aceptan programación orientada a objetos. Herederos de esta claridad y capacidad son los lengujaes Modula Eiffel y Delphi. Herederos de esta claridad y capacidad son los lengujaes Modula Eiffel y Delphi.

3 Lenguaje Pascal: Ana Laureano_UAM-A Pascal La estructura de un programa en Pascal es de la siguiente forma: La estructura de un programa en Pascal es de la siguiente forma: PROGRAM nombre del programa expresiones declarativas subprogramas internos BEGIN expresiones de ejecución END. Los enunciados son la base del programa y a excepción del enunciado de asignación, todos empiezan con una palabra clave.

4 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Los comentarios se escriben encerrando el texto entre Los comentarios se escriben encerrando el texto entre (* Comentario *) (* Comentario *) { Comentario } { Comentario } Tipos de Datos: Se dividen en 2 clases, los numéricos (integer y real) y los no numéricos (character, string y logical). Tipos de Datos: Se dividen en 2 clases, los numéricos (integer y real) y los no numéricos (character, string y logical).

5 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Asociado al tipo existen varias clases de ellos, de acuerdo al número de bits disponible para su almacenamiento, por lo que puede haber 2 clases de enteros: shortint y longint. Asociado al tipo existen varias clases de ellos, de acuerdo al número de bits disponible para su almacenamiento, por lo que puede haber 2 clases de enteros: shortint y longint. Variables: son aquellos valores que toman diferentes valores durante la ejecución del programa. Variables: son aquellos valores que toman diferentes valores durante la ejecución del programa. Constantes: usadas para denominar los valores de un tipo en particular y cuyo valor no cambia a lo largo de la ejecución del progrma. Constantes: usadas para denominar los valores de un tipo en particular y cuyo valor no cambia a lo largo de la ejecución del progrma. Identificadores: utilizados para los nombres de las variables y constantes. Consiste entre 1 y 63 caracteres alfanuméricos y deben empezar con una letra, no es sensible a mayúsculas o minúsculas, esto es, MINOMBRE significa lo mismo que MiNombre. Identificadores: utilizados para los nombres de las variables y constantes. Consiste entre 1 y 63 caracteres alfanuméricos y deben empezar con una letra, no es sensible a mayúsculas o minúsculas, esto es, MINOMBRE significa lo mismo que MiNombre.

6 Lenguaje Pascal: Ana Laureano_UAM-A Una regla de oro En Pascal no se puede utilizar nada que no haya sido previamente declarado. En Pascal no se puede utilizar nada que no haya sido previamente declarado. Nada equivale a: 1) constantes, 2) variables, 3) tipos derivados y definidos por el usuario y 4) abstracciones procedurales y funcionales. Nada equivale a: 1) constantes, 2) variables, 3) tipos derivados y definidos por el usuario y 4) abstracciones procedurales y funcionales.

7 Lenguaje Pascal: Ana Laureano_UAM-A Programa alumno (mòdulo 100) Const Type Var x,y,z,a,b,c,d : real; Procedure nom1 (Var x,y,z: integer, d:real); Const Type Var Procedure (argumentos) Function (argumentos) Begin End: Function nom2 (x,y,z: real): Real; Const Type Var Procedure (argumentos) Function (argumentos) Begin End; Begin (* programa principal*) Procedure nom1 (x,y,z,d); C:= nom2 (a,b,c); End. (* alumno*)

8 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Asignación numérica: El propósito es calcular el valor de una expresión numérica y asignarla a una variable. Su forma general es: Asignación numérica: El propósito es calcular el valor de una expresión numérica y asignarla a una variable. Su forma general es: variable = exprx := a + b Entradas y salidas de datos: Entradas y salidas de datos: Cuenta con formato libre, en ambos casos: Read o ReadLn y tiene la forma: Read (list); Readln (list); Read (list); Readln (list); donde list es una lista de variables separadas por comas:Read (A, B, C);

9 Lenguaje Pascal: Ana Laureano_UAM-A Pascal La declaración Write/WriteLn, se utiliza para la salida de datos. Su forma general es: Write (list) WriteLn (list) Donde list puede ser una lista de constantes, variables, expresiones y cadenas de caracteres separadas por comas: Write (‘la raiz cuadrada de’, 2, ‘es’, sqrt(2.0)) También podemos usar la declaración mascaras para los reales WriteLn (ExpresionReal:AnchoTotal:Decimales); X := 78.291 WriteLn (x:0:1);78.3{con cero aseguro que no hay blancos} WriteLn (x:0:2);78.29{que preceden al numero} WriteLn (x:0:0);78 WriteLn (‘x= ‘,x:0:3);x= 78.291 WriteLn (x:0:4);78.2910

10 Lenguaje Pascal: Ana Laureano_UAM-A Tipos de variables Var Var a: integer; a: integer; b: real; b: real; opcion: char; opcion: char; apellido: string apellido: string Encontre: boolean Encontre: boolean El tipo string puede almacenar hasta 255 caracteres El tipo string puede almacenar hasta 255 caracteres

11 Lenguaje Pascal: Ana Laureano_UAM-A Tipos derivadas Un tipo de variable derivada es aquel que se basa en los tipos básicos. Un tipo de variable derivada es aquel que se basa en los tipos básicos. Arreglos Arreglos Registro Registro Conjunto Conjunto Definidos por el usuario Definidos por el usuario

12 Lenguaje Pascal: Ana Laureano_UAM-A Arreglos En Pascal el tipo ARRAY sirve para almacenar elementos del mismo tipo de forma secuencial. Los datos tipo ARRAY pueden ser: unidimensionales, bidimensionales, tridimensionales n- dimensionales. En Pascal el tipo ARRAY sirve para almacenar elementos del mismo tipo de forma secuencial. Los datos tipo ARRAY pueden ser: unidimensionales, bidimensionales, tridimensionales n- dimensionales.

13 Lenguaje Pascal: Ana Laureano_UAM-A Arreglos Var Var X : array [1..5] of integer; X : array [1..5] of integer; X : array [1..5] of real; X : array [1..5] of real; X : array [1..5] of boolean; X : array [1..5] of boolean; X : array [1..5] of char; X : array [1..5] of char; X : array [1..5] of string; X : array [1..5] of string;

14 Lenguaje Pascal: Ana Laureano_UAM-A Array n-dimensional Const Const TamMax = 30; TamMax = 30; Type (* Tipos definidos por el usuario*) Type (* Tipos definidos por el usuario*) Ventas : array [1..TamMax, 1..5] of integer; Ventas : array [1..TamMax, 1..5] of integer; Var Var Ventas : tipoventas; Ventas : tipoventas;

15 Lenguaje Pascal: Ana Laureano_UAM-A El Tipo Registro Este tipo de datos permite agrupar datos de diferente tipo. En Pascal se designan como RECORD. Este tipo de datos permite agrupar datos de diferente tipo. En Pascal se designan como RECORD. Type (* Tipos definidos por el usuario*) Type (* Tipos definidos por el usuario*) Record RegPers = Record Nombre: string [20]; Nombre: string [20]; NumTel: string [9]; NumTel: string [9]; Sexo : char; Sexo : char; End; (RegPers) End; (RegPers)Var persona : RegPers; persona : RegPers; MuchasPer: array [1..TamMax] of RegPers; MuchasPer: array [1..TamMax] of RegPers;

16 Lenguaje Pascal: Ana Laureano_UAM-A Cómo accesar los campos de un registro Cómo accesar los campos de un registro Laura5761-2779f nombre numtel sexo Emiliano5561-8779m Javier7561-5779m Laura4561-2759f Pedro3461-2379m Ana3061-2279f Mauricio9161-2979m 1 n... Persona MuchasPer

17 Lenguaje Pascal: Ana Laureano_UAM-A Persona.Nombre := ‘Laura’; Persona.Nombre := ‘Laura’; Persona.NumTel := ‘5761-2779’; Persona.NumTel := ‘5761-2779’; Persona.Sexo := ‘f’; Persona.Sexo := ‘f’; With Persona DO With Persona DO Begin Begin Nombre := ‘Laura’; Nombre := ‘Laura’; NumTel := ‘5761-2779’; NumTel := ‘5761-2779’; Sexo := ‘f’; Sexo := ‘f’; End; (*with*) End; (*with*)

18 Lenguaje Pascal: Ana Laureano_UAM-A El tipo Conjunto Este tipo permite agrupar un conjunto de valores que se conocen como tipo base. Este tipo permite agrupar un conjunto de valores que se conocen como tipo base. Type identificadorTipo = Set Of TipoBase; Type identificadorTipo = Set Of TipoBase; Type Type Monedas = (penny, nickel, dime, quarter); Monedas = (penny, nickel, dime, quarter); TipoConjMon = set of monedas; TipoConjMon = set of monedas; Var Var ConjMoneda : TipoConjMon; ConjMoneda : TipoConjMon; Vocales, mayusculas : set of char; Vocales, mayusculas : set of char;

19 Lenguaje Pascal: Ana Laureano_UAM-A Inicialización de las variables tipo conjunto Una vez que se ha declarado una variable tipo conjunto es necesario inicializarla. Una vez que se ha declarado una variable tipo conjunto es necesario inicializarla. ConjMoneda := [ nickel, dime]; ConjMoneda := [ nickel, dime]; Vocales := [‘a’, ‘e’, ‘i’, ‘o’, ‘u’]; Vocales := [‘a’, ‘e’, ‘i’, ‘o’, ‘u’]; mayuscuas := [‘A’..’Z’]; mayuscuas := [‘A’..’Z’];

20 Lenguaje Pascal: Ana Laureano_UAM-A Pertenencia a un Conjunto Se usa la palabra reservada in para probar si un valor particular es miembro de un conjunto. Se usa la palabra reservada in para probar si un valor particular es miembro de un conjunto. Ejemplos Ejemplos If char in vocales then …; If char in vocales then …; If quartes in ConjMon then …; If quartes in ConjMon then …; If g in [‘a’,’b’,’c’,’d’] then …; If g in [‘a’,’b’,’c’,’d’] then …;

21 Lenguaje Pascal: Ana Laureano_UAM-A Operaciones con conjuntos La unión La unión X + Y X + Y [1,2,5,6] + [1,2,4,7] = [1,2,4,5,6,7] [1,2,5,6] + [1,2,4,7] = [1,2,4,5,6,7] La intersección La intersección X * Y X * Y [1,2,5,6] * [1,2,4,7] = [1,2] [1,2,5,6] * [1,2,4,7] = [1,2] La diferencia La diferencia X – Y: todos los elementos de X que no están en Y X – Y: todos los elementos de X que no están en Y [1,2,5,6] - [1,2,4,7] = [5,6] [1,2,5,6] - [1,2,4,7] = [5,6]

22 Lenguaje Pascal: Ana Laureano_UAM-A Conjunto vacío El conjunto vacío representado por [ ], es un conjunto sin elementos. El conjunto vacío representado por [ ], es un conjunto sin elementos. [‘a’..’z’] * [‘A’.. ‘Z’] = [ ] [‘a’..’z’] * [‘A’.. ‘Z’] = [ ] También sirve para inicializar una variable, antes de iniciar un ciclo al cual se le agregan elementos de un conjunto. También sirve para inicializar una variable, antes de iniciar un ciclo al cual se le agregan elementos de un conjunto. Los operadores relacionales se pueden aplicar a los conjuntos. Los operadores relacionales se pueden aplicar a los conjuntos.

23 Lenguaje Pascal: Ana Laureano_UAM-A Conjuntos y Operadores relacionales X = Y es true cuando los conjuntos son iguales. X = Y es true cuando los conjuntos son iguales. X <> Y es true cuando los conjuntos no son iguales. X <> Y es true cuando los conjuntos no son iguales. X<=Y es true cuando X es un subconjunto de Y. X<=Y es true cuando X es un subconjunto de Y. X >=Y es true cuando Y es un subconjunto de X. X >=Y es true cuando Y es un subconjunto de X.

24 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: ciclo de progresión aritmética For i := j to k do For i := j to k do[Begin]block;[End] donde i es una variable de tipo enumerado, j y k son expresiones discretas, y block es cualquier número de declaraciones, las cuales se ejecutan repetidamente dependiendo del valor de j y k. For i := 1 to 10 do Write (i); Write (i);

25 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: condición sencilla Decisiones: Declaración IF-THEN-ELSE Decisiones: Declaración IF-THEN-ELSE IF (expresión-lógica) THEN [Begin] [Begin] block 1; [End] [ELSE [Begin] block E; ] [End] La expresión Const: La expresión Const: se utiliza como expresión de inicialización de constantes Const pi = 3.141593; pi = 3.141593; dos = 2; dos = 2;

26 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: operadores relacionales Operadores relacionales: Operadores relacionales: <menor quea < 5 < =menor o igual queb < = 4 =igualb = 3 diferentea 0 diferentea 0 >mayor queb > 4 > =mayor o igual quex > = 0 Operadores lógicos: Operadores lógicos: notNegación lógica andIntersección lógica orUnión lógica xorOr Excluyente

27 Lenguaje Pascal: Ana Laureano_UAM-A Operadores Booleanos: and pq p and q VVV VFF FVF FFF

28 Lenguaje Pascal: Ana Laureano_UAM-A Operadores Booleanos: or pq p or q VVV VFV FVV FFF

29 Lenguaje Pascal: Ana Laureano_UAM-A Operadores Booleanos xor: ssi p o q es verdadera pq p xor q VVF VFV FVV FFF

30 Lenguaje Pascal: Ana Laureano_UAM-A Ejemplos 65 <= estatura <= 75 65 <= estatura <= 75 if (estatura >= 65) and (estatura = 65) and (estatura <= 75) then … if (calif > 65) and (calif2 > 65) then if (calif > 65) and (calif2 > 65) then write (‘contratado’) write (‘contratado’) else else write (‘rechazado’) write (‘rechazado’)

31 Lenguaje Pascal: Ana Laureano_UAM-A Precedencia de operadores Precedencia Operadores numèricos Operadores lógicos y relacionales Máxima Menos unuario Not Segunda *,/, div, mod And Tercera +, - Or, xor Mínima<,>,>=,<=,<>,=

32 Lenguaje Pascal: Ana Laureano_UAM-A Precedencia de operadores Cuando se encuentran dos operadores con la misma precedencia, la evaluación se lleva a cabo de izq a der. Cuando se encuentran dos operadores con la misma precedencia, la evaluación se lleva a cabo de izq a der. Para alterar la precedencia es necesario el uso de paréntesis. Para alterar la precedencia es necesario el uso de paréntesis.

33 Lenguaje Pascal: Ana Laureano_UAM-A Estructuras de Selección Construcción CASE: Construcción CASE: Similar a IF-THEN-ELSE, permite seleccionar entre un número de situaciones o casos basados en un SELECTOR, este debe ser de tipo ordinal. La (expr) debe dar como resultado un tipo ordinal. CASE (expr) SELECTOR1: (BEGIN) (BEGIN) block 1; (END); (END); SELECTOR2: block 2 [ELSE] block d END;

34 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Ejemplo: Ejemplo: ReadLn (ch); CASE (ch) ‘a’, ‘e’, ‘i’, ‘o’, ‘u’: WriteLn (‘vocal’) Else WriteLn (‘consonante u otro caracter’) END;

35 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: ciclos condiconales Repite: Repite:Repeatblock Until (expr-lógica = verdadera) Mientras: Mientras: While (expr-lógica = verdadera) While (expr-lógica = verdadera)[begin] block block[end]

36 Lenguaje Pascal: Ana Laureano_UAM-A Pascal invitado := 0; REPEAT invitado := invitado + 1; WriteLn (‘tu invitado: ’); ReadLn (nombre); UNTIL (invitado == 10) WHILE (invitado < 10) DO begin invitado := invitado + 1; invitado := invitado + 1; WriteLn (‘tu invitado: ’); WriteLn (‘tu invitado: ’); ReadLn (nombre); ReadLn (nombre);end END DO;

37 Lenguaje Pascal: Ana Laureano_UAM-A Comparación entre los ciclos condicionales: repeat y while El cuerpo de acciones del repeat siempre se ejecuta al menos una vez. El cuerpo de acciones del repeat siempre se ejecuta al menos una vez. Lo anterior implica que la expresión lógica que controla el repeat se encuentra al final. Lo anterior implica que la expresión lógica que controla el repeat se encuentra al final. Y que las variables involucradas en la expresión lógica que controla el while deben haber sido inicializadas antes de que sean instanciadas. Y que las variables involucradas en la expresión lógica que controla el while deben haber sido inicializadas antes de que sean instanciadas.

38 Lenguaje Pascal: Ana Laureano_UAM-A Tanto el repeat como el while sirven para modelar una tarea iterativa controlada por una condición. Tanto el repeat como el while sirven para modelar una tarea iterativa controlada por una condición. La diferencia entre las expresiones lógicas que controlan a la condición, es que una es la negación de la otra. La diferencia entre las expresiones lógicas que controlan a la condición, es que una es la negación de la otra. En el caso de los ciclos NO_Condicionales, es claro que se utilizan cuando se conoce el número de veces que se desea se repita el conjunto de instrucciones que se encuentran anidadas. En el caso de los ciclos NO_Condicionales, es claro que se utilizan cuando se conoce el número de veces que se desea se repita el conjunto de instrucciones que se encuentran anidadas.

39 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Los Programas diseñados con los principios de programación estructurada y un diseño modular descendente son estructurados por medio de abstracciones procedurales y funcionales. Estos procedimientos se comunican con el programa principal de manera específica, a través del paso de datos y son invocados o llamados desde éste. Los Programas diseñados con los principios de programación estructurada y un diseño modular descendente son estructurados por medio de abstracciones procedurales y funcionales. Estos procedimientos se comunican con el programa principal de manera específica, a través del paso de datos y son invocados o llamados desde éste. Existen dos formas de estructurar el programa a través de : funciones (abstracciones-funcionales) y procedimientos (abstracciones-procedurales). Existen dos formas de estructurar el programa a través de : funciones (abstracciones-funcionales) y procedimientos (abstracciones-procedurales). El paso de datos se conoce como paso de parámetros, estos pueden ser pasados por referencia o por valor. El paso de datos se conoce como paso de parámetros, estos pueden ser pasados por referencia o por valor.

40 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Paso de parámetros por referencia: Paso de parámetros por referencia: Es un mecanismo que permite el paso de un parámetro utilizando una dirección de memoria con el fin de facilitar ya sea el retorno al programa principal de un valor producido por un subprograma o el retorno al programa principal de un valor modificado por el subprograma. Es un mecanismo que permite el paso de un parámetro utilizando una dirección de memoria con el fin de facilitar ya sea el retorno al programa principal de un valor producido por un subprograma o el retorno al programa principal de un valor modificado por el subprograma. Ejemplo: Ejemplo: Var a,b: integer; ! Producido o ! modificado Var a,b: integer; ! Producido o ! modificado

41 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Parámetros por valor: Parámetros por valor: Es un mecanismo que permite el paso de un parámetro utilizando su valor con el fin de evitar su modificación, de esta forma al terminar de ejecutarse el subprograma y retornar el control al programa principal el valor de ese parámetro continúa siendo el mismo. En otras palabras el valor de este parámetro sólo puede ser utilizado. Es un mecanismo que permite el paso de un parámetro utilizando su valor con el fin de evitar su modificación, de esta forma al terminar de ejecutarse el subprograma y retornar el control al programa principal el valor de ese parámetro continúa siendo el mismo. En otras palabras el valor de este parámetro sólo puede ser utilizado. a, b: integer; ! Sólo puede ser utilizado a, b: integer; ! Sólo puede ser utilizado

42 Lenguaje Pascal: Ana Laureano_UAM-A

43 Pascal Ejemplo de abstracción funcional (function): Ejemplo de abstracción funcional (function): PROGRAM cubo { se usa una función definida por el programador para elevar al cubo} var var num, cubo : longint; Function encubo (n:integer):longint; {parametros formales} Function encubo (n:integer):longint; {parametros formales} begin begin encubo := n*n*n end; {encubo} end; {encubo} begin {programa_principal} begin {programa_principal} write (‘escriba un entero: ’); write (‘escriba un entero: ’); readln (num); readln (num); cubo := encubo (num); {parametros actuales} cubo := encubo (num); {parametros actuales} writeln (num,’al cubo es: ‘, cubo) writeln (num,’al cubo es: ‘, cubo) end. {programa_principal} end. {programa_principal}

44 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Ejemplo de abstracción procedural (procedure): Ejemplo de abstracción procedural (procedure): PROGRAM cubo { se usa una función definida por el programador para elevar al cubo} var var num, cubo : longint; Procedure encubo (n:integer; var cubo:longint); {parametros formales} Procedure encubo (n:integer; var cubo:longint); {parametros formales} begin begin cubo := n*n*n end; {encubo} end; {encubo} begin {programa_principal} begin {programa_principal} write (‘escriba un entero: ’); write (‘escriba un entero: ’); readln (num); readln (num); encubo (num, cubo); {parametros actuales} encubo (num, cubo); {parametros actuales} writeln (num,’al cubo es: ‘, cubo) writeln (num,’al cubo es: ‘, cubo) end. {programa_principal} end. {programa_principal}

45 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Recursión: Muchas funciones matemáticas pueden estar definidas recursivamente, es decir que están definidas en términos de casos más simples de ellas mismas. Recursión: Muchas funciones matemáticas pueden estar definidas recursivamente, es decir que están definidas en términos de casos más simples de ellas mismas. Para implementarlas es necesario que una función se invoque a sí misma. en Pascal esto es posible tanto para abstracciones funcionales como procedurales. Y estas son funciones o procedimeintos que se llaman a si mismos. Para implementarlas es necesario que una función se invoque a sí misma. en Pascal esto es posible tanto para abstracciones funcionales como procedurales. Y estas son funciones o procedimeintos que se llaman a si mismos.

46 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Ejemplo de función recursiva: Ejemplo de función recursiva: function fact (n:integer): longinteger; function fact (n:integer): longinteger;Begin if n = 1 then if n = 1 then fact := 1 else else fact := n * fact (n-1) End; {fact} End; {fact}

47 Lenguaje Pascal: Ana Laureano_UAM-A Ejemplo de procedimiento recursivo: Ejemplo de procedimiento recursivo: program proced_recur; procedure tarea (n:integer); procedure tarea (n:integer);Begin if n = 1 then if n = 1 then writeln (‘n = 1 Regresa’) writeln (‘n = 1 Regresa’) else else begin begin writeln (n, ‘hola’); writeln (n, ‘hola’); tarea (n-1); tarea (n-1); writeln (n, ‘adios’) writeln (n, ‘adios’) end; {else} end; {else} end; {tarea} end; {tarea} begin begin tarea (4) tarea (4) end. end. Pascal

48 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: compilación separada Unidades: son contenedores físicos que permiten albergar expresiones declarativas o abstracciones procedurales o funcionales. Estos módulos pueden ser compilados por separado o pueden estar dentro de un programa: Unidades: son contenedores físicos que permiten albergar expresiones declarativas o abstracciones procedurales o funcionales. Estos módulos pueden ser compilados por separado o pueden estar dentro de un programa: Puede contener más de una abstracción funcional o procedural, o Puede contener más de una abstracción funcional o procedural, o Puede tener expresiones declarativas y/o de especificación accesibles a todas las unidades del programa. Puede tener expresiones declarativas y/o de especificación accesibles a todas las unidades del programa.

49 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Las Unidades son un cierto tipo de programa externo. Las Unidades son un cierto tipo de programa externo. Unit (nombre); Unit (nombre); Interface {p’ublicos} Interface {p’ublicos} {declaraciones uses, const, type, o var, si existen} {declaraciones uses, const, type, o var, si existen} {encabezados de procedimientos y funciones} {encabezados de procedimientos y funciones} Implementation Implementation {declaraciones completas de los procedimientos y funciones} {declaraciones completas de los procedimientos y funciones} End. End. Los identificadores declarados en la parte de interfaz, son públicos lo que significa que pueden ser leídos por cualquier programa o unidad que declara esta unidad. Los identificadores declarados en la parte de interfaz, son públicos lo que significa que pueden ser leídos por cualquier programa o unidad que declara esta unidad. En la sección implementación, aquí se detallan las definiciones completas de los subprogramas con el encabezado repetido. El último debe terminar en ; En la sección implementación, aquí se detallan las definiciones completas de los subprogramas con el encabezado repetido. El último debe terminar en ;

50 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Precaución: debe utilizar el mismo identificador para el nombre de la unidad y del archivo en el que guardará el código. Precaución: debe utilizar el mismo identificador para el nombre de la unidad y del archivo en el que guardará el código. Ejem. Unit InfoMat, el archivo debe llamarse InfoMat.pas Ejem. Unit InfoMat, el archivo debe llamarse InfoMat.pas

51 Lenguaje Pascal: Ana Laureano_UAM-A Pascal UNIT InfoMat UNIT InfoMat Interface Interface Uses Uses Const Const MaxLongVect = 50; MaxLongVect = 50; Type Type Tipo1: integer; Tipo1: integer; TipoDeElemento = Record TipoDeElemento = Record NumFil, NumFil, NumCol: integer; NumCol: integer; Info: array [1..maxlogvec] of Tipo1; Info: array [1..maxlogvec] of Tipo1; End; End; Implementation Implementation End. End.

52 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Unit Matriz; Unit Matriz; USES InfoMat; USES InfoMat; Interface Interface Function InicMatriz (n,m:integer): TipoDeElemento; Function InicMatriz (n,m:integer): TipoDeElemento; Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:Tipo1): TipoDeElemento; Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:Tipo1): TipoDeElemento; Function ElemMatriz (mat: TipoDeElemento, i1,i2:integer): Tipo1; Function ElemMatriz (mat: TipoDeElemento, i1,i2:integer): Tipo1; Function FilasMatriz (mat: TipoDeElemento): integer; Function FilasMatriz (mat: TipoDeElemento): integer; Function ColMatriz (mat: TipoDeElemento): integer; Function ColMatriz (mat: TipoDeElemento): integer; Function SumaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function SumaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function RestaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function RestaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function Transpuesta (mat: TipoDeElemento): TipoDeElemento; Function Transpuesta (mat: TipoDeElemento): TipoDeElemento; Function Multiplica (mat1,mat2: TipoDeElemento): TipoDeElemento; Function Multiplica (mat1,mat2: TipoDeElemento): TipoDeElemento;

53 Lenguaje Pascal: Ana Laureano_UAM-A Pascal Implementation Implementation Function InicMatriz (n,m:integer):TipoDeElemento; Function InicMatriz (n,m:integer):TipoDeElemento; Var Var i:integer; mat: TipoDeElemento; i:integer; mat: TipoDeElemento; Begin Begin mat.NumFil:= n; mat.NumCol:= m; mat.NumFil:= n; mat.NumCol:= m; For i: =1 to MaxLongVec For i: =1 to MaxLongVec Mat.info[i] := 0; Mat.info[i] := 0; InicMatriz := mat; InicMatriz := mat; End; End;

54 Lenguaje Pascal: Ana Laureano_UAM-A Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:tipo1): TipoDeElemento; Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:tipo1): TipoDeElemento; Begin Begin Mat.info[(i2-1)*mat.NumFil) + i1] := val; Mat.info[(i2-1)*mat.NumFil) + i1] := val; AsignaMatriz := mat; AsignaMatriz := mat; End; End; Function ElemMatriz (mat:TipoDeElemento; i1,i2:integer):Tipo1; Function ElemMatriz (mat:TipoDeElemento; i1,i2:integer):Tipo1; Begin Begin ElemMatriz := mat.info[((i2-1) * mat.NumFil) + i1; ElemMatriz := mat.info[((i2-1) * mat.NumFil) + i1; End; End;.. End. End.

55 Lenguaje Pascal: Ana Laureano_UAM-A Pascal: uso de el TAD Matriz Program Matrices; Program Matrices; Uses Matriz, InfoMat; Uses Matriz, InfoMat; Var: mat1,mat2,MatSum,MatRes,MatMul,MatTTra nsp: TipoElemento; Var: mat1,mat2,MatSum,MatRes,MatMul,MatTTra nsp: TipoElemento; Op: integer; Op: integer;...

56 Lenguaje Pascal: Ana Laureano_UAM-A fin


Descargar ppt "Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco."

Presentaciones similares


Anuncios Google