Académique Documents
Professionnel Documents
Culture Documents
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
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
(* 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,
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
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.
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*)
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:
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
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.
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;
Array n-dimensional n
Const
TamMax = 30;
Var
Ventas : tipoventas;
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
Persona. Persona.Nombre := Laura; Persona. Persona.NumTel := 5761-2779; 5761Persona. Persona.Sexo := f; With Persona DO
Begin
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
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];
Pertenencia a un Conjunto
Se usa la palabra reservada in para probar si un valor particular es miembro de un conjunto. Ejemplos
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
[a..z] * [A.. Z] = [ ] Tambin sirve para inicializar una variable, antes de iniciar un ciclo al cual se le agregan elementos de un conjunto.
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
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
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
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
Operadores Booleanos: or
p V V F F q V F V F p or q V V V F
Ejemplos
65 <= estatura <= 75 if (estatura >= 65) and (estatura <= 75) then if (calif > 65) and (calif2 > 65) then
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
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.
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;
Pascal
Ejemplo: ReadLn (ch); CASE (ch) a, e, i, o, u: WriteLn (vocal) Else WriteLn (consonante u otro caracter) END;
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
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
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:
Pascal
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;
Abstr cci
r c
r l Abstr cci
r c
r l Abstr cci
ci
Pascal
Pascal
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
Pascal
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
{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 ;
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
Pascal
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
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;
Pascal
Implementation
End;
End; . . End.
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A
. . .
Lenguaje Pascal: Ana Laureano_UAMLaureano_UAM-A
fin