Está en la página 1de 53

Tema 1: Elementos bsicos de Pascal

Tema 1 Elementos bsicos de Pascal

Introduccin a la Programacin Grado de Ingeniera de Computadores

Tema 1

Introduccin

Problemas, algoritmos y programas Paradigmas y lenguajes de programacin Desarrollo sistemtico de aplicaciones Historia de Pascal Tipos de datos bsicos Elementos bsicos del lenguaje La documentacin del programa

Elementos bsicos de Pascal


Tipos de datos definidos por el programador: subrangos


Introduccin a la Programacin 2010-2011 2

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:

Presentar la correcta construccin de programas sencillos en Pascal:


Conocer el concepto de tipo de dato, en concreto, los tipos de datos bsicos predefinidos en el lenguaje

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

Grado de Ingenieria de Computadores

Tema 1: Elementos bsicos de Pascal

Organizacin de una computadora

Programa

Datos Entrada

COMPUTADORA

Datos Salida

Lovillo Gil

Introduccin a la Programacin 2010-2011

Componentes de una computadora


Programa

MEMORIA Datos de entrada Datos de salida

PROCESADOR
Lovillo Gil Introduccin a la Programacin 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

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 2010-2011

1.1 Problemas, algoritmos y programas

La definicin del problema

Definicin: Problema

Proposicin encaminada a averiguar el modo de obtener un resultado, cuando se conocen ciertos datos de partida Sin solucin Determinados: con una nica solucin Indeterminados: con un nmero indefinido de soluciones
Introduccin a la Programacin 2010-2011

Tipos de Problemas

Lovillo Gil

Grado de Ingenieria de Computadores

Tema 1: Elementos bsicos de Pascal

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 2010-2011

Un ejemplo
Ejemplo de Especificacin: Problema de divisin eucldea
Especificacin: Datos

2 enteros, dividendo y divisor (D,d) d no nulo 2 enteros, cociente y resto (C,R) 0 R < d, tal que D = d*C + R

Resultado

Lovillo Gil

Introduccin a la Programacin 2010-2011

Algoritmo

Definicin 1:

Descripcin precisa de los pasos que nos llevan a la solucin de un problema planteado Mtodo tal que partiendo de datos apropiados, conduce sistemticamente a los resultados requeridos en la especificacin del problema
Introduccin a la Programacin 2010-2011

Definicin 2:

Lovillo Gil

Grado de Ingenieria de Computadores

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 2010-2011

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 2010-2011

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 Debe responder del mismo modo ante las mismas condiciones Debe tener fin
Introduccin a la Programacin 2010-2011

Determinismo:

Finitud:

Lovillo Gil

Grado de Ingenieria de Computadores

Tema 1: Elementos bsicos de Pascal

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Aspectos de un algoritmo

Obligados

Correccin: respecto a las especificaciones Complejidad: recursos que un algoritmo necesita. En mquinas secuenciales (tiempo y memoria) Generalidad: sirva para una clase de problemas lo ms amplia posible Eficiencia: ser ms eficiente en la medida que necesita de menos pasos
Introduccin a la Programacin 2010-2011

Deseables

Lovillo Gil

Grado de Ingenieria de Computadores

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)
Introduccin a la Programacin 2010-2011

Lovillo Gil

Programas

Programa: Conjunto de instrucciones precisas,


en un lenguaje entendible por la computadora programas

Programacin: Proceso de construccin de Fases:


Anlisis del problema Solucin conceptual del problema Escritura del algoritmo en un lenguaje de programacin Comprobacin de resultados
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

Tema 1: Elementos bsicos de Pascal

1.2 Paradigmas y Lenguajes de programacin

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Lenguajes de programacin
Algunas caractersticas relevantes:

Sintaxis Semntica Traduccin y ejecucin Errores y cmo subsanarlos

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

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 2010-2011

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

Tema 1: Elementos bsicos de Pascal

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 2010-2011

Errores

Errores de compilacin

