Bloque 1. Conceptos y técnicas básicas en programación UNIVERSIDAD DE CANTABRIA 1. Introducción 2. Datos y expresiones. Especificación de algoritmos 3. Estructuras algorítmicas básicas 4. Iteración y recursión 5. Iteración y recursión sobre secuencias 6. Iteración y recursión sobre tablas DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN 4 © Michael González Harbour y José Luis Montaña 30/sept/09 Notas: 1 UNIVERSIDAD DE CANTABRIA 1. Introducción • Programas, y lenguajes. Necesidad de la programación modular. Ciclo de vida de los programas. Concepto de algoritmo. Noción de proceso. Variables. Estado de un programa. 2. Datos y expresiones. Especificación de algoritmos 3. Estructuras algorítmicas básicas 4. Iteración y recursión 5. Iteración y recursión sobre secuencias 6. Iteración y recursión sobre tablas DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 2 Programas y lenguajes UNIVERSIDAD DE CANTABRIA Un programa es un conjunto completo de instrucciones que el computador es capaz de ejecutar con el fin de tratar información Se escribe en un lenguaje que el computador entienda • lenguaje de programación • generalmente es necesario un proceso de traducción automática (compilación) DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 Necesidad de la programación modular 3 UNIVERSIDAD DE CANTABRIA Los programas pueden llegar a ser muy complejos y para poder gestionar esta complejidad se dividen en módulos • independientes entre sí • llamados clases en Java Un módulo de programa contiene datos y operaciones para manipular datos Cada una de esas operaciones representa un algoritmo DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 4 El ciclo de vida de un programa Requerimientos Informales Documento de Requerimientos Análisis de Requerimientos Integración y pruebas de sistema Programa final Diseño de la Arquitectura Codificación Módulos de Programa Módulos de Programa Probados Arquitectura del Programa Documento de Especificaciones Análisis de Especificaciones Pruebas de módulo UNIVERSIDAD DE CANTABRIA Diseño Detallado Diseño de cada Módulo (pseudocódigo) © Michael González Harbour y José Luis Montaña 30/sept/09 DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Coste de los sistemas informáticos 5 UNIVERSIDAD DE CANTABRIA La mayor parte del gasto en sist. informáticos es el software Los errores software tienen un alto coste: efecto y corrección % del coste total 80 Coste relativo de corregir un error 100 Hardware 60 40 Software 20 0 1955 1970 Año DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN 1995 100 40 16 6.3 2.5 0 Ana Dis Cod Int Pru Man Etapa en que se detecta el error © Michael González Harbour y José Luis Montaña 30/sept/09 6 Distribución del Esfuerzo de desarrollo UNIVERSIDAD DE CANTABRIA análisis y diseño codificación pruebas e integración DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 Concepto de algoritmo 7 UNIVERSIDAD DE CANTABRIA Un algoritmo es: • una secuencia finita de instrucciones, • cada una de ellas con un claro significado, • que puede ser realizada con un esfuerzo finito • y en un tiempo finito El algoritmo se diseña en la etapa de diseño detallado y se corresponde habitualmente con el nivel de operación o método Los programas se componen habitualmente de muchas clases que contienen algoritmos, junto con datos utilizados por ellos • los datos y algoritmos relacionados entre sí se encapsulan en la misma clase DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 8 Noción de proceso UNIVERSIDAD DE CANTABRIA Un proceso es la acción de ejecutar las instrucciones de un programa Se manifiesta por una sucesión de cambios de estado en la memoria y en el entorno del computador • es decir, cambios en la información almacenada en el computador y su entorno DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 Variables y estado de un programa 9 UNIVERSIDAD DE CANTABRIA La información que maneja un programa se almacena en unidades llamadas variables • almacenan un valor • de un determinado tipo • se identifican por un nombre El estado de un programa en un momento dado es el valor de las variables en ese instante DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 10 Ejemplo del estado de un programa UNIVERSIDAD DE CANTABRIA Programa que intenta mantener una habitación a una temperatura deseada (± 0.5 grados) • dispone de un radiador que se puede encender y apagar, • y un termómetro Variables: • tempDeseada: magnitud real (ºC) • tempAmbiente: magnitud real (ºC) • estadoRadiador: encendido o apagado Estado del programa • valor de tempDeseada, tempAmbiente, y estadoRadiador en cada instante DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 Ejemplo (cont.) 11 UNIVERSIDAD DE CANTABRIA Algoritmo Repetir continuamente lo siguiente si hace frío encender el radiador si hace calor apagar el radiador esperar un rato frepetir El algoritmo se repite continuamente (hasta que el usuario apague el sistema) Ahora debemos refinar este algoritmo para expresarlo en términos de las variables del sistema DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 12 Ejemplo (cont.) UNIVERSIDAD DE CANTABRIA Algoritmo refinado Repetir continuamente lo siguiente si tempAmbiente<tempDeseada-0.5 entonces // hace frío estadoRadiador:=encendido fsi si tempAmbiente>tempDeseada+0.5 entonces // hace calor estadoRadiador:=apagado fsi esperar 1 minuto frepetir Observar que si no hace ni frío ni calor el radiador se queda como estaba DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 A observar 13 UNIVERSIDAD DE CANTABRIA Hemos descrito el algoritmo mediante la técnica llamada pseudocódigo, que tiene • instrucciones de control presentes en todos los lenguajes si condición entonces hacer cosas fsi • obsérvese el uso del sangrado para determinar el ámbito de aplicación de cada instrucción de control • cálculos • acciones expresadas sin el formalismo de los lenguajes El propósito es que el pseudocódigo refinado sea sencillo, y directamente traducible a código en cualquier lenguaje DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 14 Traza del proceso UNIVERSIDAD DE CANTABRIA Podemos observar los diferentes estados del sistema, por ejemplo al inicio del algoritmo tempDeseada tempAmbiente estadoRadiador 23.0 21.4 apagado 23.0 22.1 encendido 23.0 22.8 encendido 23.0 23.4 encendido 23.0 24.1 encendido 23.0 23.8 apagado 24.0 23.3 apagado 24.0 24.2 encendido DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 15 UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN © Michael González Harbour y José Luis Montaña 30/sept/09 16