Anda di halaman 1dari 79

Tema 1: Elementos bsicos de Pascal

Tema 1 Elementos bsicos de Pascal

Introduccin a la Programacin Grado de Ingeniera Informtica

Tema 1
Introduccin
Problemas, algoritmos y programas Paradigmas y lenguajes de programacin Desarrollo sistemtico de aplicaciones

Elementos bsicos de Pascal


Historia de Pascal Tipos de datos bsicos Elementos bsicos del lenguaje La documentacin del programa

Tipos de datos definidos por el programador: subrangos


Introduccin a la Programacin 2011-2012 2

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Objetivo
Exponer los conceptos clave para la resolucin de problemas por medio de la computadora u ordenador Presentar los elementos bsicos del lenguaje de programacin Pascal:
Conocer el concepto de tipo de dato, en concreto, los tipos de datos bsicos predefinidos en el lenguaje

Presentar la correcta construccin de programas sencillos en Pascal:


Conocer la estructura general de un programa Utilizar las instrucciones de entrada y salida de datos
Introduccin a la Programacin 2011-2012 3

Organizacin de una computadora

Programa

Datos Entrada

COMPUTADORA

Datos Salida

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Componentes de una computadora


Programa

MEMORIA Datos de entrada Datos de salida

PROCESADOR
Lovillo Gil Introduccin a la Programacin 2011-2012

En qu consiste la programacin?
Describir lo que debe hacer la computadora para resolver un problema concreto utilizando un lenguaje de programacin

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Fases para resolver un problema con una computadora:


1. Anlisis del problema 2. Descripcin de un mtodo (algoritmo) que lo resuelva 3. Escritura del algoritmo en un lenguaje de programacin 4. Comprobacin del correcto funcionamiento
Lovillo Gil Introduccin a la Programacin 2011-2012

1.1 Problemas, algoritmos y programas

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

La definicin del problema


Definicin: Problema
Proposicin encaminada a averiguar el modo de obtener un resultado, cuando se conocen ciertos datos de partida

Tipos de Problemas
Sin solucin Determinados: con una nica solucin Indeterminados: con un nmero indefinido de soluciones
Lovillo Gil Introduccin a la Programacin 2011-2012

La definicin del problema


Anlisis del problema
Consiste en establecer con precisin qu se plantea

Especificacin
Descripcin precisa del problema: - datos de partida - resultado
lenguaje natural lenguajes formales
Lovillo Gil

puede resultar impreciso lgica, matemticas

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Un ejemplo
Ejemplo de Especificacin: Problema de divisin eucldea
Especificacin: Datos
2 enteros, dividendo y divisor (D,d) d no nulo

Resultado
2 enteros, cociente y resto (C,R) 0 R < d, tal que D = d*C + R

Lovillo Gil

Introduccin a la Programacin 2011-2012

Algoritmo
Definicin 1:
Descripcin precisa de los pasos que nos llevan a la solucin de un problema planteado

Definicin 2:
Mtodo tal que partiendo de datos apropiados, conduce sistemticamente a los resultados requeridos en la especificacin del problema
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Caracterizacin de un algoritmo
La descripcin de un algoritmo afecta a:
Entrada, que son los datos necesarios Proceso o instrucciones a ejecutar Salida de resultados

Proceso ENTRADA SALIDA

Lovillo Gil

Introduccin a la Programacin 2011-2012

Caracterizacin de un algoritmo
Algoritmo funcin matemtica
Ejemplo: Suma Lenta: NxN a + b N c, c=a+b

Es constructivo: hay que precisar tambin el proceso de clculo

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Caracterizacin de un algoritmo
Precisin (sin ambigedad) en cuanto a:
Orden: secuencia de pasos que han de llevarse a cabo Contenido: qu se realiza en cada paso

Determinismo:
Debe responder del mismo modo ante las mismas condiciones

Finitud:
Debe tener fin
Lovillo Gil Introduccin a la Programacin 2011-2012

Lenguajes algortmicos
Sirven para describir un algoritmo Son ms precisos que el lenguaje natural, pero menos rgidos (o formales) que un lenguaje de programacin
Se los considera un lenguaje intermedio Tienen cierta independencia de los lenguajes de programacin

Ejemplos:
Pseudocdigo, diagramas de flujo
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Ejemplo: Algoritmo Suma Lenta


Partimos de dos cantidades: a y b. El mtodo de suma lenta consiste en ir pasando de a a b una unidad cada vez, de forma que cuando a=0, el resultado ser el valor de b Algoritmo Suma Lenta (Pseudocdigo) 1. Sean a, b N 2. Leer (a, b) 3. Mientras (a 0) hacer a := a-1 b := b+1 fin_mientras 4. Escribir (b)
Lovillo Gil Introduccin a la Programacin 2011-2012

Aspectos de un algoritmo
Obligados
Correccin: respecto a las especificaciones Complejidad: recursos que un algoritmo necesita. En mquinas secuenciales (tiempo y memoria)

Deseables
Generalidad: sirva para una clase de problemas lo ms amplia posible Eficiencia: ser ms eficiente en la medida que necesita de menos pasos
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

Tema 1: Elementos bsicos de Pascal

Problemas y algoritmos
Algunos problemas tienen distintas soluciones algortmicas.
Ejemplo: mximo comn divisor (mcd)

Algunos problemas no tienen solucin algortmica


Ejemplo: problema de parada (encontrar un algoritmo que determine si otro algoritmo finaliza o no con unos determinados datos de entrada)
Lovillo Gil Introduccin a la Programacin 2011-2012

Programas
Programa: Conjunto de instrucciones precisas,
en un lenguaje entendible por la computadora

Programacin: Proceso de construccin de


programas

Fases:
Anlisis del problema Solucin conceptual del problema Escritura del algoritmo en un lenguaje de programacin Comprobacin de resultados
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

10

Tema 1: Elementos bsicos de Pascal

Ejemplo: Programa Suma Lenta


Programa Pascal (codificando el algoritmo Suma Lenta)
PROGRAM SumaLenta (input,output); {Se suman dos enteros positivos, pasando unidades de uno a otro} VAR a,b:integer; BEGIN readln(a,b); WHILE a <> 0 DO BEGIN a:=a-1; b:=b+1 END; {while} writeln(b) END. {SumaLenta}
Lovillo Gil Introduccin a la Programacin 2011-2012

1.2 Paradigmas y Lenguajes de programacin

Grado de Ingenieria Informatica. 11-12

11

Tema 1: Elementos bsicos de Pascal

