You are on page 1of 31

Introduccin al lenguaje de programacin Pascal

Dr. Francisco Jos Madrid Cuevas


Dpto. de Informtica y Anlisis Numrico.
Universidad de Crdoba. Espaa.

24 de septiembre de 2009

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

1 / 31

GNU Free Documentation License

Copyright (c) 2006,2007,2008,2009,2010 Francisco Jos Madrid Cuevas.


Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.

Una copia de la GNU Free Documentation License puede ser obtenida en la


direccin http://www.fsf.org/licensing/licenses/fdl.html.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

2 / 31

Introduccin
Resolucin de problemas con una computadora
Ejemplo
Por qu utilizar un lenguaje de programacin como Pascal?
Los ltimos pasos: el compilado y la ejecucin.

Visin general de la gramtica de Pascal


Reglas lxicas
Reglas sintcticas

Ejemplo de resumen: Pasar de grados a radianes.

Lecturas recomendadas

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

3 / 31

Resolucin de problemas con una computadora

Anlisis: descripcin no ambga del problema. Especicacin clara de

las entradas y de las salidas.


Diseo: Cmo se va a codicar los datos a procesar (estructuras de
datos) y cmo se va a codicar los procesos a realizar sobre estos
datos (algoritmos).
Implementacin: Traduccin a un lenguaje de programacin (Pascal)
de las estructuras de datos y algoritmos diseados para resolver el
problema. Compilacin de los programas fuentes para generar los
cheros ejecutables en una computadora.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

4 / 31

Ejemplo: Pasar de grados sexagesimales a radianes I

Problema: Se desea un programa para pasar de grados sexagesimales a

radianes.

Especicacin:
Entrada: una magnitud real en el intervalo [0, 360] codicando un ngulo
sexageximal.

Salida: una magnitud real en el intervalo [0, 2] que representa el mismo


ngulo expresado en radianes.

principio resolucin: radianes =

FJMC (Univ. Crdoba)

ngulo
180,0

Introduccin a Pascal

24 de septiembre de 2009

5 / 31

Ejemplo: Pasar de grados sexagesimales a radianes II


Diseo:
Datos:
Entrada: una variable tipo real angulo codicando un ngulo
sexagesimal.

Salida: una variable tipo real rad codicando el ngulo expresado en


radianes.

Auxiliares: un constante numrica PI=3,141592.


Algoritmo
angulo
rad angulo x
Visualizar el valor de rad.

Introducir

calcular:

FJMC (Univ. Crdoba)

PI / 180.0

Introduccin a Pascal

24 de septiembre de 2009

6 / 31

Ejemplo: Pasar de grados sexagesimales a radianes III


Implementacin:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

program grados_a_radianes;
const
pi:real = 3.141592;
var
angulo:real;
rad:real;
begin

writeln('Este programa sirve para pasar');


writeln('ngulos expresados en grados a ');
writeln('a radianes');
writeln;
write('Introduce el ngulo en grados: ');
readln(angulo);
rad := angulo * pi / 180.0 ;
writeln('En radianes es:', rad:6:3);

end.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

7 / 31

Por qu utilizar un lenguaje de programacin como Pascal?

Reducir la complejidad.
Obtener portabilidad.
Facilita el mantenimiento.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

8 / 31

Los ltimos pasos: el compilado y la ejecucin.

Compilador: herramienta informtica para traducir a cdigo mquina.


El compilador detecta

errores de ortografa y sintcticos.


lgicos.

El compilador puede no detectar errores 

Si un programa est correctamente escrito el compilador generar un


chero
2

objeto ejecutable.

El usuario ejecutar el chero generado para resolver su problema si el


programador no cometi errores lgicos.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

9 / 31

Visin general de la gramtica de Pascal

Reglas lxicas (formacin de palabras).


Reglas sintcticas (formacin de sentencias).

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

10 / 31

Reglas lxicas

Denen la ortografa del lenguaje.


La gramtica de Pascal dene los siguientes tipos de palabras:
Identicadores.
Palabras clave.
Constantes literales.
Separadores y operadores.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

11 / 31

Identicadores:
Identican a los distintos objetos que se utilizan en un programa:
constantes, variables, funciones, procedimientos, programas y unidades.

Reglas de construccin:
Caracteres vlidos: [A-Z], [a-z], [0-9] y '_'.
Han de comenzar con una letra [A-Z].
Los identicadores no pueden coincidir con una