Surgen a la hora de traducir (compilar) el cdigo fuente Errores sintcticos, de tipo, etc. Surgen al ejecutar el cdigo ejecutable Operaciones ilegales (divisin por cero), errores lgicos etc.

Errores de ejecucin

Lovillo Gil

Introduccin a la Programacin 2010-2011

Evolucin lenguajes de programacin


Prog. en Cdigo Mquina Prog. en Ensamblador Prog. con lenguajes de Alto nivel Prog. Prog. Prog. Prog. ... Estructurada Modular Con TADs Orientada a Objetos
tiempo
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

10

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 2010-2011

Evolucin lenguajes de programacin

Abstraccin:

Proceso mental por el que el ser humano extrae las caractersticas esenciales de algo, e ignora los detalles superfluos Proceso por el que se ocultan los detalles de las caractersticas de una abstraccin

Encapsulacin:

Lovillo Gil

Introduccin a la Programacin 2010-2011

Evolucin lenguajes de programacin

Modularizacin:

Proceso de descomposicin de un sistema en un conjunto de elementos poco acoplados (independientes) y cohesivos (con significado propio) Proceso de estructuracin por el que se organizan un conjunto de elementos en distintos niveles, atendiendo a determinados criterios (responsabilidad, composicin, etc.)
Introduccin a la Programacin 2010-2011

Jerarqua:

Lovillo Gil

Grado de Ingenieria de Computadores

11

Tema 1: Elementos bsicos de Pascal

Preservar los motores Motores


Abstraccin Encapsulacin Modularidad Jerarqua
Lovillo Gil

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

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 Programacin imperativa Programacin funcional Programacin lgica
Introduccin a la Programacin 2010-2011

Paradigmas:

Lovillo Gil

Programacin imperativa

Basada en el modelo von Neumann


Un conjunto de operaciones primitivas Ejecucin secuencial Variables, expresiones, instrucciones Declarar variables necesarias Disear una secuencia adecuada de instrucciones (asignaciones)
Introduccin a la Programacin 2010-2011

Abstraccin

Programar:

Lovillo Gil

Grado de Ingenieria de Computadores

12

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 2010-2011

Programacin funcional

Basada en la nocin de funcin matemtica

f: Dominio Rango Definir funciones bsicas (con parmetros) (p.e. por enumeracin) Disear funciones complejas (p.e. por comprensin) Evaluar las funciones sobre los datos de entrada
Introduccin a la Programacin 2010-2011

Programar:

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

13

Tema 1: Elementos bsicos de Pascal

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

14

Tema 1: Elementos bsicos de Pascal

1.3 Desarrollo sistemtico de aplicaciones

Fases de un desarrollo sistemtico


Planificacin Anlisis Diseo Codificacin Validacin Mantenimiento
Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

15

Tema 1: Elementos bsicos de Pascal

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

16

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 los mdulos de programa las conexiones entre ellos (integracin) la aplicacin entera
Introduccin a la Programacin 2010-2011

Objetos de validacin:

Lovillo Gil

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 2010-2011

2.1

Historia de Pascal

Grado de Ingenieria de Computadores

17

Tema 1: Elementos bsicos 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 2010-2011

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)
Introduccin a la Programacin 2010-2011

Lovillo Gil

2.2 Tipos de datos simples

Grado de Ingenieria de Computadores

18

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

19

Tema 1: Elementos bsicos de Pascal

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Tipo entero: Sintaxis (Diagrama sintctico)


Nmero Entero
+
Entero sin signo

Entero sin signo


Dgito

Dgito
0
Lovillo Gil

Introduccin a la Programacin 2010-2011

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

(cambio de signo)

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

20

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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:

ms baja

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

- 82

Lovillo Gil

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 Coma fija (Ej.: 3.25, -3.0, 666.444) Notacin cientfica o coma flotante (Ej.: 6.023E+23)
Introduccin a la Programacin 2010-2011

Dos formas de representacin:


Lovillo Gil

Grado de Ingenieria de Computadores