Lenguajes de programacin
Definicin:
Se trata de un lenguaje artificial diseado para representar algoritmos de forma inteligible para las computadoras

Lenguaje de programacin y lenguaje natural


Los lenguajes de programacin son ms formales y rigurosos Adems, son ms simples en su sintaxis y semntica
Lovillo Gil Introduccin a la Programacin 2011-2012

Lenguajes de programacin

Algunas caractersticas relevantes:


Sintaxis Semntica Traduccin y ejecucin Errores y cmo subsanarlos

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

12

Tema 1: Elementos bsicos de Pascal

Sintaxis
Especifica inequvocamente cmo estn construidos los programas de un LP Especificacin de la sintaxis
Gramticas (BNF) Diagramas Sintcticos

Ejemplo: Sintaxis de un nmero entero


Nmero Entero

+ Entero sin signo -

Lovillo Gil

Introduccin a la Programacin 2011-2012

Semntica
Asigna un significado a cada tipo de construccin de un LP Formas de especificacin:
ejemplos (y contraejemplos) en los manuales definicin formal

Ejemplo:
write(hola); write(hola);
Lovillo Gil

En pantalla aparece:
holahola hola hola
Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

13

Tema 1: Elementos bsicos de Pascal

Traduccin y ejecucin
El lenguaje de alto nivel ha de traducirse al lenguaje de la mquina Formas de traduccin:
Compilacin:
todo el cdigo fuente (en un archivo) se traduce a cdigo ejecutable (en otro archivo) se ejecuta dicho cdigo ejecutable

Programa fuente Cdigo fuente


Lovillo Gil

Compilador

Programa objeto Cdigo ejecutable

Introduccin a la Programacin 2011-2012

Traduccin y ejecucin

Interpretacin:
Se traduce una instruccin del cdigo fuente Se ejecuta dicha instruccin Se repiten los pasos anteriores con todas las instrucciones del cdigo fuente

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

14

Tema 1: Elementos bsicos de Pascal

Errores
Errores de compilacin
Surgen a la hora de traducir (compilar) el cdigo fuente Errores sintcticos, de tipo, etc.

Errores de ejecucin
Surgen al ejecutar el cdigo ejecutable Operaciones ilegales (divisin por cero), errores lgicos etc.

Lovillo Gil

Introduccin a la Programacin 2011-2012

Evolucin lenguajes de programacin


Prog. en cdigo mquina Prog. en ensamblador Prog. con lenguajes de alto nivel Prog. Prog. Prog. Prog. ...
Lovillo Gil

estructurada modular con TADs orientada a objetos


tiempo
Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

15

Tema 1: Elementos bsicos de Pascal

Evolucin lenguajes de programacin


Motores que impulsan la evolucin de los lenguajes de programacin:
Abstraccin Encapsulacin Modularidad Jerarqua

Lovillo Gil

Introduccin a la Programacin 2011-2012

Evolucin lenguajes de programacin


Abstraccin:
Proceso mental por el que el ser humano extrae las caractersticas esenciales de algo, e ignora los detalles superfluos

Encapsulacin:
Proceso por el que se ocultan los detalles de las caractersticas de una abstraccin

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

16

Tema 1: Elementos bsicos de Pascal

Evolucin lenguajes de programacin


Modularizacin:
Proceso de descomposicin de un sistema en un conjunto de elementos poco acoplados (independientes) y cohesivos (con significado propio)

Jerarqua:
Proceso de estructuracin por el que se organizan un conjunto de elementos en distintos niveles, atendiendo a determinados criterios (responsabilidad, composicin, etc.)
Lovillo Gil Introduccin a la Programacin 2011-2012

Preservar los motores Motores


Abstraccin Encapsulacin Modularidad Jerarqua
Lovillo Gil

Ventajas
+ comprensin + legibilidad + fcil mantenimiento costes
Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

17

Tema 1: Elementos bsicos de Pascal

Paradigmas de programacin
Definicin:
Una coleccin de patrones conceptuales que moldean la forma de razonar sobre problemas, de formular algoritmos y, a la larga, de estructurar programas

Paradigmas:
Programacin imperativa Programacin funcional Programacin lgica
Lovillo Gil Introduccin a la Programacin 2011-2012

Programacin imperativa
Basada en el modelo von Neumann
Un conjunto de operaciones primitivas Ejecucin secuencial

Abstraccin
Variables, expresiones, instrucciones

Programar:
Declarar variables necesarias Disear una secuencia adecuada de instrucciones (asignaciones)
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

18

Tema 1: Elementos bsicos de Pascal

Programacin imperativa
Ejemplo: Indicar cul es el mayor de dos nmeros en Pascal Programa:
PROGRAM mayorDeDosNumeros; VAR x,y, mayor: integer; BEGIN Read (x,y); if x > y then mayor := x else mayor := y; Write (mayor); END.

Lovillo Gil

Introduccin a la Programacin 2011-2012

Programacin funcional
Basada en la nocin de funcin matemtica
f: Dominio Rango

Programar:
Definir funciones bsicas (con parmetros) (p.e. por enumeracin) Disear funciones complejas (p.e. por comprensin) Evaluar las funciones sobre los datos de entrada
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

19

Tema 1: Elementos bsicos de Pascal

Programacin funcional
Ejemplo: Calcular el mximo de 3 nmeros en LISP Programa:
(defun max (X Y) (if (> X Y) X Y)) (defun max3 (X Y Z) (max X (max Y Z)))

Ejecucin:
Lovillo Gil

> (max3 3 6 5) > 6


Introduccin a la Programacin 2011-2012

Programacin lgica
Basada en la inferencia automtica en (un subconjunto de) lgica de primer orden Programar:
Definir hechos (predicados bsicos) Disear implicaciones para definir predicados complejos Determinar la verdad de los predicados para individuos concretos
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

20

Tema 1: Elementos bsicos de Pascal

Programacin lgica
Ejemplo: determinar antecesores en Prolog Programa:
padre(juan, antonio). padre(antonio, pepe). antecesor(X,Y) padre(X,Y). antecesor(X,Z) padre(X,Y) antecesor(Y,Z) .

Ejecucin:
? antecesor(pepe, juan) no ? antecesor(A, pepe) A = antonio; A = juan
Lovillo Gil Introduccin a la Programacin 2011-2012

Paradigmas y lenguajes
Prog. Concurrente Prog. Funcional
(P.Declarativa) LISP Hope Haskel

Prog. orientada a objetos


CLOS

Prog. Lgica
(P.Declarativa)

Prolog

Ciao-Prolog

Prolog++

Prog. Imperativa