palabra clave

u otro

identicador ya denido.
No hay diferencia entre maysculas y minsculas.

Example
altura, Peso, a, Primer_Apellido.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

12 / 31

Palabras clave:

Son palabras con un signicado especial.

ABSOLUTE

AND
ARRAY
BEGIN
CASE

CONST
DIV
DO
DOWNTO
ELSE

END
FOR

INLINE
INTERFACE
INTERRUP
LABEL

FUNCTION

NIL

EXTENAL
FILE
FORWARD
GOTO

IF

IMPLEMENTATION
INT

MOD
NOT
OF

OR

PACKED

PROCEDURE
PROGRAM
RECORD

REPEAT
SET
SHL
SHR

STRING
THEN
TO

TYPE
UNIT

UNTIL
USES
VAR
WHILE
WITH
XOR

Cuadro: Palabras clave del lenguaje Pascal.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

13 / 31

Constantes literales:

Son valores (datos codicados) explcitamente introducidos en el


programa. Hay varios tipos:

Tipos de constantes literales:

Nmeros: -125 , -125.0 , -125.5 , 1.255E+2


Caracteres: 'A', 'a', '{'
Cadenas de caracteres: 'Hola ', 'mundo'
Lgicas: true (verdad) y false (falso)

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

14 / 31

Separadores:
Separan los distintos elementos de la gramtica.

Smbolos separadores:
Separan palabras: '_', <retorno>, <tabulador>.
Separa sentencias: ';'.
Separa argumentos en una lista: ','.
Separa identicador de tipo: ':'

Example
program ejemplo;
a : real;
calcular_media(peso1 , peso2, peso3);

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

15 / 31

Operadores:

Utilizados para construir expresiones.

Smbolos:
Aritmticos: '+', '-', '*', '/'

Comparacin: '=', '<', '<=', '>', '>=', '<>'.


Para agrupar: '(', ')'.
Asignacin: ':='.

Example
media := (valor1 + valor2) / 2.0;
if (valor1 <= valor2) and (valor1 <= valor3) then

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

16 / 31

Reglas sintcticas
Denen cmo se deben construir frases (sentencias).
Hay distintos tipos de sentencias: declarativas, asignacin, control de
la ejecucin y llamada a sub-programas.
En general, toda sentencia en Pascal debe acabar con un carcter ';'.

Estructura general de un programa en Pascal:


1 program nombre_programa;
2
{declaracin de constantes}
3
{declaracin de variables}
4
{declaracin de funciones}
5
{declaracin de procedimientos}
6 begin
7
sentencias ...
8 end.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

17 / 31

Declaracin de constantes y variables:

Representan datos codicados.


Se denen asignndoles un
codicado su
Una

Valor.

constante

Identicador y un Tipo, siendo el dato

tiene un valor asignado directamente en el programa fuente y

no puede cambiar.
Una

variable

puede variar su valor a lo largo de la ejecucin de un programa

y, en general, no tiene un valor asignado al comienzo de la ejecucin.


Cada variable tiene asignada una porcin de memoria para almacenar su
valor.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

18 / 31

Tipos predenidos en Pascal:

El tipo permite saber qu se puede hacer con el valor asociado.

Tipos simples pre-denidos:


CHAR : tipo carcter.
INTEGER : tipo entero.
REAL : tipo real.
BOOLEAN : tipo lgico.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

19 / 31

Declaracin de constantes:
Las constantes se declaran, si las hay, antes que las variables.

Sintaxis:

CONST
identificador1 : tipo = valor1 ;
identificador2 : tipo = valor2 ;
...

Example
CONST
pi : real = 3.141592653;
max_dim : integer = 100;
sqrt2 = 1.414213562;

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

20 / 31

Declaracin de variables:
Las variables se declaran despus de las constantes.

Sintaxis:

VAR
identificador1 : tipo ;
identificador2 : tipo ;
...

Example
VAR
peso : real;
tiene_colesterol : boolean;

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

21 / 31

Sentencia asignacin interna:

Sirve para almacenar un valor en una variable.


Observa que se usa los caracteres ':=', no '=' o ':
El

identicador

='.

se reere a una variable previamente declarada.

La expresin debe resultar en un valor acorde al tipo de la variable.


Se denomina sentencia de asignacin interna porque el valor a asignar a la
variable lo calcula el propio programa.

