modulo 5 - pascal introduc

Anuncio
Módulo 5:
Lenguaje Pascal
Tecnologías en la Educación Matemática
Dr. Carlos Gonzalía
DCIC - UNS
Técnologías en la educación matemática – Dr. Carlos Gonzalía – 1 de
Copyright
●
●
●
Copyright © 2012: M. Capobianco, C. Gonzalía
Se asegura la libertad para copiar, distribuir y modificar este
documento de acuerdo a los términos de la GNU Free
Documentation License, Versión 1.2 o cualquiera posterior
publicada por la Free Software Foundation, sin secciones
invariantes ni textos de cubierta delantera o trasera.
Una copia de esta licencia está siempre disponible en la página
http://www.gnu.org/copyleft/fdl.html.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 2
Cómo seguimos
PROBLEMA
●
Resolveremos problemas con
soluciones objetivas.
SOLUCIÓN
●
Expresaremos la solución como
un algoritmo.
ALGORITMO
●
PROGRAMA
Codificaremos la solución en el
lenguaje Pascal.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 3
Aprender un lenguaje
nuevo
●
●
¿Qué significa aprender un nuevo lenguaje?
Pensemos en aprender a hablar italiano, ¿Qué
tendremos que aprender?
–
nuevas palabras
–
nuevas formas de conectar estas palabras
–
qué significa cada expresión en el contexto de este
lenguaje
–
qué estilos comunicativos se usan
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 4
Tipos de lenguajes
Lenguajes
Naturales
castellano
inglés
Artificiales
código morse
notación musical
lenguajes de programación
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 5
Aprender un lenguaje de
programación
Para aprender un lenguaje de programación nuevo
necesitamos conocer:
–
Alfabeto: qué letras puedo usar
–
Vocabulario: qué palabras son válidas
–
Sintaxis: cómo escribir sentencias del lenguaje
–
Semántica: qué significan las sentencias del lenguaje
–
Pragmática: el estilo de uso de las sentencias
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 6
El lenguaje Pascal
Pascal fue definido por Niklaus Wirth en 1972.
●
Alfabeto: letras y símbolos del código ASCII
●
Vocabulario: palabras reservadas e identificadores
●
Sintaxis: cómo escribir las sentencias
●
Semántica: qué significan las sentencias
●
Pragmática: el uso de los programas
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 7
Alfabeto
●
●
●
El alfabeto es el código ASCII.
American Standard Code for Information
Interchange (código estándar americano para
intercambio de información).
Está formado por 256 símbolos.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 8
Código ASCII
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 9
Código ASCII Extendido
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 10
Vocabulario
●
●
●
●
Los identificadores son nombres para elementos
del programa (por ejemplo datos) creados por el
programador.
Deben comenzar con una letra, seguida de más
letras o números (o el signo de “subrayado”).
Ejemplos: num, cantidad, es_nro_par,
SueldoNeto, Valor2
No afecta si usamos mayúsculas o minúsculas.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 11
Palabras reservadas
●
●
●
Son términos que ya tienen un significado en el
lenguaje Pascal y sólo pueden ser usadas por el
programador con ese significado.
Ejemplos: PROGRAM, IF, ELSE, BEGIN
Lista completa en Appendix B del Free Pascal
User’s Guide, en el sitio:
http://www.freepascal.org/docs-html/user/user.html
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 12
Ejercicio
●
●
Escribir 5 nombres de identificadores válidos.
Escribir 5 nombres de identificadores no válidos y
decir en cada caso porque razón no son válidos.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 13
La forma que debe tener un programa
PROGRAM <nombre del programa> ;
CONST
< Declarar los datos constantes a usar por el
programa >
VAR
< Declarar los datos variables a usar por el
programa >
< Declarar algoritmos auxiliares (subprogramas) a
usar por el programa >
BEGIN
< acciones que ejecutará el programa >
END.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 14
Datos en Pascal
●
●
●
Los datos tienen un nombre y un valor asociado
(como en los algoritmos)
El valor puede modificarse durante la ejecución
del programa
Los datos se llaman
–
variables: pueden recibir diferentes valores durante la
ejecución del programa
–
constantes: cuyo valor nunca cambia
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 15
Tipos de Datos
●
●
El tipo define el conjunto de valores que puede
tomar una variable.
Existen algunos tipos predefinidos:
–
–
–
–
Integer: es un subconjunto de los números enteros.
Real: es un subconjunto de los números reales.
Boolean: es el conjunto {true, false} (valores
lógicos).
Char: es el conjunto de caracteres del código ASCII.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 16
Declaración
Declaración de variables: se escribe la palabra
reservada VAR, y luego nombre y tipo de dato de
cada variable.
VAR contador: INTEGER;
raiz1,raiz2,raiz3: REAL;
letra: CHAR;
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 17
Tipo Integer
Operador operación Operandos Resultado
+
*
div
mod
suma
resta
producto
división
entera
resto
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 18
Tipo Real
Corresponde a un subconjunto de los reales
Operador operación Operandos Resultado
+
*
/
suma
resta
producto
div. real
Real
Real
Real
Real
Real
Real
Real
Real
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 19
Tipo Boolean
●
●
Este tipo de dato tiene únicamente dos valores
asociados, true y false (correspondientes a
“verdadero” y “falso”).
Operadores: los operadores booleanos “y”, “o”, y
“no” (vistos en la primer clase), se denominan en
Pascal and, or y not.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 20
Tipo Char
●
●
●
●
Este tipo de dato tiene asociados los distintos
caracteres que componen el código ASCII.
¿Cómo se diferencia un dato cuyo nombre es A de
la letra A?
Para referenciar a un carácter como un valor de
tipo CHAR, se utilizan las comillas simples.
Ej.: ’a’, ’?’, ’+’, ’ ’, etc.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 21
Ejercicio
●
●
●
Analizar la corrección de los siguientes identificadores en
Pascal: ALPHA, A$3, 3F, r-4, Comisión.
Para cada uno de los siguientes casos, definir dos
constantes utilizando nombres significativos: precios,
años, días, letras.
Para cada uno de los datos definir variables de tipo
adecuado para representarlos: un día del mes, cantidad de
alumnos en un curso, indicar si encontré un nombre en
una lista de personas, la raíz cuadrada de un número.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 22
Sintaxis: asignación
●
En algoritmos: <nombre_del_dato> ← <expresión>
Ejemplos:
●
dia ← 31
suma ← suma + 5
En Pascal:
<identificador_de_variable> := <expresión>
Ejemplos:
dia := 31
suma := suma + 5
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 23
Lectura y escritura
●
●
Veremos cómo hacer que nuestro programa se
comunique con el usuario.
Para esto Pascal provee primitivas para mostrar
valores por pantalla y leer valores por teclado.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 24
Lectura y escritura
●
●
●
●
WRITE: muestra valores en la pantalla.
WRITELN: muestra valores en pantalla y baja de
línea (LN por “line”).
READ: lee valores que son ingresados por teclado.
READLN: lee valores y espera por un FIN DE
LINEA (LN).
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 25
Ejemplo de escritura
write(’YO’);
write(’TU’);
write(’EL’);
YOTUEL
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 26
Ejemplo de escritura
writeln(’YO’);
writeln(’TU’);
writeln(’EL’);
YO
TU
EL
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 27
Lectura en Pascal
read(A);
read(B);
read(C);
123
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 28
Lectura en Pascal
readln(A);
readln(B);
readln(C);
1
2
3
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 29
El lenguaje de los
procesadores
Cada procesador entiende un conjunto de
instrucciones específicas, esto depende del
fabricante (Intel, AMD, Sun, IBM, Motorola, etc.).
297D:0100
297D:0102
297D:0104
297D:0106
297D:0108
297D:010A
297D:010C
297D:010E
MOV
INT
CMP
JNZ
MOV
MOV
INT
INT
AH,01
21
AL,0D
0100
AH,02
DL,AL
21
20
Muestra por
pantalla lo que
se teclea, hasta
presionar Enter
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 30
Un poco de historia
●
En la década del '50 los programadores debían
conocer las instrucciones específicas de cada
procesador.
Programación
de bajo nivel
8086
Motorola
IBM
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 31
La programación en los '60
Lenguaje de
Programación L
Traductor
de L a 8086
8086
Traductor de L a
Motorola
Motorola
Traductor
de L a IBM
IBM
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 32
La programación de alto
nivel
Algol
Cobol
...
Fortran
Compilación
8086
Motorola
IBM
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 33
Programando en Pascal
●
●
¿Tengo que aprender el
lenguaje de cada
procesador?
NO. Hay lenguajes de
programación de “alto
Programa en Pascal
nivel” (como Pascal) que
permiten escribir un
programa que puede ser
ejecutado por cualquier
computadora.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 34
Programando en Pascal
●
●
Para esto se necesita una
traducción del lenguaje
de “alto nivel” al
lenguaje de la máquina
específica.
Dicha traducción la
realiza un “compilador”,
si recibe la opción
correspondiente.
Compilador
Programa en Pascal
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 35
Edición, compilación y
ejecución
Edición
Compilación
Programa fuente
escrito en Pascal
Ejecución
Programa ejecutable
por la computadora
Un entorno hace posible editar, compilar y ejecutar
programas. Nosotros usaremos a Lazarus.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 36
Estructura de un programa
PROGRAM <nombre del programa> ;
CONST
< Declarar los datos constantes a usar por el programa
>
VAR
< Declarar los datos variables a usar por el programa
>
< Declarar algoritmos auxiliares (subprogramas) a usar
por el programa >
BEGIN
< acciones que ejecutará el programa >
END.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 37
Ejemplo
PROGRAM HolaMundo;
VAR nro, cuadrado: integer;
BEGIN
writeln('Este es mi primer programa en
Pascal');
write('Ingrese un número: ');
readln(nro);
cuadrado := nro*nro;
write('El cuadrado del número ingresado es: ');
writeln(cuadrado);
END.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 38
Ejemplo
PROGRAM Circulo; {cálculo de perímetro}
CONST Pi = 3.141592;
VAR radio: INTEGER;
circunferencia: REAL;
BEGIN
write(’Ingrese el radio: ’);
{ingresa radio por teclado}
readln(radio);
circunferencia := 2 * Pi * Radio;
{hallo circunferencia}
writeln(’Dado el radio: ’,radio,’ la
circunferencia es: ’, circunferencia);
END.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 39
Ejercicios
●
●
Escribir un programa en Pascal para calcular el
promedio de 4 números leídos por teclado.
Escribir un programa en Pascal para calcular el
área de un rectángulo, leyendo por teclado la base
y la altura del mismo.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 40
Ejercicios
●
●
Determinar la validez de
las siguientes
declaraciones:
Const
Base = 173.5;
Error = 0.1E-5;
Parar = ’&;
Blanco = ’ ’;
●
Var
i,j : Real;
k : Boolean;
m : Integer;
●
Var
Cant = 100;
Suma: 45;
Diferencia:
Integer;
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 41
Expresiones en Pascal
●
●
●
Ahora veremos cómo escribir expresiones más
complejas en Pascal.
Mencionaremos algunas primitivas provistas por
Pascal que pueden usarse en las expresiones.
Diferentes tipos tienen asociado un conjunto
diferente de primitivas para operar con ellos.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 42
Operadores
●
●
●
El tipo boolean tiene asociados los operadores
and, or y not que corresponden a los operadores
lógicos y, o y no que vimos en la primera clase.
Los tipos integer y real tienen asociados los
operadores aritméticos de suma (+), resta (-),
multiplicación (*) y división (/).
El tipo integer tiene además a div y mod.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 43
Primitivas del tipo Integer
●
●
La constante MAXINT representa el máximo entero
que puede usarse.
Algunas funciones predefinidas:
–
Succ(N): devuelve el sucesor de N
–
Pred(N): devuelve el predecesor de N
–
SQR(N): devuelve N2
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 44
Ejemplos
●
SQR(3) devuelve 9
●
SQR(-4) devuelve 16
●
Pred(2) devuelve 1
●
Succ(3) devuelve 4
●
Pred(-4) devuelve -5
●
¿Se puede aplicar la función succ a una variable
de tipo real? ¿Por qué?
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 45
Ejercicios
●
●
●
Escribir un programa en Pascal para calcular el
cuadrado de un número dado, usando la función
SQR.
Escribir un programa en Pascal que calcule el
valor de la función f(x)=x2+x4 para un x dado
como entrada.
Escribir un programa en Pascal que dado un
número calcule su predecesor y su sucesor usando
las funciones aprendidas.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 46
Primitivas del tipo real
●
●
●
●
Función SIN: dado un valor de un ángulo (en radianes),
devuelve su seno. Análogamente COS, TAN. Ejemplo:
SIN(0) = 0, COS(0) = 1
Función SQRT: raíz cuadrada. Ej.: SQRT(4) = 2.0
Función ROUND: dado un valor real, devuelve el entero
más cercano. Ejemplo: ROUND(0.9) = 1
Función TRUNC: dado un valor real, devuelve el entero
que resulta de eliminar la parte decimal. Ejemplo:
TRUNC (0.9) = 0
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 47
Ejercicios
●
●
●
Escribir un programa en Pascal para calcular la
raíz cuadrada de un número dado usando la
función SQRT.
Escribir un programa en Pascal que calcule el seno
y el coseno de un ángulo dado como entrada.
Escribir un programa en Pascal para que dado un
número real calcule el entero más cercano a éste.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 48
Primitivas del tipo char
●
●
●
●
Función CHR: permite obtener un carácter cualquiera a
partir de su código ASCII.
Ejemplo: chr(65) es ´A´, chr(33) es ´!´
Función ORD: dado un carácter cualquiera, devuelve su
código ASCII.
Ejemplo: ord(´A´) = 65, ord(´!´) = 33
También funcionan pred y succ.
Se pueden comparar caracteres con los operadores
relacionales.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 49
Ejemplo
PROGRAM CaracterSiguiente;
VAR caracter, siguiente: char;
BEGIN
write('Ingrese un carácter: ');
readln(caracter);
siguiente := succ(caracter);
write('El próximo carácter es: ');
writeln(siguiente);
END.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 50
Ejercicio
Escribir un programa en Pascal que permita obtener
la mayúscula de una letra dada como entrada.
Tecnologías en la educación matemática – Dr. Carlos Gonzalía – 51
Descargar