C PASCAL Fortran COBOL

Ada Ada-95 Pascal FC

Dephi Smalltalk C++ Java Eiffel

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

21

Tema 1: Elementos bsicos de Pascal

1.3 Desarrollo sistemtico de aplicaciones

Fases de un desarrollo sistemtico


Planificacin Anlisis Diseo Codificacin Validacin Mantenimiento

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

22

Tema 1: Elementos bsicos de Pascal

Planificacin
Determinar las necesidades de programacin Estimacin de recursos de desarrollo Prediccin aproximada de coste y tiempo Determinar si el desarrollo del software es viable econmicamente

Lovillo Gil

Introduccin a la Programacin 2011-2012

Anlisis de requisitos
Definir detalladamente las funciones de cada mdulo, de acuerdo con los deseos del cliente Definir detalladamente el trabajo conjunto de los distintos mdulos Definir criterios y sistema de validacin Redactar especificaciones detalladas del funcionamiento general del software
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

23

Tema 1: Elementos bsicos de Pascal

Diseo

Disear el conjunto de bloques o mdulos Se dividen en partes o tareas Se asignan tareas a equipos de trabajo, que las desarrollan y prueban

Lovillo Gil

Introduccin a la Programacin 2011-2012

Codificacin
Escribir los algoritmos en el lenguaje de programacin elegido Integrar las partes para que formen un programa completo

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

24

Tema 1: Elementos bsicos de Pascal

Validacin
Aplicar el sistema de pruebas descrito en la fase de anlisis de requerimientos Mtodos de validacin
pruebas (tests), inspecciones ... verificacin formal

Objetos de validacin:
los mdulos de programa las conexiones entre ellos (integracin) la aplicacin entera
Lovillo Gil Introduccin a la Programacin 2011-2012

Mantenimiento
Redactar la documentacin actualizada Iniciar la explotacin Detectar y subsanar errores cometidos en etapas anteriores Adaptar la aplicacin a requisitos cambiados

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

25

Tema 1: Elementos bsicos de Pascal

2.1

Historia de Pascal

2.1. Caractersticas
Se trata de un leguaje de alto nivel Es de propsito general, aunque fue diseado para la enseanza de la programacin Estructurado (datos e instrucciones) Modular Compacto y fcil de entender La mayora de los traductores son compiladores Facilita la adquisicin de buenos hbitos para la programacin

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

26

Tema 1: Elementos bsicos de Pascal

2.1. Evolucin
Niklaus Wirth fue su creador
1968 (Algol 68) 1970 (PASCAL) Instituto Politcnico de Zurich

Debe su nombre a Blaise Pascal (16231662), matemtico francs que invent la primera mquina de calcular Pascal estndar Pascal extendido (Turbo Pascal)
Lovillo Gil Introduccin a la Programacin 2011-2012

2.2 Tipos de datos simples

Grado de Ingenieria Informatica. 11-12

27

Tema 1: Elementos bsicos de Pascal

2.2. Tipos de datos bsicos


Dato: Es la representacin de un objeto mediante smbolos manejables por el ordenador Todos los programas manipulan datos Casi todos los lenguajes disponen de tipos de datos bsicos (enteros, reales, ...) llamados predefinidos o estndar
Lovillo Gil Introduccin a la Programacin 2011-2012

2.2. Tipos de datos bsicos


Un tipo de dato se caracteriza por:
Su dominio o conjunto de valores que puede tomar Las operaciones que se pueden realizar sobre ellos

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

28

Tema 1: Elementos bsicos de Pascal

2.2. Tipos de datos bsicos


Tipos predefinidos en Pascal:
Entero: integer

Real: real Carcter: char

Dominio o rango Operaciones Construccin de expresiones

Booleano: boolean
Lovillo Gil Introduccin a la Programacin 2011-2012

2.2.1 El tipo entero


Nombre del tipo: integer Dominio: Z y, debido a las limitaciones de representacin, el dominio est acotado
En Turbo Pascal: acotado por la constante predefinida MAXINT {-32768,..,32767}

Representacin: Se escriben sin espacios ni puntos entre sus cifras y el signo, en caso de aparecer, precede al nmero
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

29

Tema 1: Elementos bsicos de Pascal

Tipo entero: Sintaxis (Diagrama sintctico)


Nmero Entero
+
Entero sin signo

Entero sin signo


Dgito

Dgito
0
Lovillo Gil

Introduccin a la Programacin 2011-2012

Tipo entero: Operaciones


Operadores aritmticos:
Binarios. Notacin infija (Ej: a+b)

+ : Z x Z Z : Z x Z Z * : Z x Z Z div : Z x Z Z mod : Z x Z Z

(adicin) (resta) (multiplicacin) (divisin entera)


(Ej.: 5 div 2 2)

(resto de la divisin entera)


(Ej.: 5 mod 2 1)

Monarios. Notacin prefija (Ej: -3)

:ZZ
Lovillo Gil

(cambio de signo)

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

30

Tema 1: Elementos bsicos de Pascal

Tipo entero: Funciones


Funciones aritmticas (Monarias)
Sintaxis: Notacin prefija abs: valor absoluto (Ej.: abs(-3) sqr: cuadrado (Ej.: sqr(-3) pred: predecesor (Ej.: pred(-3) succ: sucesor (Ej.: succ(-3) 3) 9) -4 ) -2 )

Semntica: Como operadores y funciones sobre enteros


Limitacin: Posibilidad de desbordamiento
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo entero: Expresiones


Una expresin entera permite la combinacin de nmeros, operaciones y funciones. El resultado de su evaluacin ser un entero. ms alta

Precedencias:

1. 2. 3. 4.

() Funciones *, div, mod +,

Asociatividad:
De izquierda a derecha
Ej.: 5 + 3 sqr (-7) * 2 = - 90
Lovillo Gil Introduccin a la Programacin 2011-2012

ms baja

- 82

Grado de Ingenieria Informatica. 11-12

31

Tema 1: Elementos bsicos de Pascal

2.2.2 El tipo real


Nombre del tipo: real Dominio: R Intervalo acotado
Magnitud: Entre 2.9*10-39 y 1.7 * 1038 Precisin: Entre 11 y 12 cifras significativas

Dos formas de representacin:


Coma fija (Ej.: 3.25, -3.0, 666.444) Notacin cientfica o coma flotante (Ej.: 6.023E+23)
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo real: Sintaxis (Diagrama sintctico)


Nmero Real
+ Real sin signo

Real sin signo


Cifras
.

Cifras + E Cifras

Cifras
Dgito

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

