Vous êtes sur la page 1sur 56

Lenguajes de Programacin Pascal

Profesora Ana Lilia Laureano - Cruces Universidad Autnoma Metropolitana - Azcpotzalco

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


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

Pascal


La estructura de un programa en Pascal es de la siguiente forma:


PROGRAM nombre del programa expresiones declarativas subprogramas internos BEGIN expresiones de ejecucin END. END.

Los enunciados son la base del programa y a excepcin del enunciado de asignacin, todos empiezan con una palabra clave.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Los comentarios se escriben encerrando el texto entre


 

(* Comentario *) { Comentario }

Tipos de Datos: Se dividen en 2 clases, los numricos (integer y real) y los no (integer real) logical). numricos (character, string y logical). (character,

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal
 

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

Una regla de oro




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.

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Programa alumno (mdulo 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*)

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Asignacin numrica: El propsito es calcular el valor de una expresin numrica y asignarla a una variable. Su forma general es: variable = expr x := a + b Entradas y salidas de datos: Cuenta con formato libre, en ambos casos: Read o ReadLn y tiene la forma:

Read (list); Readln (list);


donde list es una lista de variables separadas por comas: Read (A, B, C);
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal
La declaracin Write/WriteLn, se utiliza para la salida de datos. Su Write/WriteLn, 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)) Tambin podemos usar la declaracin mascaras para los reales WriteLn (ExpresionReal:AnchoTotal:Decimales);
X := 78.291 WriteLn (x:0:1); WriteLn (x:0:2); WriteLn (x:0:0); WriteLn (x= ,x:0:3); WriteLn (x:0:4); 78.3 {con cero aseguro que no hay blancos} 78.29 {que preceden al numero} 78 x= 78.291 78.2910
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Tipos de variables


Var
    

a: integer; b: real; opcion: char; apellido: string Encontre: boolean

El tipo string puede almacenar hasta 255 caracteres


Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Tipos derivadas


Un tipo de variable derivada es aquel que se basa en los tipos bsicos. Arreglos Registro Conjunto Definidos por el usuario
Lenguaje Pascal: Ana Laureano_UAMLaureano_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, unidimensionales, bidimensionales, tridimensionales nbidimensionales, tridimensionales dimensionales.

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Arreglos


Var
    

X : array [1..5] of integer; X : array [1..5] of real; X : array [1..5] of boolean; X : array [1..5] of char; X : array [1..5] of string;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Array n-dimensional n

Const


TamMax = 30;

Type (* Tipos definidos por el usuario*)




Ventas : array [1..TamMax, 1..5] of integer;

Var


Ventas : tipoventas;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

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

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Cmo accesar los campos de un registro


nombre Laura 1 Laura Pedro . . . n Ana Mauricio Javier Emiliano numtel 5761-2779 4561-2759 3461-2379 3061-2279 9161-2979 7561-5779 5561-8779 sexo f f m f m m m Persona MuchasPer

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

  

Persona. Persona.Nombre := Laura; Persona. Persona.NumTel := 5761-2779; 5761Persona. Persona.Sexo := f; With Persona DO


Begin
  

Nombre := Laura; NumTel := 5761-2779; 5761Sexo := f;

End; End; (*with*)


Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

El tipo Conjunto


Este tipo permite agrupar un conjunto de valores que se conocen como tipo base. base. Type identificadorTipo = Set Of TipoBase; Type
 

Monedas = (penny, nickel, dime, quarter); TipoConjMon = set of monedas; ConjMoneda : TipoConjMon; Vocales, mayusculas : set of char;
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Var
 

Inicializacin de las variables tipo conjunto




  

Una vez que se ha declarado una variable tipo conjunto es necesario inicializarla. ConjMoneda := [ nickel, dime]; Vocales := [a, e, i, o, u]; mayuscuas := [A..Z];

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pertenencia a un Conjunto


Se usa la palabra reservada in para probar si un valor particular es miembro de un conjunto. Ejemplos
  

If char in vocales then ; If quartes in ConjMon then ; If g in [a,b,c,d] then ;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Operaciones con conjuntos




La unin
 

X+Y [1,2,5,6] + [1,2,4,7] = [1,2,4,5,6,7] X*Y [1,2,5,6] * [1,2,4,7] = [1,2] X Y: todos los elementos de X que no estn en Y [1,2,5,6] - [1,2,4,7] = [5,6]
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

La interseccin
 

La diferencia
 

Conjunto vaco


El conjunto vaco representado por [ ], es un conjunto sin elementos.


 

[a..z] * [A.. Z] = [ ] Tambin 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.


Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Conjuntos y Operadores relacionales




X = Y es true cuando los conjuntos son iguales. X <> Y es true cuando los conjuntos no son iguales. X<=Y es true cuando X es un subconjunto <=Y de Y. X >=Y es true cuando Y es un >=Y subconjunto de X.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: ciclo de progresin aritmtica


 

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 nmero de discretas, declaraciones, las cuales se ejecutan repetidamente dependiendo del valor de j y k. For i := 1 to 10 do Write (i);
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: condicin sencilla




