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