32

Tema 1: Elementos bsicos de Pascal

Tipo real: Operaciones


Operadores aritmticos.
Binarios. Notacin infija (Ej: a+b) + : R x R R (adicin) : R x RR (resta) * : R x R R (multiplicacin) / : R x R R (divisin) Monarios. Notacin prefija (Ej: -3.9) :RR (cambio de signo)
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo real: Funciones


Funciones aritmticas (Monarias)
Sintaxis: Notacin prefija
abs: Valor absoluto sqr: Cuadrado sqrt: Raz cuadrada sin: Seno cos: Coseno arctan: Arcotangente ngulo en radianes ln: Logaritmo neperiano exp: Funcin exponencial Base e

Semntica: Como operadores y funciones sobre enteros


Limitaciones:
Posibilidad de desbordamiento Posibilidad de error de redondeo
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

33

Tema 1: Elementos bsicos de Pascal

Sobrecarga de funciones y operadores


Se considera que una funcin o un operador estn sobrecargados cuando se pueden utilizar con operandos de distinto tipo (tanto con enteros como con reales)
Operadores

+ * abs sqr

ZxZZ RxRR ZZ RR
Introduccin a la Programacin 2011-2012

Funciones

Lovillo Gil

Conversin de tipos
Z R, por lo que Z x R R Conversin automtica de Z a R
Ejemplo: 8 + 9.4 17.4

Pero, la conversin de real a entero no es automtica. Funciones de conversin de R a Z


trunc(x): Devuelve la parte entera de x round(x): Redondea x al entero ms prximo Ejemplos: trunc (99.9) = 99 round (-5.8) = -6 -round (-99.9) = 100
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

34

Tema 1: Elementos bsicos de Pascal

Tipo real: Expresiones


Una expresin real permite la combinacin de nmeros, operaciones y funciones. El resultado de su evaluacin ser un real. ms Precedencias: 1. ()
2. 3. 4. Funciones * / +
alta

Asociatividad:
De izquierda a derecha
Lovillo Gil Introduccin a la Programacin 2011-2012

ms baja

Expresiones reales
Funcin xy: Expresin equivalente exp(y * ln(x)) Restriccin Para x>0 Para x /2 +k Para 0<x<1 Para b>1,x >0 Para n>0

tg(x) arcsen(x) logb(x)

sin(x)/cos(x) arctan(x/sqrt(1sqr(x))) ln(x)/ln(b)

Nmero de cifras trunc (ln(n) /ln(10)) +1 de un entero n


Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

35

Tema 1: Elementos bsicos de Pascal

2.2.3 El tipo carcter


Nombre del tipo: char Dominio: C y se corresponde con el juego de caracteres disponibles en el ordenador Intervalo acotado
Juego de caracteres ASCII de 8 bits (hasta 256 caracteres)

Representacin: Un carcter escrito entre apstrofos o comillas simples ( ), exceptuando el apstrofo propiamente dicho, que se libera con otro apstrofo: . Ejemplos: h, A,@,
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo carcter: Operaciones y Funciones


Operadores Binarios (+). Notacin infija Concatena caracteres. Ej.: a + b ab [ATENCIN. Ver strings] Funciones monarias: Notacin prefija pred: C C (carcter anterior en la tabla ASCII) succ: C C (carcter siguiente en la tabla ASCII) Funciones de conversin char / integer ord: C Z n de orden (ASCII) del carcter chr: Z C carcter asociado a un n de orden (ASCII)

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

36

Tema 1: Elementos bsicos de Pascal

Juego de caracteres
char <NU> <SH> <SX> <EX> <ET> <EQ> <AK> <BELL> <BS> <HT> <LF> <VT> <FF> <CR> <SO> <SI> <DL> <D1> <D2> <D3> <D4> <NK> <SY> <EB> <CN> <EM> <SB> <EC> <FS> <GS> <RS> <US> dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 char <SPACE> ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? dec 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 char @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ dec 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 char ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ dec 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

Lovillo Gil

Introduccin a la Programacin 2011-2012

Cadenas de caracteres
Nombre del tipo: string (propio de Turbo Pascal) Dominio: Secuencia de caracteres escrita entre apstrofos y que es capaz de contener espacios en blanco, ees, acentos, etc.
Esto es una cadena de caracteres Esta secuencia lleva una comilla
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

37

Tema 1: Elementos bsicos de Pascal

2.2.4 El tipo boolean


Nombre del tipo: boolean Dominio: B (dos valores lgicos) Intervalo acotado
{false, true}

Se emplea en expresiones lgicas. Fundamentalmente, en las tareas de control de bucles y selecciones


Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo boolean: Operaciones


Operadores lgicos Monarios. Notacin prefija not: B B negacin lgica Binarios. Notacin infija and: B x B B conjuncin lgica or: B x B B disyuncin lgica Tabla de verdad:
A false false true true
Lovillo Gil

Precedencia ms alta

ms baja

B false true false true

A and B false false false true

A or B false true true true

not A true true false false

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

38

Tema 1: Elementos bsicos de Pascal

Tipo boolean: Operaciones


Operadores relacionales
Binarios. Notacin infija = igual <> distinto < menor <= menor o igual > mayor >= mayor o igual Todos estn sobrecargados, permitiendo que de la comparacin de cualesquiera dos tipos bsicos de valores el resultado sea un valor lgico C x C -> B R x R -> B B x B -> B Z x Z -> B
Lovillo Gil Introduccin a la Programacin 2011-2012

Operadores relacionales lgicos


Los siguientes operadores al actuar sobre operandos de tipo booleano reciben nombres especiales:
= <> <= Equivalencia lgica Or exclusivo lgico Implicacin lgica
A B false false false true true false true true
Lovillo Gil

A=B true false false true

A <> B A<=B false true true true true false false true

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

39

Tema 1: Elementos bsicos de Pascal

Tipo boolean: Funciones predefinidas


Funciones monarias. Notacin prefija
Succ: B B Succ(false) true || Succ(true) false Valor siguiente Pred: B B Pred(false) true || Pred(true) false Valor anterior Ord: B Z Ord(false) 0 || Ord(true) 1 Nmero de orden Son funciones sobrecargadas Odd: Indica si un entero es impar Odd(n)
Lovillo Gil

True si n es impar False en otro caso

Odd(n) n mod 2 = 1

Introduccin a la Programacin 2011-2012

Evaluacin perezosa (ciclo corto)