Decisiones: Declaracin IF-THEN-ELSE IF-THEN(expresinIF (expresin-lgica) THEN [Begin] block 1; [End] [ELSE [Begin] block E; ] [End] La expresin Const: Const: se utiliza como expresin de inicializacin de constantes Const pi = 3.141593; dos = 2;
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: operadores relacionales




Operadores relacionales: < menor que <= menor o igual que = igual <> diferente > mayor que >= mayor o igual que Operadores lgicos: not Negacin lgica and Interseccin lgica or Unin lgica xor Or Excluyente

a<5 b<=4 b=3 a<>0 b>4 x>=0

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Operadores Booleanos: and


p V V F F q V F V F p and q V F F F

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Operadores Booleanos: or
p V V F F q V F V F p or q V V V F

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Operadores Booleanos xor: ssi p o q es verdadera


p V V F F q V F V F p xor q F V V F

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Ejemplos
 

65 <= estatura <= 75 if (estatura >= 65) and (estatura <= 75) then if (calif > 65) and (calif2 > 65) then


write (contratado) write (rechazado)


Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

else


Precedencia de operadores
Precedencia Operadores numricos Menos unuario *,/, div, mod +, Operadores lgicos y relacionales Not And Or, xor <,>,>=,<=,<>,=
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Mxima Segunda Tercera Mnima

Precedencia de operadores


Cuando se encuentran dos operadores con la misma precedencia, la evaluacin precedencia, se lleva a cabo de izq a der. Para alterar la precedencia es necesario el uso de parntesis.

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Estructuras de Seleccin


Construccin CASE: CASE: Similar a IF-THEN-ELSE, permite seleccionar entre un IF-THEN-ELSE, nmero de situaciones o casos basados en un SELECTOR, este debe ser de tipo ordinal. La (expr) SELECTOR, ordinal. debe dar como resultado un tipo ordinal. ordinal.
CASE (expr) expr) SELECTOR1: SELECTOR1: BEGIN) (BEGIN) block 1; (END); END); SELECTOR2: SELECTOR2: block 2 [ELSE] ELSE] block d END; END;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Ejemplo: ReadLn (ch); CASE (ch) a, e, i, o, u: WriteLn (vocal) Else WriteLn (consonante u otro caracter) END;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: ciclos condiconales