21

Tema 1: Elementos bsicos de Pascal

Tipo real: Sintaxis (Diagrama sintctico)


Nmero Real
+ Real sin signo

Real sin signo


Cifras
.

Cifras + E Dgito
Introduccin a la Programacin 2010-2011

Cifras

Cifras

Lovillo Gil

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)
Introduccin a la Programacin 2010-2011

Lovillo Gil

Tipo real: Funciones

Funciones aritmticas (Monarias)

Sintaxis: Notacin prefija


sin: Seno cos: Coseno arctan: Arcotangente
ln: Logaritmo neperiano exp: Funcin exponencial

abs: Valor absoluto sqr: Cuadrado sqrt: Raz cuadrada

ngulo en radianes

Base e

Semntica: Como operadores y funciones sobre enteros

Limitaciones:

Posibilidad de desbordamiento Posibilidad de error de redondeo


Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

22

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

Funciones

ZZ RR
Introduccin a la Programacin 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

ms baja

Lovillo Gil

Grado de Ingenieria de Computadores

23

Tema 1: Elementos bsicos de Pascal

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 2010-2011

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,@,
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

24

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 2010-2011

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

25

Tema 1: Elementos bsicos de Pascal

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 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

Precedencia ms alta

ms baja

Lovillo Gil

Introduccin a la Programacin 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 A=B true false false true A <> B A<=B false true true true true false false true

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

26

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) True si n es impar False en otro caso
Odd(n) n mod 2 = 1

Lovillo Gil

Introduccin a la Programacin 2010-2011

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

27

Tema 1: Elementos bsicos de Pascal

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

28

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

29

Tema 1: Elementos bsicos de Pascal

2.3.1 Vocabulario

Identificadores: Nombres asociados a diferentes elementos de un lenguaje (dispositivos, tipos, constantes, variables) Identificadores predefinidos:

odd, pred, round, sin, sqr, sqrt, succ, trunc Procedimientos: dispose, get, new, pack, page, put, read, readln, reset, rewrite, unpack, write, writeln
Introduccin a la Programacin 2010-2011

Archivos estndar: input, output Constantes: FALSE, TRUE, MAXINT, PI Tipos: boolean, char, integer, real, text Funciones: abs, arctan, chr, cos, eof, eoln, ln,

Lovillo Gil

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

30

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

31

Tema 1: Elementos bsicos de Pascal

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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)
Introduccin a la Programacin 2010-2011

Lovillo Gil

Asignacin

Operador Sintaxis:

:=

Id. Variable

:=

Expresin

Ejemplos


Lovillo Gil

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

Grado de Ingenieria de Computadores

32

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 La asignacin es una instruccin que asigna un valor a una variable La igualdad es un operador relacional que se usa dentro de expresiones
Introduccin a la Programacin 2010-2011

Asignacin (:=) y igualdad (=)

Lovillo Gil

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

33

Tema 1: Elementos bsicos de Pascal

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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) writeln (12:5,123:4) f bbb12b123

La justificacin se har por la derecha

La salida puede rebasar el espacio reservado por m

writeln (12332:2)
Introduccin a la Programacin 2010-2011

12332

Lovillo Gil

Grado de Ingenieria de Computadores

34

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 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
Introduccin a la Programacin 2010-2011

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

Lovillo Gil

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 Justificacin a la derecha en el espacio dado por el valor m writeln (true:6) f bbtrue
Introduccin a la Programacin 2010-2011

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

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

35

Tema 1: Elementos bsicos de Pascal

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

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 2010-2011

Grado de Ingenieria de Computadores

36

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

37

Tema 1: Elementos bsicos de Pascal

Definicin de constantes
Ventaja: Facilita el mantenimiento

Palabra reservada: CONST Formato: CONST identificadorConstante = valor;

Lovillo Gil

Introduccin a la Programacin 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

38

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)


Introduccin a la Programacin 2010-2011

Lovillo Gil

2.4 La documentacin del programa