El compilador NO completa el proceso de evaluacin de la expresin. Ejemplo:
Sean num,den R, den=0 Expresin: (den <>0) and (num/den =0)
Evaluacin perezosa: Devolvera valor false (Turbo Pascal por defecto) Evaluacin completa (ciclo largo): Se producira un error (Pascal estndar)

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

40

Tema 1: Elementos bsicos de Pascal

2.2.5 Expresiones
Sintaxis: Una expresin est formada por constantes, variables, funciones aplicadas a una expresin u operaciones entre expresiones La operaciones se aplican segn la precedencia y asociatividad (izquierda derecha) Las funciones se aplican a sus parmetros entre parntesis
Lovillo Gil Introduccin a la Programacin 2011-2012

Precedencia de operadores
Semntica: Evaluacin de las expresiones
Operadores () , NOT (monarios) *, /,DIV, MOD, AND (binarios) +,,OR (binarios) =,<>,<,<=,>,>= (binarios) Categora Parntesis Negacin Multiplicativos Aditivos Relacionales Nivel de Precedencia Mximo: 1 2 3 4 Mnimo: 5

A igual precedencia, se aplica la asociatividad de izquierda a derecha


Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

41

Tema 1: Elementos bsicos de Pascal

Tipo de una expresin


Cada expresin tiene un tipo
Depende del tipo de los operadores, funciones, etc., que componen la expresin Si el argumento de una funcin o de un operador es una expresin, entonces el tipo de la expresin ha de coincidir con el tipo requerido para el argumento (Excepcin: conversin automtica de Z a R) El compilador comprueba la correccin sintctica de las expresiones y la consistencia de tipos
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipos ordinales
Son los tipos integer, char y boolean Se pueden enumerar sus dominios asignando a sus elementos un nmero de posicin ord() es la funcin que devuelve el nmero de posicin de su argumento en su dominio Las funciones pred() y succ() son exclusivas de los tipos ordinales
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

42

Tema 1: Elementos bsicos de Pascal

2.3 Elementos bsicos del lenguaje

2.3. Elementos bsicos del lenguaje


Vocabulario Constantes y variables Instrucciones bsicas Estructura de programas

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

43

Tema 1: Elementos bsicos de Pascal

2.3.1 Vocabulario
Palabras reservadas:
Aquellas que tienen un significado predefinido en el lenguaje de programacin Pascal estndar:
and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until, var, while, with

Turbo Pascal:
implementation, interface, string, unit, uses
Lovillo Gil Introduccin a la Programacin 2011-2012

2.3.1 Vocabulario
Identificadores: Nombres asociados a diferentes elementos de un lenguaje (dispositivos, tipos, constantes, variables) Identificadores predefinidos:
Archivos estndar: input, output Constantes: FALSE, TRUE, MAXINT, PI Tipos: boolean, char, integer, real, text Funciones: abs, arctan, chr, cos, eof, eoln, ln,
odd, pred, round, sin, sqr, sqrt, succ, trunc Procedimientos: dispose, get, new, pack, page, put, read, readln, reset, rewrite, unpack, write, writeln
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

44

Tema 1: Elementos bsicos de Pascal

2.3.1 Vocabulario
Identificadores definidos por el programador:
Representan diversos elementos que el programador va creando segn sus necesidades Empiezan con una letra, seguida por letras y cifras
LetraAZ LetraAZ Dgito
Lovillo Gil Introduccin a la Programacin 2011-2012

2.3.1 Vocabulario
Reglas adicionales de identificadores definidos por el programador:
NO se permiten caracteres especiales (excepto _ en Turbo Pascal) No se permite letras especiales (como, por ejemplo: , , , , , ) No se distinguen letras maysculas y minsculas La longitud mxima para el identificador es de 127 caracteres, de ellos solo son significativos los primeros 63
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

45

Tema 1: Elementos bsicos de Pascal

2.3.1 Vocabulario
Smbolos especiales:
+ * / := . , ; = < > <= >= <> ( ) [] (* *) {} (. .) _ ...

Literales:
Los 256 caracteres ASCII, false, 3.1654, d, -45

Lovillo Gil

Introduccin a la Programacin 2011-2012

2.3.1 Vocabulario
Comentarios:
Texto intercalado en el programa fuente con objeto de aclarar su contenido Son ignorados por el compilador, por lo que no generan cdigo ejecutable Se escriben entre los caracteres: (* *) o { } No se pueden anidar, no puede haber un comentario dentro de otro

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

46

Tema 1: Elementos bsicos de Pascal

2.3.2 Constantes y variables


Constante: Elemento que no cambia su valor a lo largo de la ejecucin de un programa:
Annimas: 5, 3.14, a (son literales) Predefinidas: PI, MAXINT, TRUE , FALSE Definidas por el programador con nombre

Variable: Elemento que puede cambiar su valor a lo largo de la ejecucin del programa. Las define el programador

Lovillo Gil

Introduccin a la Programacin 2011-2012

2.3.2 Constantes y variables


Las constantes y variables tienen: Un identificador por el que se nombran Un tipo que determina su dominio y las operaciones permitidas Un valor que inicialmente es desconocido a no ser que se trate de una constante
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

47

Tema 1: Elementos bsicos de Pascal

2.3.3 Instrucciones bsicas


Instrucciones: Representan acciones del programa Instrucciones bsicas: Asignacin: Cambia el valor de una variable Escritura: Instruccin de salida (de datos) Lectura: Instrucciones de entrada (de datos)
Lovillo Gil Introduccin a la Programacin 2011-2012

Asignacin
Operador Sintaxis: :=

Id. Variable

:=

Expresin

Ejemplos
base:= 10.0 altura:= 20.0 area:= base * altura / 2 contador := contador +1 x:= (-b + sqrt(sqr(b) - 4 * a * c)) / (2 * a)
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

48

Tema 1: Elementos bsicos de Pascal

Asignacin
Semntica:
Se evala la expresin de la parte derecha y Se almacena el resultado en la variable de la parte izquierda

Asignacin (:=) y igualdad (=)


La asignacin es una instruccin que asigna un valor a una variable La igualdad es un operador relacional que se usa dentro de expresiones
Lovillo Gil Introduccin a la Programacin 2011-2012

Asignacin
En Pascal, una variable presenta un valor indefinido al iniciarse el programa (valor basura) En los programas habr que tenerlo en cuenta y valorar si es necesario asignar a las variables un valor inicial

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

49

Tema 1: Elementos bsicos de Pascal

Escritura: archivo output


La salida de datos podr ser por pantalla, por impresora o enviarse a un dispositivo de almacenamiento Se asume un dispositivo de salida estndar o por defecto (archivo output) que suele ser el monitor o pantalla

