Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice • Metodología de la programación • Programación estructurada Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 2 Metodología de la Programación • Pasos a seguir para el desarrollo de un programa (fases): – Análisis del problema. – Diseño de el/los algoritmos. – Codificación del programa. – Compilación. – Verificación/depuración. – Documentación. Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 3 Metodología de la Programación – Análisis del problema ANÁLISIS DEL PROBLEMA DATOS DE ENTRADA Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI DEFINICIÓN PROBLEMA Tema 2: Conceptos básicos de programación DATOS DE SALIDA (Resultados) 4 Metodología de la Programación – Análisis del problema • Ejemplo – Leer el radio de un círculo y calcular e imprimir su superficie y la longitud de la circunferencia. • Análisis – Entradas: Radio del círculo (variable RADIO). – Salidas: Superficie del círculo (variable AREA), Circunferencia del círculo (variable CIRCUNFERENCIA). – Variables: RADIO, AREA, CIRCUNFERENCIA (tipo real). Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 5 5 Metodología de la Programación • Diseño de el/los algoritmos – – – – – Conjunto preescrito de operaciones (reglas o instrucciones) bien definidas para resolver un problema en un número finito de pasos Un algoritmo: Finito (Resultado en el tiempo), Definido (No puede ser ambiguo), Preciso (ejecución paso a paso). El diseño del algoritmo es bastante independiente del lenguaje de programación (sí depende del enfoque) Definir paso a paso con detalle Diseño descendente o modular: División del problema en subproblemas PROBLEMA DATOS DE ENTRADA DATOS DE SALIDA DEFINICIÓN PROBLEMA Problema 1 Dato 1. Dato 2. Salida 1. Subproblema 1. 1 Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Subproblema 1.2 Tema 2: Conceptos básicos de programación 6 Salida 2. Metodología de la Programación • Diseño de el/los algoritmos INICIO Diagrama de flujo Acumuladores a cero s=0 Contador a cero n=0 Introducir un número en a a=0 SI NO Promedio p=s/n Contarlo n=n+1 Imprimir Promedio Acumulativo s=s+a Introducir un número Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI FIN Tema 2: Conceptos básicos de programación 7 Metodología de la Programación • Diseño de el/los algoritmos Diagrama de flujo TERMINAL ENTRADA-SALIDA PROCESO SI DECISIÓN NO CONECTOR COMENTARIOS Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 8 8 Metodología de la Programación • Diseño de el/los algoritmos Diagrama de flujo SUBRUTINA PANTALLA IMPRESORA Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 9 9 Metodología de la Programación • Diseño de el/los algoritmos Pseudocódigo Se trata de un lenguaje imitación del de un ordenador. No está estandarizado. • Cada programador tiene el propio. • Mezcla de lenguaje natural, símbolos, términos y características de varios lenguajes de programación. Ejemplo: Definición de variables_componentes. Inicio Escribir_texto (‘entrada de dato’); Leer_Dato(dato); Proceso salida = dato * 2; Escribir_resultado_proceso (salida); Fin Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 10 Metodología de la Programación • Codificación del programa – – Escribir el algoritmo en un lenguaje de programación • Permite ser leído y ejecutado por el ordenador. Tipos de lenguajes: • De bajo nivel (dependen de la máquina sobre la que se ejecuta): – – • De alto nivel (no dependen de la máquina): – – – – Lenguaje Máquina (escritura en binario) Ensambladores: (escritura simbólica) Imperativos: Estructurados • FORTRAN • C • PASCAL Declarativos: • LISP / PROLOG Orientados a Objeto i Java i C++ i Ada 95 La salida de la fase de codificación son los programas fuente (que todavía no se pueden ejecutar directamente sobre el ordenador) Un programa se compone de un conjunto de instrucciones que indican las operaciones elementales a ejecutar y la manera en que se encadenan. Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 11 Metodología de la Programación • Compilación y enlace – – – Salvo que el programa se escriba directamente en lenguaje máquina (muy improbable) siempre debe existir un traductor. La fase de compilación y enlace permite leer el programa escrito en lenguaje de alto nivel y traducirlo a lenguaje maquina. Hay tres tipos de traductores: – – – Compiladores. Interpretes. Ensambladores Traductor PROGRAMA FUENTE Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Compilador PROGRAMA OBJETO Tema 2: Conceptos básicos de programación 12 Metodología de la Programación PROGRAMA • FUENTE Compilación Fases de un compilador Analizador Morfológico Analizador Sintáctico Analizador Semántico Programa en lenguaje intermedio Optimizador Generador de Código Programa Objeto Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 13 Metodología de la Programación Compilación y enlace Errores de Compilación (léxicos, sintácticos y semánticos) Programa Fuente (texto) Archivos de Biblioteca Archivos incluídos Compilador Programa Objeto Enlazador Otros programas objetos Programa Ejecutable Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 14 Metodología de la Programación • Verificación/depuración – – – Errores en tiempo de ejecución • división por cero, apertura de ficheros inexistentes,... Errores lógicos (los más difíciles de detectar) • Resultados incorrectos Optimización del algoritmo. Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 15 Metodología de la Programación Compilación y enlace + Verificación y depurado Errores de Compilación (léxicos, sintácticos y semánticos) Programa Fuente (texto) Compilador Archivos de Biblioteca Archivos incluídos Programa Objeto Enlazador Errores de ejecución Errores lógicos Resultados Correctos Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Verificación y Depurado Tema 2: Conceptos básicos de programación 16 Programa Ejecutable Metodología de la Programación • Documentación – – – – Se genera a lo largo de todas la fases Debe permitir acceder al programa a una persona distinta al programador. Interna: – Código de programa fuente – Comentarios Externa: • Especificación de requisitos Listado de programa fuente Explicación de los algoritmos (CLARO y CONCISO) Diagramas de flujo o pseudocódigo. Especificación de datos, formatos de pantalla,... • ... • • • • Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 17 Metodología de la Programación: Fases Problema Análisis Definición del Problema Datos de Entrada Datos de Salida Diseño División modular del Problema (Pseudocódigo, Diagrama de Flujo) DE, DS Codificación Documentación Programa fuente Pseudocódigo Diagrama de Flujo Manual de Usuario Especificación de los Datos ... Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Programa Fuente Errores de Compilación Compilar y Enlazar Errores de Ejecución Errores de Lógica Programa Ejecutable Verificar y Depurar Tema 2: Conceptos básicos de programación 18 Programación Estructurada • Un programa estructurado se basa en la aplicación sistemática de las siguientes reglas: – Diseño modular: descomponer un módulo complejo en otros submódulos más simples → Diseño Descendente – Programar cada módulo de manera lo más independiente posible – Razonamiento de lo general a lo particular. – Ventajas: • • • • • • • – • Mejora la legibilidad del programa Facilita el entendimiento del programa Simplifica el mantenimiento Minimiza la complejidad Cada módulo puede ser programado por personas diferentes Utilización de una metodología de programación disciplinada Favorece el trabajo en equipo Problema: No existe un método estándar para dividir en módulos un programa Teorema de la Programación Estructurada Todo algoritmo puede ser descrito utilizando solamente tres tipos de estructuras de control: secuencial, alternativa, y repetitiva. Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 19 Programación Estructurada • Secuencia – • Todas las acciones se ejecutan sucesivamente, una a continuación de otra sin posibilidad de bifurcaciones. Acción 1 Acción 2 Sentencias Alternativa – Una estructura alternativa bifurca el flujo de un algoritmo según se cumplan una o varias condiciones. Falso Cierto Falso Cierto Condición Condición Acción Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Acción 3 Acción 1 Acción 2 Tema 2: Conceptos básicos de programación 20 Programación Estructurada • Sentencias Repetitivas: – Una estructura de control repetitiva permite ejecutar una o varias acciones un número de veces que puede estar definido a priori o indefinido hasta que se cumpla una determinada condición. Tipos de sentencias de control repetitivas: – – – – PARA: El nº de repeticiones se conoce antes de iniciar el bucle. MIENTRAS: Repite las acciones mientras la condición se cumple. HACER MIENTRAS: Se realiza siempre una vez la acción y luego se vuelve a realizar mientras la condición se cumpla REPETIR HASTA: Repite las acciones mientras la condición sea falsa (no existe en C) Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 21 Programación Estructurada PARA Falsa Índices Cierta Acción HACER MIENTRAS MIENTRAS Falso Acción Condición Cierta Cierta Condición Acción Falsa Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 22 Ejemplos • Diseñar un algoritmo que resuelva una ecuación de segundo grado: – Datos de entrada: • – Datos de salida: • – Coeficientes a,b,c Soluciones de la ecuación si las hay Nota: • • El algoritmo únicamente resolverá la ecuación en el caso de existir 2 soluciones diferentes (opción 1) En cualquier otro caso mostrara un mensaje de error. Diseñar el algoritmo para hacer una tortilla de patata • Diseñar el algoritmo que resuelva la ecuación de segundo grado dando todas las posibles soluciones (opción 2). • Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 23 Ejemplo (opción 1): Ecuación de Segundo Grado – Diagrama de flujo INICIO Entrada de datos: a , b , c NO a!= 0 SI DECISIÓN SI NO b*b >4*a*c No ecuación de 2º grado Datos Incorrectos x1=(-b+sqrt(b*b-4*a*c))/2*a FIN x2=(-b-sqrt(b*b-4*a*c))/2*a FIN Salida x1, x2 Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI FIN Tema 2: Conceptos básicos de programación 24 Ejemplo (opción 1): Ecuación de Segundo Grado – Pseudocódigo Algoritmo ‘Ecuación de segundo grado’ {Cálculo de una ecuación de segundo grado} Variables a, b, c; /*Introducir las constantes con sus signos*/ x1, x2 /*Valores de Salida*/ Inicio Escribir (“Introduzca dato A:”); /*Entrada de Datos*/ Leer (a); Escribir (“Introduzca dato B:”); Leer (b); Escribir (“Introduzca dato C:”); Leer (c); Si (a != 0) entonces Si (b2-4*a*c > 0) /*Condición para evitar la raíz cuadrada de un nº negativo*/ x1:=(-b+sqrt((b*b)-(4*a*c)))/(2*a); x2:=(-b-sqrt((b*b)-(4*a*c)))/(2*a); Escribir (‘Valor x1=‘,x1,’y Valor x2=‘,x2); sino /* Raíz negativa */ Escribir (“Datos Incorrectos”); fin_si sino Escribir (“ No se trata de una ecuación de 2º grado”) fin_si Fin Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI Tema 2: Conceptos básicos de programación 25 Escuela Técnica Superior de Ingeniería ICAI Alberto Aguilera 25 28015 Madrid Tel +34 91 542 28 00 Fax + 34 91 542 31 76 Iwww.icai.upcomillas.es www.upcomillas.es