Sintaxis:

FJMC (Univ. Crdoba)

identificador := expresin ;

Introduccin a Pascal

24 de septiembre de 2009

22 / 31

Expresiones aritmticas:

Se construyen usando variables numricas, constantes numricas,


operadores y funciones numricas. Las constantes numricas pueden
ser con nombres o literales.
Los operadores que pueden utilizarse son: '+', '-', '*', '/', '(', ')',
y

mod.

div

La precedencia de operadores es la habitual y se pueden utilizar


parntesis para variar dicha precedencia.
!!Ojo con el tipo de la expresin y el de la variable destino

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

23 / 31

Funciones matemticas predenidas:

Funciones matemticas pre-denidas:


Funcin
abs(x)
arctan(x)
cos(x)
exp(x)
ln(x)
round(x)
sin(x)
sqr(x)
sqrt(x)
trunc(x)

FJMC (Univ. Crdoba)

Descripcin

Parmetro

Valor absoluto
Arcotangente (radianes)
Coseno (radianes)

ex

Logaritmo neperiano
Entero ms prximo
Seno (radianes)

2
x

Quitar parte decimal

integer o
integer o
integer o
integer o
integer o
real
integer o
integer o
integer o
real

Introduccin a Pascal

real
real
real
real
real
real
real
real

Resultado
Segn argumento
real
real
real
real
integer
real
Segn argumento
real
integer

24 de septiembre de 2009

24 / 31

Ejemplos de expresiones aritmticas:

Example
nota := round(n_trabj*0.1+n_test*0.4+n_pract*0.5);
hipotenusa := sqrt(sqr(cateto_a)+sqr(cateto_b));
annos := trunc(dias_vividos / 365);
contador_hasta_cien := (contador_hasta_cien+incremento) mod
100;

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

25 / 31

Ejecucin de la sentencia de asignacin:

La sentencia de asignacin es una substitucin del valor de la variable


destino por el valor resultante de evaluar la expresin.
Ejecucin:
1

Evaluar la expresin.

Sustituir el valor de la variable por el valor de la expresin.

Problema: Cmo intercambiar el valor de dos variables

FJMC (Univ. Crdoba)

Introduccin a Pascal

b?.

24 de septiembre de 2009

26 / 31

Sentencia para ejecutar procedimientos:

Un procedimiento es un sub-programa al que se le da un nombre.


Los procedimientos tienen argumentos.

Sintaxis:
identificador ( arg_1, arg_2, ..., arg_n );

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

27 / 31

Procedimiento para salida de datos:

Para sacar datos:

WRITE

WRITELN.

Tiene un nmero indeterminado de parmetros valor.

Example
WRITE('Hola '); WRITE('mundo');
WRITELN('Hola '); WRITE('mundo');
WRITELN('El resultado es: ',
sqrt(sqr(lado_a)+sqr(lado_b)):10:4, ' centmetros');

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

28 / 31

Procedimiento para entrada de datos:

Para entrar datos:

READ

READLN.

Tiene un nmero indeterminado de parmetros variable.


Cada valor introducido por teclado se convierte al tipo de la variable
correspondiente y se almacena en la misma.
Supone una asignacin externa.

Example
READ(edad); READ(altura);
READLN(edad); READLN(altura);
READLN(edad,altura);

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

29 / 31

Ejemplo: Pasar de grados sexagesimales a radianes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

program grados_a_radianes;
const
pi:real = 3.141592;
var
angulo:real;
rad:real;
begin

writeln('Este programa sirve para pasar');


writeln('ngulos expresados en grados a ');
writeln('a radianes');
writeln;
write('Introduce el ngulo en grados: ');
readln(angulo);
rad := angulo * pi / 180.0 ;
writeln('En radianes es:', rad:6:3);

end.

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

30 / 31

Lecturas recomendadas:

Captulos 2 y 3 de:
S. Leestma y L. Nyho, 

Programacin en Pascal. Cuarta Edicin,

Prentice Hall, 1999.

Captulos 1, 2 y 3 de:
Fundamentos de Programacin. Libro de Problemas en
Pascal y Turbo Pascal, McGraw-Hill, 1997.

L. Joyanes y otros, 

FJMC (Univ. Crdoba)

Introduccin a Pascal

24 de septiembre de 2009

31 / 31

You might also like