Lovillo Gil

Introduccin a la Programacin 2011-2012

Escritura: archivo output


Procedimientos de salida:
write (Nombre de fichero, expr1, expr2, ... exprn) writeln (Nombre de fichero, expr1, expr2, ...exprn)

Si se omite Nombre de fichero, la salida es por el dispositivo estndar


Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

50

Tema 1: Elementos bsicos de Pascal

Escritura: archivo output


Semntica: write: Evala sus argumentos y escribe el resultado en el Nombre de fichero o en la salida estndar, en caso de que no se especifique nada writeln: Funciona como write + salto de lnea
Lovillo Gil Introduccin a la Programacin 2011-2012

Escritura: salida formateada


Enteros: write (expresionEntera :m, ...)
Escribe un nmero entero indicando el espacio en el que se justificar dado por el valor de m
writeln (12:5, 23:5, 2541:5, 123:5)

La justificacin se har por la derecha


writeln (12:5,123:4) f bbb12b123

La salida puede rebasar el espacio reservado por m


writeln (12332:2) f 12332

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

51

Tema 1: Elementos bsicos de Pascal

Escritura: salida formateada


Reales: La salida por defecto es en notacin exponencial writeln (expresionReal :m, ...)
Justificacin a la derecha en el espacio dado por el valor m x:= 6.1284900000E+2 writeln (X:25) bbbbbbbbb6.1284900000E+02

writeln (expresionReal :m :n, ...)


m igual que en el ejemplo anterior y n es el nmero de decimales a representar Sirve para convertir notacin cientfica en coma fija redondeando writeln (X:10:2) bbbb612.85
Lovillo Gil Introduccin a la Programacin 2011-2012

Escritura: salida formateada


Caracteres y cadenas de caracteres: write (caracteres :m, ...)
Justificacin a la derecha en el espacio dado por el valor m writeln (3:4) f bbb3 writeln (Hola:7) f bbbHola

Booleanos: write (booleanos :m, ...)


Justificacin a la derecha en el espacio dado por el valor m writeln (true:6) f bbtrue
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

52

Tema 1: Elementos bsicos de Pascal

Lectura: archivo input


La entrada de datos puede realizarse ser por medio del teclado o de un dispositivo de almacenamiento Se asume un dispositivo de entrada estndar o por defecto (archivo input) que suele ser el teclado

Lovillo Gil

Introduccin a la Programacin 2011-2012

Lectura: archivo input


Procedimientos de entrada: read (Nombre de fichero, var1, var2,..., varn) readln(Nombre de fichero, var1, var2,..., varn) Si se omite Nombre de fichero, la entrada es por el dispositivo estndar
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

53

Tema 1: Elementos bsicos de Pascal

Lectura: archivo input


Semntica:
read: El ordenador lee los valores de Nombre de fichero o de la entrada estndar, si no se especifica, y los asigna a las variables expresadas como argumentos readln: Una vez ledos sus argumentos ignora el resto de valores, si los hubiera, y posiciona el puntero en la siguiente lnea. readln(), al carecer de argumentos, permanece a la espera de que se le introduzca un salto de lnea (con la tecla Intro)

Lovillo Gil

Introduccin a la Programacin 2011-2012

2.3.4 Estructura de programas

Partes de un programa: Encabezamiento Definiciones y declaraciones Cuerpo del programa


Encabezamiento Declaraciones Cuerpo

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

54

Tema 1: Elementos bsicos de Pascal

Encabezamiento
Establece:
La identificacin del programa Los elementos externos con los que intercambia informacin (archivos estndar input, output, y otros)
PROGRAM Identificador ( Identificador , ) ;

Opcional en Turbo Pascal


Lovillo Gil Introduccin a la Programacin 2011-2012

Declaraciones y definiciones
Se deben declarar los objetos no predefinidos en el lenguaje que se van a utilizar Tipos de objetos: - constantes - procedimientos - variables - funciones - unidades - Esto permite al compilador Reservar espacio de memoria para cada identificador Verificar el correcto uso de los constructores El equivalente en notacin matemtica a una declaracin sera: sean n Z, x R, Pi=3.14
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

55

Tema 1: Elementos bsicos de Pascal

Definicin de unidades
Permite utilizar desde un programa otros mdulos ya compilados (no disponible en Pascal estndar) Palabra reservada: USES Ventaja: Reutilizacin Formato: de cdigo USES identificadorUnidad;

Lovillo Gil

Introduccin a la Programacin 2011-2012

Definicin de constantes
Ventaja: Facilita el mantenimiento

Palabra reservada: CONST Formato: CONST identificadorConstante = valor;

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

56

Tema 1: Elementos bsicos de Pascal

Declaracin de variables
Palabra reservada: VAR Formato: VAR identificadorVariable: tipo;

El tipo de una variable permanece inalterable. El valor no se conoce a priori y cambia a lo largo de la ejecucin del programa. El compilador reserva espacio de memoria y verifica segn sea el tipo
Lovillo Gil Introduccin a la Programacin 2011-2012

Cuerpo del programa


Contiene las instrucciones ejecutables del programa Comienza con la palabra reservada BEGIN y finaliza con la palabra reservada END seguida de punto . (END.) Las instrucciones se separan con el smbolo ; BEGIN {las instrucciones ejecutables} END.
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

57

Tema 1: Elementos bsicos de Pascal

Resumen
El encabezamiento del programa es obligatorio La declaracin de un objeto es obligatoria si este se utiliza en el programa El cuerpo del programa es obligatorio Principales instrucciones (hasta el momento):
asignacin (:=) entrada (write/writeln) salida (read/readln)
Lovillo Gil Introduccin a la Programacin 2011-2012

2.4 La documentacin del programa

Grado de Ingenieria Informatica. 11-12

58

Tema 1: Elementos bsicos de Pascal

2.4. La documentacin del programa


Aspectos relevantes:
Comentarios Estructuracin del cdigo fuente Eleccin de identificadores ...

Lovillo Gil

Introduccin a la Programacin 2011-2012

Comentarios
El programa ha de estar documentado con comentarios {} o (* *)
Descripciones de funcionamiento: De subprogramas, bloques, decisiones, etc. Precondiciones: Condiciones de entrada Postcondiciones: Condiciones de salida Invariantes: Aserciones de ejecucin

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

59

Tema 1: Elementos bsicos de Pascal

Estructuracin del cdigo fuente


