Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
Conocer la estructura general de un programa Utilizar las instrucciones de entrada y salida de datos
Introduccin a la Programacin 2010-2011 3
Programa
Datos Entrada
COMPUTADORA
Datos Salida
Lovillo Gil
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
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
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
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 2 enteros, cociente y resto (C,R) 0 R < d, tal que D = d*C + R
Resultado
Lovillo Gil
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
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
Lovillo Gil
Caracterizacin de un algoritmo
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
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:
Lovillo Gil
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
Problemas y algoritmos
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
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
Lenguajes de programacin
Definicin:
Se trata de un lenguaje artificial diseado para representar algoritmos de forma inteligible para las computadoras
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:
Lovillo Gil
Sintaxis
Lovillo Gil
Semntica
Ejemplo:
write(hola); write(hola);
Lovillo Gil
En pantalla aparece:
holahola hola hola
Introduccin a la Programacin 2010-2011
Traduccin y ejecucin
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
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
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
10
Lovillo Gil
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
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
11
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
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
12
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
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
13
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. Lgica
(P.Declarativa)
Prolog
Ciao-Prolog
Prolog++
Prog. Imperativa
Lovillo Gil
14
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
15
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
Codificacin
Escribir los algoritmos en el lenguaje de programacin elegido Integrar las partes para que formen un programa completo
Lovillo Gil
16
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
2.1
Historia de Pascal
17
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
2.1. Evolucin
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
18
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
Su dominio o conjunto de valores que puede tomar Las operaciones que se pueden realizar sobre ellos
Lovillo Gil
Booleano: boolean
Lovillo Gil Introduccin a la Programacin 2010-2011
19
Nombre del tipo: integer Dominio: Z y, debido a las limitaciones de representacin, el dominio est acotado
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
Dgito
0
Lovillo Gil
Operadores aritmticos:
+ : Z x Z Z : Z x Z Z * : Z x Z Z div : Z x Z Z mod : Z x Z Z
:ZZ
(cambio de signo)
Lovillo Gil
20
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 )
Lovillo Gil
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.
Asociatividad:
ms baja
De izquierda a derecha
Ej.: 5 + 3 sqr (-7) * 2 = - 90
Introduccin a la Programacin 2010-2011
- 82
Lovillo Gil
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
Lovillo Gil
21
Cifras + E Dgito
Introduccin a la Programacin 2010-2011
Cifras
Cifras
Lovillo Gil
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
ngulo en radianes
Base e
Limitaciones:
Lovillo Gil
22
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
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
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
23
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
Nombre del tipo: char Dominio: C y se corresponde con el juego de caracteres disponibles en el ordenador Intervalo acotado
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
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
24
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.
Lovillo Gil
Nombre del tipo: boolean Dominio: B (dos valores lgicos) Intervalo acotado
{false, true}
Lovillo Gil
25
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
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
Los siguientes operadores al actuar sobre operandos de tipo booleano reciben nombres especiales:
= <> <=
Lovillo Gil
26
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
Evaluacin perezosa: Devolvera valor false (Turbo Pascal por defecto) Evaluacin completa (ciclo largo): Se producira un error (Pascal estndar)
Lovillo Gil
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
27
Precedencia de operadores
Lovillo Gil
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
28
Lovillo Gil
2.3.1 Vocabulario
Palabras reservadas:
Turbo Pascal:
implementation, interface, string, unit, uses
Lovillo Gil
29
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
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
2.3.1 Vocabulario
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
30
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
Introduccin a la Programacin 2010-2011
Lovillo Gil
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
31
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
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
32
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
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
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
33
Procedimientos de salida:
write (Nombre de fichero, expr1, expr2, ... exprn) writeln (Nombre de fichero, expr1, expr2, ...exprn)
Lovillo Gil
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
Escribe un nmero entero indicando el espacio en el que se justificar dado por el valor de m
writeln (12332:2)
Introduccin a la Programacin 2010-2011
12332
Lovillo Gil
34
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
Lovillo Gil
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
Lovillo Gil
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
35
Procedimientos de entrada:
read (Nombre de fichero, var1, var2,..., varn) readln(Nombre de fichero, var1, var2,..., varn)
Lovillo Gil
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
Lovillo Gil
36
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
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
37
Definicin de constantes
Ventaja: Facilita el mantenimiento
Lovillo Gil
Declaracin de variables
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
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
38
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):
Lovillo Gil
Aspectos relevantes:
Lovillo Gil
39
Comentarios
Descripciones de funcionamiento: De subprogramas, bloques, decisiones, etc. Precondiciones: Condiciones de entrada Postcondiciones: Condiciones de salida Invariantes: Aserciones de ejecucin
Lovillo Gil
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
40
Eleccin de identificadores
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
Lovillo Gil
Eleccin de identificadores
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
41
Complejidad:
Cunta cantidad de recursos necesita el programa? El programa resuelve el problema especificado de forma satisfactoria?
Correccin:
Lovillo Gil
Complejidad
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
42
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}
Lovillo Gil
Correccin
Correccin sintctica:
Lovillo Gil
43
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
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
44
Lovillo Gil
Depuradores
Depurador
Herramienta que apoya al programador en la tarea de depurar el programa
Lovillo Gil
Depuradores
Instruccin por instruccin Bloques de intrucciones (puntos de ruptura) Hasta que se cumpla una condicin
Lovillo Gil
45
Men Debug Opcin Watch Insertar variable o expresin a inspeccionar Men Run Opcin Trace into o Step over
Introduccin a la Programacin 2010-2011
Lovillo Gil
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
46
Lovillo Gil
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
Dominio del tipo de datos Operaciones permitidas con los valores del tipo
Lovillo Gil
47
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
Puntero
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
48
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
Tipos simples: Ampliacin de los tipos simples predefinidos Subrango Tipos estructurados (compuestos) : Engloban a varios datos simultneamente:
Lovillo Gil
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
49
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
TYPE
...
VAR
...
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
50
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
51
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
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
52
ascension.lovillo@urjc.es
Lovillo Gil
53