2.4. La documentacin del programa

Aspectos relevantes:

Comentarios Estructuracin del cdigo fuente Eleccin de identificadores ...

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

39

Tema 1: Elementos bsicos de Pascal

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

40

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

2.5 Aspectos formales

Grado de Ingenieria de Computadores

41

Tema 1: Elementos bsicos de Pascal

2.5 Aspectos formales

Aspectos formales de programas:

Complejidad:

Cunta cantidad de recursos necesita el programa? El programa resuelve el problema especificado de forma satisfactoria?

Correccin:

Lovillo Gil

Introduccin a la Programacin 2010-2011

Complejidad

Tipos de recursos usados:

Complejidad en tiempo:

Canto tiempo tarde el programa en ejecutarse? Canto espacio de memoria requieren sus datos al ejecutarse?

Complejidad en espacio:

Eficiencia:

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

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

42

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

Correccin

Aspectos de la correccin de programas que hay que considerar:


Sintaxis Semntica Pragmtica


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

Correccin sintctica:

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

43

Tema 1: Elementos bsicos de Pascal

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 El programa se ajusta a los reglas de buen estilo?
Introduccin a la Programacin 2010-2011

Correccin pragmtica:

Lovillo Gil

Correccin semntica

Depuracin:

Localizacin sistemtica de errores Mtodo para especificar la semntica intencionada de un programa Mtodo para probar la correccin semntica de un programa
Introduccin a la Programacin 2010-2011

Especificacin Pre/Post

El sistema formal de Hoare

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 2010-2011

Grado de Ingenieria de Computadores

44

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 2010-2011

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 2010-2011

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


Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

45

Tema 1: Elementos bsicos de Pascal

El depurador de Turbo Pascal

Examinar parte del estado de cmputo actual


Men Debug Opcin Watch Insertar variable o expresin a inspeccionar Men Run Opcin Trace into o Step over
Introduccin a la Programacin 2010-2011

Pasar al siguiente estado de cmputo


Lovillo Gil

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 2010-2011

138

Grado de Ingenieria de Computadores

46

Tema 1: Elementos bsicos de Pascal

Tipos definidos por el programador

Programa = acciones + datos


Estructuracin

Instrucciones estructuradas Subprogramacin

Lovillo Gil

Introduccin a la Programacin 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

Grado de Ingenieria de Computadores

47

Tema 1: Elementos bsicos de Pascal

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: <, >, ...
Introduccin a la Programacin 2010-2011

Lovillo Gil

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 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

48

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 2010-2011

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:


Introduccin a la Programacin 2010-2011

Tema 5 Tema 6 Tema 6

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

49

Tema 1: Elementos bsicos de Pascal

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 2010-2011

Definicin de tipos: esquema


PROGRAM CONST
...

TYPE
...

VAR
...

PROCEDURE FUNCTION BEGIN {programa principal}


...

END. {programa principal}


Lovillo Gil Introduccin a la Programacin 2010-2011

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

50

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.
Introduccin a la Programacin 2010-2011

Lovillo Gil

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.
Introduccin a la Programacin 2010-2011

Lovillo Gil

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
Introduccin a la Programacin 2010-2011

Lovillo Gil

Grado de Ingenieria de Computadores

51

Tema 1: Elementos bsicos de Pascal

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 2010-2011

Tipo subrango: operaciones

Operaciones:

Se pueden aplicar todas las operaciones y funciones del tipo base o anfitrin. 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}

Posibilidad de desbordamiento:

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

Lovillo Gil

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 Se facilita la deteccin de errores de desbordamiento (con tal de que la opcin de control de rango est activada)
Introduccin a la Programacin 2010-2011

Depuracin:

Lovillo Gil

Grado de Ingenieria de Computadores

52

Tema 1: Elementos bsicos de Pascal

ascension.lovillo@urjc.es

Lovillo Gil

Introduccin a la Programacin 2010-2011

Grado de Ingenieria de Computadores

53

También podría gustarte