Claridad del formato de escritura del cdigo fuente:
Uso de retornos de lnea: Solo una instruccin por lnea Uso de tabuladores: Reflejar la estructuracin del programa Longitud de una lnea: No debe exceder la longitud de la pantalla
Lovillo Gil Introduccin a la Programacin 2011-2012

Estructuracin del cdigo fuente


PROGRAM NombrePrograma(input, output); { Propsito: } { Entrada: } { Salida: } CONST {Definicin de constantes} CONSTANTES = #VALOR; {} VAR {Declaracin de variables} variables : tipo; {} BEGIN {Programa principal} Instruccin1; Instruccin2; ...; InstruccinN END. {Programa principal}
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

60

Tema 1: Elementos bsicos de Pascal

Eleccin de identificadores
Criterio para la semntica de identificadores:
Debe describir el objetivo del identificador
De hecho, siempre que haya dudas de la utilidad o necesidad de un elemento, se aadir un comentario descriptivo al final de la lnea donde se introduzca o declare

Criterio para la sintaxis de identificadores


Equilibrio en la longitud del identificador
Lovillo Gil Introduccin a la Programacin 2011-2012

Eleccin de identificadores
Eleccin de un criterio de tipografa: Constantes: En maysculas (MAXINT, PI) Variables: Comienzan con minscula (i, opcion) Palabras clave: En maysculas (BEGIN, END) Tipos: Comienzan con T
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

61

Tema 1: Elementos bsicos de Pascal

2.5 Aspectos formales

2.5 Aspectos formales


Aspectos formales de programas: Complejidad:
Cunta cantidad de recursos necesita el programa?

Correccin:
El programa resuelve el problema especificado de forma satisfactoria?

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

62

Tema 1: Elementos bsicos de Pascal

Complejidad
Tipos de recursos usados:
Complejidad en tiempo:
Canto tiempo tarde el programa en ejecutarse?

Complejidad en espacio:
Canto espacio de memoria requieren sus datos al ejecutarse?

Eficiencia:
Se dice que un programa es ms eficiente (o de menor complejidad) que otro, cuando utiliza menos recursos que ese otro.
Lovillo Gil Introduccin a la Programacin 2011-2012

Complejidad
Cmo medir la complejidad: En tiempo: Tiempo total necesario para la ejecucin del programa Nmero de operaciones elementales Contar operaciones por clases de instrucciones (comparaciones, asignaciones, etc.) En espacio: Nmero de bytes necesario para los datos del programa Nmero de variables de tipos elementales Contar valores por clases de variables
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

63

Tema 1: Elementos bsicos de Pascal

Complejidad en tiempo
Operaciones elementales: Operadores predefinidos (aritmticos, relacionales, ...) Funciones predefinidas Asignacin Instrucciones primitivas (write, read, ..., dependiendo del nmero de argumentos) Recuento: Contar todas las operaciones elementales de una instruccin Ejemplo: writeln(ord(sqr(5 mod 2)>7)+1) Complejidad: 6 operaciones elementales
Lovillo Gil Introduccin a la Programacin 2011-2012

Ejemplo de complejidad
PROGRAM AreaCirculo (input, output): { Propsito: hallar el rea de un crculo dado su radio} { Entrada: el radio del crculo} { Salida: el rea del crculo} CONST {Definicin de constantes} pi = 3.14; {pi es una constante} VAR {Declaracin de variables} radio, area: integer; {radio y area son variables} BEGIN {Inicio del Cuerpo del programa} write('Cul es el radio?: '); readln(radio); area := pi * sqr(radio); writeln('rea = ', area) END. {Fin del cuerpo del programa}

Complejidad en tiempo: 7 Complejidad en espacio: 3


Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

64

Tema 1: Elementos bsicos de Pascal

Correccin
Aspectos de la correccin de programas que hay que considerar:
Sintaxis Semntica Pragmtica

Correccin sintctica:
El programa se ajusta a los reglas de sintaxis? Aspectos: Puntuacin, correccin en los tipos

Lovillo Gil

Introduccin a la Programacin 2011-2012

Correccin
Correccin semntica:
El programa produce los resultados esperados para cualquier entrada permitida? Aspectos: Errores en la lgica del programa, desbordamiento, errores de redondeo, variables sin iniciar

Correccin pragmtica:
El programa se ajusta a los reglas de buen estilo?
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

65

Tema 1: Elementos bsicos de Pascal

Correccin semntica
Depuracin:
Localizacin sistemtica de errores

Especificacin Pre/Post
Mtodo para especificar la semntica intencionada de un programa

El sistema formal de Hoare


Mtodo para probar la correccin semntica de un programa
Introduccin a la Programacin 2011-2012

Lovillo Gil

Depuracin
Qu hacer cuando hay un error
Prueba y error:
Modificar el programa aleatoriamente hasta que funcione (o uno se desespere)

Trazado:
Examinar la sucesin de estados de cmputo (para entradas concretas) para delimitar el error

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

66

Tema 1: Elementos bsicos de Pascal

Ejemplo: Intercambio de variables


posicion input output [3 4] [] readln(x,y) x := x+y; y:= x-y; x := x-y; writeln(x, ,y) 1 2 3 4 5 [] [] [] [] [] [] [] [] [] [4 3] x y ? ? 3 4 7 4 7 3 4 3 4 3

Lovillo Gil

Introduccin a la Programacin 2011-2012

Depuradores
Problemas de la depuracin manual
Muchos estados de cmputo Estados de cmputo muy grandes

Depurador
Herramienta que apoya al programador en la tarea de depurar el programa

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

67

Tema 1: Elementos bsicos de Pascal

Depuradores
Permiten seleccionar estados de cmputo
Instruccin por instruccin Bloques de intrucciones (puntos de ruptura) Hasta que se cumpla una condicin

Permiten centrarse en parte del estado de cmputo


Valor de ciertas variables Valor de expresiones
Lovillo Gil Introduccin a la Programacin 2011-2012

El depurador de Turbo Pascal


Examinar parte del estado de cmputo actual
Men Debug Opcin Watch Insertar variable o expresin a inspeccionar

Pasar al siguiente estado de cmputo


Men Run Opcin Trace into o Step over
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

68

Tema 1: Elementos bsicos de Pascal

3.1.Tipos definidos por el programador: subrangos

Objetivos
Saber definir tipos distintos de los tipos bsicos Conocer los tipos de datos simples definidos por el programador y las condiciones de su aplicacin

Introduccin a la Programacin 2011-2012

138

Grado de Ingenieria Informatica. 11-12

69

Tema 1: Elementos bsicos de Pascal

Tipos definidos por el programador


Programa = acciones + datos
Estructuracin

