Tema 1
Introduccin
Problemas, algoritmos y programas Paradigmas y lenguajes de programacin Desarrollo sistemtico de aplicaciones
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
Programa
Datos Entrada
COMPUTADORA
Datos Salida
Lovillo Gil
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
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
Especificacin
Descripcin precisa del problema: - datos de partida - resultado
lenguaje natural lenguajes formales
Lovillo Gil
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
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
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
Lovillo Gil
Caracterizacin de un algoritmo
Algoritmo funcin matemtica
Ejemplo: Suma Lenta: NxN a + b N c, c=a+b
Lovillo Gil
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
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
Problemas y algoritmos
Algunos problemas tienen distintas soluciones algortmicas.
Ejemplo: mximo comn divisor (mcd)
Programas
Programa: Conjunto de instrucciones precisas,
en un lenguaje entendible por la computadora
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
10
11
Lenguajes de programacin
Definicin:
Se trata de un lenguaje artificial diseado para representar algoritmos de forma inteligible para las computadoras
Lenguajes de programacin
Lovillo Gil
12
Sintaxis
Especifica inequvocamente cmo estn construidos los programas de un LP Especificacin de la sintaxis
Gramticas (BNF) Diagramas Sintcticos
Lovillo Gil
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
13
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
Compilador
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
14
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
15
Lovillo Gil
Encapsulacin:
Proceso por el que se ocultan los detalles de las caractersticas de una abstraccin
Lovillo Gil
16
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
Ventajas
+ comprensin + legibilidad + fcil mantenimiento costes
Introduccin a la Programacin 2011-2012
17
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
18
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
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
19
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
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
20
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. Lgica
(P.Declarativa)
Prolog
Ciao-Prolog
Prolog++
Prog. Imperativa
Lovillo Gil
21
Lovillo Gil
22
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
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
23
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
Codificacin
Escribir los algoritmos en el lenguaje de programacin elegido Integrar las partes para que formen un programa completo
Lovillo Gil
24
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
25
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
26
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
27
Lovillo Gil
28
Booleano: boolean
Lovillo Gil Introduccin a la Programacin 2011-2012
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
29
Dgito
0
Lovillo Gil
+ : Z x Z Z : Z x Z Z * : Z x Z Z div : Z x Z Z mod : Z x Z Z
:ZZ
Lovillo Gil
(cambio de signo)
30
Precedencias:
1. 2. 3. 4.
Asociatividad:
De izquierda a derecha
Ej.: 5 + 3 sqr (-7) * 2 = - 90
Lovillo Gil Introduccin a la Programacin 2011-2012
ms baja
- 82
31
Cifras + E Cifras
Cifras
Dgito
Lovillo Gil
32
33
+ * 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
34
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
35
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
Lovillo Gil
36
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
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
37
Precedencia ms alta
ms baja
38
A <> B A<=B false true true true true false false true
39
Odd(n) n mod 2 = 1
Lovillo Gil
40
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
41
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
42
Lovillo Gil
43
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
44
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
45
2.3.1 Vocabulario
Smbolos especiales:
+ * / := . , ; = < > <= >= <> ( ) [] (* *) {} (. .) _ ...
Literales:
Los 256 caracteres ASCII, false, 3.1654, d, -45
Lovillo Gil
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
46
Variable: Elemento que puede cambiar su valor a lo largo de la ejecucin del programa. Las define el programador
Lovillo Gil
47
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
48
Asignacin
Semntica:
Se evala la expresin de la parte derecha y Se almacena el resultado en la variable de la parte izquierda
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
49
Lovillo Gil
50
Lovillo Gil
51
52
Lovillo Gil
53
Lovillo Gil
Lovillo Gil
54
Encabezamiento
Establece:
La identificacin del programa Los elementos externos con los que intercambia informacin (archivos estndar input, output, y otros)
PROGRAM Identificador ( Identificador , ) ;
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
55
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
Definicin de constantes
Ventaja: Facilita el mantenimiento
Lovillo Gil
56
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
57
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
58
Lovillo Gil
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
59
60
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
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
61
Correccin:
El programa resuelve el problema especificado de forma satisfactoria?
Lovillo Gil
62
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
63
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}
64
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
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
65
Correccin semntica
Depuracin:
Localizacin sistemtica de errores
Especificacin Pre/Post
Mtodo para especificar la semntica intencionada de un programa
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
66
Lovillo Gil
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
67
Depuradores
Permiten seleccionar estados de cmputo
Instruccin por instruccin Bloques de intrucciones (puntos de ruptura) Hasta que se cumpla una condicin
68
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
138
69
Lovillo Gil
70
Lovillo Gil
71
Puntero
72
Lovillo Gil
73
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
74
TYPE
...
VAR
...
75
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
76
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
77
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
78
ascension.lovillo@urjc.es
Lovillo Gil
79