Title: Lenguajes%20de%20Programaci
1- Lenguajes de Programación
- Pascal
- Profesora Ana Lilia Laureano - Cruces
- Universidad Autónoma Metropolitana - Azcpotzalco
2Pascal
- 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. - 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.
3Pascal
- 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.
4Pascal
- Los comentarios se escriben encerrando el texto
entre - ( 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).
5Pascal
- 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. - 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.
6Una 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.
7Programa alumno (mòdulo 100) Const Type Var
x,y,z,a,b,c,d real Procedure nom1 (Var
x,y,z integer, dreal) 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)
8Pascal
- 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 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)
9Pascal
- 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 (ExpresionRealAnchoTotalDecim
ales) - X 78.291
- WriteLn (x01) 78.3 con cero aseguro que no
hay blancos - WriteLn (x02) 78.29 que preceden al numero
- WriteLn (x00) 78
- WriteLn (x ,x03) x 78.291
- WriteLn (x04) 78.2910
10Tipos de variables
- Var
- a integer
- b real
- opcion char
- apellido string
- Encontre boolean
- El tipo string puede almacenar hasta 255
caracteres
11Tipos derivadas
- Un tipo de variable derivada es aquel que se basa
en los tipos básicos. - Arreglos
- Registro
- Conjunto
- Definidos por el usuario
12Arreglos
- 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.
13Arreglos
- 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
14Array n-dimensional
- Const
- TamMax 30
- Type ( Tipos definidos por el usuario)
- Ventas array 1..TamMax, 1..5 of integer
- Var
- Ventas tipoventas
15El 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 (RegPers)
- Var
- persona RegPers
- MuchasPer array 1..TamMax of RegPers
16 Cómo accesar los campos de un registro
nombre numtel sexo
Laura
5761-2779
f
Persona
Laura
4561-2759
f
1
MuchasPer
Pedro
3461-2379
m
.
Ana
3061-2279
f
Mauricio
9161-2979
m
.
Javier
7561-5779
m
.
Emiliano
5561-8779
m
n
17- Persona.Nombre Laura
- Persona.NumTel 5761-2779
- Persona.Sexo f
- With Persona DO
- Begin
- Nombre Laura
- NumTel 5761-2779
- Sexo f
- End (with)
18El tipo Conjunto
- Este tipo permite agrupar un conjunto de valores
que se conocen como tipo base. - Type identificadorTipo Set Of TipoBase
- Type
- Monedas (penny, nickel, dime, quarter)
- TipoConjMon set of monedas
- Var
- ConjMoneda TipoConjMon
- Vocales, mayusculas set of char
19Inicialización 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
20Pertenencia 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
21Operaciones con conjuntos
- La unión
- X Y
- 1,2,5,6 1,2,4,7 1,2,4,5,6,7
- La intersección
- X Y
- 1,2,5,6 1,2,4,7 1,2
- La diferencia
- X Y todos los elementos de X que no están en Y
- 1,2,5,6 - 1,2,4,7 5,6
22Conjunto vacÃo
- El conjunto vacÃo representado por , es un
conjunto sin elementos. - 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. - Los operadores relacionales se pueden aplicar a
los conjuntos.
23Conjuntos y Operadores relacionales
- X Y es true cuando los conjuntos son iguales.
- X ltgt Y es true cuando los conjuntos no son
iguales. - XltY es true cuando X es un subconjunto de Y.
- X gtY es true cuando Y es un subconjunto de X.
24Pascal ciclo de progresión aritmética
-
- 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)
-
25Pascal condición sencilla
- Decisiones Declaración IF-THEN-ELSE
- IF (expresión-lógica) THEN
- Begin
- block 1
- End
- ELSE
- Begin
- block E
- End
- La expresión Const
- se utiliza como expresión de inicialización de
constantes - Const
- pi 3.141593
- dos 2
26Pascal operadores relacionales
- Operadores relacionales
- lt menor que a lt 5
- lt menor o igual que b lt 4
- igual b 3
- lt gt diferente a lt gt 0
- gt mayor que b gt 4
- gt mayor o igual que x gt 0
- Operadores lógicos
- not Negación lógica
- and Intersección lógica
- or Unión lógica
- xor Or Excluyente
27Operadores Booleanos and
p q p and q
V V V
V F F
F V F
F F F
28Operadores Booleanos or
p q p or q
V V V
V F V
F V V
F F F
29Operadores Booleanos xor ssi p o q es verdadera
p q p xor q
V V F
V F V
F V V
F F F
30Ejemplos
- 65 lt estatura lt 75
- if (estatura gt 65) and (estatura lt 75) then
- if (calif gt 65) and (calif2 gt 65) then
- write (contratado)
- else
- write (rechazado)
31Precedencia 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 lt,gt,gt,lt,ltgt,
32Precedencia de operadores
- 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.
33Estructuras de Selección
- 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)
- block 1
- (END)
- SELECTOR2
- block 2
- ELSE
- block d
- END
34Pascal
- Ejemplo
- ReadLn (ch)
- CASE (ch)
- a, e, i, o, u
- WriteLn (vocal)
- Else
- WriteLn (consonante u otro caracter)
- END
35Pascal ciclos condiconales
- Repite
- Repeat
- block
- Until (expr-lógica verdadera)
- Mientras
- While (expr-lógica verdadera)
- begin
- block
- end
36Pascal
- invitado 0
- REPEAT
- invitado invitado 1
- WriteLn (tu invitado )
- ReadLn (nombre)
- UNTIL (invitado 10)
-
- WHILE (invitado lt 10) DO
- begin
- invitado invitado 1
- WriteLn (tu invitado )
- ReadLn (nombre)
- end
- END DO
37Comparación 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 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.
38- 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. - 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.
39Pascal
- 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). - El paso de datos se conoce como paso de
parámetros, estos pueden ser pasados por
referencia o por valor.
40Pascal
- 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. - Ejemplo
- Var a,b integer ! Producido o ! modificado
41Pascal
- 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. - a, b integer ! Sólo puede ser
utilizado
42(No Transcript)
43Pascal
- Ejemplo de abstracción funcional (function)
- PROGRAM cubo
- se usa una función definida por el programador
para elevar al cubo - var
- num, cubo longint
- Function encubo (ninteger)longint
parametros formales - begin
- encubo nnn
- 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
44Pascal
- Ejemplo de abstracción procedural (procedure)
- PROGRAM cubo
- se usa una función definida por el programador
para elevar al cubo - var
- num, cubo longint
- Procedure encubo (ninteger var
cubolongint) parametros formales - begin
- cubo nnn
- 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
45Pascal
- 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.
46Pascal
- Ejemplo de función recursiva
-
- function fact (ninteger) longinteger
- Begin
- if n 1 then
- fact 1
- else
- fact n fact (n-1)
- End fact
47Pascal
- Ejemplo de procedimiento recursivo
- program proced_recur
- procedure tarea (ninteger)
- Begin
- if n 1 then
- writeln (n 1 Regresa)
- else
- begin
- writeln (n, hola)
- tarea (n-1)
- writeln (n, adios)
- end else
- end tarea
- begin
- tarea (4)
- end.
48Pascal 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 - 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.
49Pascal
- Las Unidades son un cierto tipo de programa
externo. - Unit (nombre)
- Interface publicos
- declaraciones uses, const, type, o var, si
existen - encabezados de procedimientos y funciones
- Implementation
- declaraciones completas de los procedimientos y
funciones - 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. - En la sección implementación, aquà se detallan
las definiciones completas de los subprogramas
con el encabezado repetido. El último debe
terminar en
50Pascal
- 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
51Pascal
- UNIT InfoMat
- Interface
- Uses
- Const
- MaxLongVect 50
- Type
- Tipo1 integer
- TipoDeElemento Record
- NumFil,
- NumCol
integer - Info array
1..maxlogvec of Tipo1 - End
- Implementation
- End.
52Pascal
- Unit Matriz
- USES InfoMat
- Interface
- Function InicMatriz (n,minteger)
TipoDeElemento - Function AsignaMatriz (mat TipoDeElemento,
i1,i2integer valTipo1) TipoDeElemento - Function ElemMatriz (mat TipoDeElemento,
i1,i2integer) 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
53Pascal
- Implementation
- Function InicMatriz (n,minteger)TipoDeElemento
- Var
- iinteger mat TipoDeElemento
- Begin
- mat.NumFil n mat.NumCol m
- For i 1 to MaxLongVec
- Mat.infoi 0
- InicMatriz mat
- End
54- Function AsignaMatriz (mat TipoDeElemento,
i1,i2integer valtipo1) TipoDeElemento - Begin
- Mat.info(i2-1)mat.NumFil) i1 val
- AsignaMatriz mat
- End
- Function ElemMatriz (matTipoDeElemento
i1,i2integer)Tipo1 - Begin
- ElemMatriz mat.info((i2-1) mat.NumFil)
i1 - End
- .
- .
- End.
55Pascal uso de el TAD Matriz
- Program Matrices
- Uses Matriz, InfoMat
- Var mat1,mat2,MatSum,MatRes,MatMul,MatTTransp
TipoElemento - Op integer
- .
- .
- .
56fin