Instrucciones estructuradas Subprogramacin

Lovillo Gil

Introduccin a la Programacin 2011-2012

Tipos definidos por el programador


Objetivo:
Modelar la estructura de los objetos del mundo real mediante un tipo de dato estructurado: Color de un semforo: (rojo, amarillo, verde) Da del mes: 1..31 Conjunto de vocales: [a, e, i, o, u] Vector en el espacio: Ficha de una persona: <Nombre, Apellidos, DNI> Texto: secuencia de lneas
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

70

Tema 1: Elementos bsicos de Pascal

Tipos definidos por el programador


Aspectos a tener en cuenta: Dominio del tipo de datos Operaciones permitidas con los valores del tipo

Lovillo Gil

Introduccin a la Programacin 2011-2012

Tipos definidos por el programador


Un tipo de datos se define por medio de:
Un conjunto de posibles valores para el tipo Un conjunto de operaciones sobre ese tipo Un conjunto de relaciones entre elementos de ese tipo Ejemplo: El tipo integer: Valores: -32768, ..., -3,-2,-1,0,1,2,3,..., 32767 Operaciones: +, -, *, div, mod Relaciones: <, >, ...
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

71

Tema 1: Elementos bsicos de Pascal

Tipos de datos en Pascal: resumen


Tipos de Datos Simple Ordinal Predefinido Integer Char Boolean Defi. Programador Enumerado Subrango Real
Lovillo Gil Introduccin a la Programacin 2011-2012

Estructurado Array Registro Conjunto Fichero Predefinido

Puntero

Text Defi. Programador

Tipos definidos por el programador


Tipos simples: Sus valores son atmicos, indivisibles Tipo ordinal: Si todo valor tiene predecesor y sucesor excepto el primero y el ltimo Tipos estructurados: Sus valores no son atmicos, se pueden descomponer
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

72

Tema 1: Elementos bsicos de Pascal

Tipos definidos por el programador


Tipo predefinido: Si su nombre, valores, operaciones y relaciones vienen fijados en el lenguaje. Tipo definido por el usuario: Este puede especificar valores, nombres y operaciones segn el constructor empleado.

Lovillo Gil

Introduccin a la Programacin 2011-2012

Tipos definidos por el programador


Tipos simples: Ampliacin de los tipos simples predefinidos Subrango Tipos estructurados (compuestos) : Engloban a varios datos simultneamente: Array (String): Registro: Fichero:
Lovillo Gil Introduccin a la Programacin 2011-2012

Tema 5 Tema 6 Tema 6

Grado de Ingenieria Informatica. 11-12

73

Tema 1: Elementos bsicos de Pascal

3.1.1 Definicin de tipos


Sintaxis: TYPE IdTipo = Tipo;
Definicin de tipos

TYPE

Identificador ;

Tipo

Semntica: El identificador puede usarse como nombre de tipo en la declaracin de variables del programa
Lovillo Gil Introduccin a la Programacin 2011-2012

Ejemplo 1.1
PROGRAM EjemploDeTipos(input,output); TYPE TEntero = integer; TLetra = char; TEnteroLargo = longint; {TurboPascal} VAR i,j: TEntero; c: TLetra; l: TEnteroLargo; . . .
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

74

Tema 1: Elementos bsicos de Pascal

Definicin de tipos: esquema


PROGRAM CONST
...

TYPE
...

VAR
...

PROCEDURE FUNCTION BEGIN {programa principal}


...

END. {programa principal}


Lovillo Gil Introduccin a la Programacin 2011-2012

Definicin de tipos: normas de estilo


Eleccin de identificadores para tipos: Nombres con significado (TEntero en vez de Txyz) Criterio de tipografa: empezar con T (TEntero en vez de Entero) No intentar redefinir palabras reservadas! Ejemplo: TYPE while = integer
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

75

Tema 1: Elementos bsicos de Pascal

3.2. El tipo subrango


Objetivo: Modelar objetos Cuyos posibles estados son solo un subrango del dominio de otro tipo Ejemplo: nmero de los das del mes (subrango de integer) Definicin de tipo subrango Tipo cuyos valores estn restringidos a un intervalo cerrado predefinido de un tipo ordinal. El tipo ordinal en el que construimos un tipo subrango se llama tipo base o tipo anfitrin.
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo subrango
Sintaxis: Tipo subrango .. constante constante Ejemplo: TYPE TMesesAnyo = 1..12; TMayusculas = 'A'..'Z; TDiasLaborables = Lun..Vie; Semntica: Los posibles valores de una variable del tipo quedan restringidos al subrango especificado.
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

76

Tema 1: Elementos bsicos de Pascal

Tipo subrango
Limitaciones: Las constantes han de ser de un tipo ordinal TYPE TTonteria1 = 1.0..12.0 Las constantes han de ser del mismo tipo TYPE TTonteria2 = 1..a Las constantes han de estar en orden creciente TYPE TTonteria3 = 10..-10
Lovillo Gil Introduccin a la Programacin 2011-2012

Ejemplo 1.2
PROGRAM EjemploTipoSubrango(input, output); TYPE {Definicin del nuevo tipo} TMesesAnyo = 1..12; VAR {Declaracin de variables del nuevo tipo} mes1,mes2: TMesesAnyo; ... BEGIN {Programa principal} mes1:= 2; {Uso de las variables} mes2:= 5; writeln (mes1 + mes2); ... END. {Programa principal}
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

77

Tema 1: Elementos bsicos de Pascal

Tipo subrango: operaciones


Operaciones:
Se pueden aplicar todas las operaciones y funciones del tipo base o anfitrin.

Posibilidad de desbordamiento:
Existe la posibilidad de que el resultado de la operacin se salga del rango permitido
mes1 := mes2 + 12 readln (mes1) {si la entrada es por ejemplo 0}

En TurboPascal solo se produce un error de ejecucin, si la opcin range checking del compilador est activada
Lovillo Gil Introduccin a la Programacin 2011-2012

Tipo subrango
Ventajas:
Autodocumentacin:
Se indican explcitamente el intervalo de valores que tiene sentido en una variable Se expresan (parte de) las precondiciones y postcondiciones de un subprograma en el propio cdigo fuente

Depuracin:
Se facilita la deteccin de errores de desbordamiento (con tal de que la opcin de control de rango est activada)
Lovillo Gil Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

78

Tema 1: Elementos bsicos de Pascal

ascension.lovillo@urjc.es

Lovillo Gil

Introduccin a la Programacin 2011-2012

Grado de Ingenieria Informatica. 11-12

79

Anda mungkin juga menyukai