Repite: Repeat block Until (expr-lgica = verdadera) (exprMientras: While (expr-lgica = verdadera) (expr[begin] block [end] Lenguaje Pascal: Ana
Laureano_UAMLaureano_UAM-A

invitado := 0; REPEAT invitado := invitado + 1; WriteLn (tu invitado: ); ReadLn (nombre); UNTIL (invitado == 10)

Pascal

WHILE (invitado < 10) DO begin invitado := invitado + 1; WriteLn (tu invitado: ); ReadLn (nombre); end END DO;
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Comparacin entre los ciclos condicionales: repeat y while




El cuerpo de acciones del repeat siempre se ejecuta al menos una vez. Lo anterior implica que la expresin lgica que controla el repeat se encuentra al final. Y que las variables involucradas en la expresin lgica que controla el while deben haber sido inicializadas antes de que sean instanciadas.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Tanto el repeat como el while sirven para modelar una tarea iterativa controlada por una condicin. La diferencia entre las expresiones lgicas que controlan a la condicin, es que una es la negacin de la otra. En el caso de los ciclos NO_Condicionales, es NO_Condicionales, claro que se utilizan cuando se conoce el nmero de veces que se desea se repita el conjunto de instrucciones que se encuentran anidadas.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Los Programas diseados con los principios de programacin estructurada y un diseo modular descendente son estructurados por medio de funcionales. abstracciones procedurales y funcionales. Estos procedimientos se comunican con el programa principal de manera especfica, a travs del paso de datos y son invocados o llamados desde ste. Existen dos formas de estructurar el programa a travs (abstraccionesde : funciones (abstracciones-funcionales) y procedimientos (abstracciones-procedurales). (abstraccionesEl paso de datos se conoce como paso de parmetros, estos pueden ser pasados por referencia o por valor. valor.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Paso de parmetros por referencia:




Es un mecanismo que permite el paso de un parmetro utilizando una direccin 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:


Var a,b: integer; ! Producido o ! modificado


Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Parmetros por valor:




Es un mecanismo que permite el paso de un parmetro utilizando su valor con el fin de evitar su modificacin, de esta forma al terminar de ejecutarse el subprograma y retornar el control al programa principal el valor de ese parmetro contina siendo el mismo. En otras palabras el valor de este parmetro slo puede ser utilizado.


a, b: integer;

! Slo puede ser utilizado

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Diseo Modular Descendente


r r ri ci l

Abstr cci

r c

r l Abstr cci

r c

r l Abstr cci

ci

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Ejemplo de abstraccin funcional (function): (function):


PROGRAM cubo { se usa una funcin definida por el programador para elevar al cubo} var num, cubo : longint; Function encubo (n:integer):longint; {parametros formales} begin encubo := n*n*n end; {encubo} begin {programa_principal} write (escriba un entero: ); readln (num); cubo := encubo (num); {parametros actuales} writeln (num,al cubo es: , cubo) end. {programa_principal}
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Ejemplo de abstraccin procedural (procedure): (procedure):


PROGRAM cubo { se usa una funcin definida por el programador para elevar al cubo} var num, cubo : longint; Procedure encubo (n:integer; var cubo:longint); {parametros formales} begin cubo := n*n*n end; {encubo} begin {programa_principal} write (escriba un entero: ); readln (num); encubo (num, cubo); {parametros actuales} writeln (num,al cubo es: , cubo) end. {programa_principal}
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Recursin: Recursin: Muchas funciones matemticas pueden estar definidas recursivamente, es decir que estn definidas en trminos de casos ms simples de ellas mismas. Para implementarlas es necesario que una funcin 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.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Ejemplo de funcin recursiva:


function fact (n:integer): longinteger; Begin if n = 1 then fact := 1 else fact := n * fact (n-1) (nEnd; {fact}
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Ejemplo de procedimiento recursivo: program proced_recur;


procedure tarea (n:integer); Begin if n = 1 then writeln (n = 1 Regresa) else begin writeln (n, hola); tarea (n-1); (nwriteln (n, adios) end; end; {else} end; end; {tarea} begin tarea (4)
end.

Pascal

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: compilacin separada




Unidades: son contenedores fsicos que permiten albergar expresiones declarativas o abstracciones procedurales o funcionales. Estos mdulos pueden ser compilados por separado o pueden estar dentro de un programa:


Puede contener ms de una abstraccin funcional o procedural, o Puede tener expresiones declarativas y/o de especificacin accesibles a todas las unidades del programa.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Las Unidades son un cierto tipo de programa externo. externo.


 

Unit (nombre); Interface {publicos}


 

{declaraciones uses, const, type, o var, si existen} {encabezados de procedimientos y funciones} {declaraciones completas de los procedimientos y funciones}

Implementation


 

End. End. Los identificadores declarados en la parte de interfaz, son interfaz, pblicos lo que significa que pueden ser ledos por cualquier programa o unidad que declara esta unidad. En la seccin implementacin, aqu se detallan las definiciones completas de los subprogramas con el encabezado repetido. El ltimo debe terminar en ;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Precaucin: debe utilizar el mismo identificador para el nombre de la unidad y del archivo en el que guardar el cdigo. Ejem. Unit InfoMat, el archivo debe llamarse InfoMat.pas

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal
 

UNIT InfoMat Interface


 

Uses Const


MaxLongVect = 50; Tipo1: integer; TipoDeElemento = Record NumFil, NumCol: integer; Info: array [1..maxlogvec] of Tipo1; End; End;

Type
     

 

Implementation End.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal
  

Unit Matriz; USES InfoMat; Interface


 

      

Function InicMatriz (n,m:integer): TipoDeElemento; Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:Tipo1): TipoDeElemento; Function ElemMatriz (mat: TipoDeElemento, i1,i2:integer): Tipo1; Function FilasMatriz (mat: TipoDeElemento): integer; Function ColMatriz (mat: TipoDeElemento): integer; Function SumaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function RestaMatriz (mat1,mat2: TipoDeElemento): TipoDeElemento; Function Transpuesta (mat: TipoDeElemento): TipoDeElemento; Function Multiplica (mat1,mat2: TipoDeElemento): TipoDeElemento;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal


Implementation
 

Function InicMatriz (n,m:integer):TipoDeElemento; Var


 

i:integer; mat: TipoDeElemento; Begin


 

mat.NumFil:= n; mat.NumCol:= m; For i: =1 to MaxLongVec  Mat.info[i] := 0; InicMatriz := mat;

End;

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Function AsignaMatriz (mat: TipoDeElemento, i1,i2:integer; val:tipo1): TipoDeElemento; Begin


 

Mat.info[(i2Mat.info[(i2-1)*mat.NumFil) + i1] := val; AsignaMatriz := mat;

End; Function ElemMatriz (mat:TipoDeElemento; i1,i2:integer):Tipo1; Begin




 

ElemMatriz := mat.info[((i2-1) * mat.NumFil) + i1; mat.info[((i2-

   

End; . . End.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Pascal: uso de el TAD Matriz


 

Program Matrices; Uses Matriz, InfoMat;




Var: mat1,mat2,MatSum,MatRes,MatMul,MatTTra nsp: TipoElemento; Op: integer;

. . .
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

fin

Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A

Vous aimerez peut-être aussi