Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Tema 2Conceptos básicos de programación
Fundamentos de Informática
2Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Índice
• Metodología de la programación
• Programación estructurada
3Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la Programación
• Pasos a seguir para el desarrollo de un programa (fases):
–– AnAnáálisis del problema.lisis del problema.–– DiseDiseñño de el/los algoritmos.o de el/los algoritmos.–– CodificaciCodificacióón del programa.n del programa.–– CompilaciCompilacióón.n.–– VerificaciVerificacióón/depuracin/depuracióón.n.–– DocumentaciDocumentacióón.n.
4Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la Programación
––AnAnáálisis del problemalisis del problema
ANÁLISIS DELPROBLEMA
DATOS DE ENTRADA
DEFINICIÓNPROBLEMA
DATOS DESALIDA
(Resultados)
5Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación5
• 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).
Metodología de la Programación
––AnAnáálisis del problemalisis del problema
6Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
•• DiseDiseñño de el/los algoritmoso 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
Metodología de la Programación
PROBLEMA
DATOS DE ENTRADA
DEFINICIÓN PROBLEMA
DATOS DE SALIDA
Dato 1. Dato 2.Subproblema 1. 1
Salida 1. Salida 2.Subproblema 1.2
Problema 1
7Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la Programación
•• DiseDiseñño de el/los algoritmoso de el/los algoritmosDiagrama de flujo
Introducir un número
Acumulativo s=s+a
Contarlo n=n+1
FIN
ImprimirPromedio
Promedio p=s/n
Introducir un número en a
INICIO
Contador a cero n=0
Acumuladores a cero s=0
a=0 NOSI
8Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación8
TERMINAL
ENTRADA-SALIDA
PROCESO
SI
NO
DECISIÓN
CONECTOR
COMENTARIOS
Metodología de la Programación
•• DiseDiseñño de el/los algoritmoso de el/los algoritmos Diagrama de flujo
9Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación9
SUBRUTINA
PANTALLA
IMPRESORA
Metodología de la Programación
•• DiseDiseñño de el/los algoritmoso de el/los algoritmos Diagrama de flujo
10Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la Programación
•• DiseDiseñño de el/los algoritmoso de el/los algoritmosPseudocódigoSe 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);
Procesosalida = dato * 2;
Escribir_resultado_proceso (salida);Fin
11Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
•• CodificaciCodificacióón del programan 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): – Lenguaje Máquina (escritura en binario)– Ensambladores: (escritura simbólica)
• De alto nivel (no dependen de la máquina):– Imperativos:
Estructurados Orientados a Objeto• FORTRAN i Java• C i C++• PASCAL i Ada 95
– Declarativos: • LISP / PROLOG
– 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.
Metodología de la Programación
12Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
•• CompilaciCompilacióón y enlacen 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
Metodología de la Programación
PROGRAMAFUENTE
PROGRAMAOBJETO
Compilador
Traductor
13Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la ProgramaciónPROGRAMA
FUENTE
Analizador Morfológico
Analizador Sintáctico
Analizador Semántico
Programa Objeto
Optimizador
Generador de Código
Programa en lenguaje
intermedio
•• CompilaciCompilacióónnFases de un compilador
14Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la ProgramaciónCompilaciCompilacióón y enlacen y enlace
Archivosde Biblioteca
ProgramaFuente(texto)
Compilador EnlazadorPrograma Objeto
Archivosincluídos
Errores de Compilación(léxicos, sintácticos y semánticos)
ProgramaEjecutable
Otros programas objetos
15Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
•• VerificaciVerificacióón/depuracin/depuracióónn– 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.
Metodología de la Programación
16Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la ProgramaciónCompilaciCompilacióón y enlace +n y enlace +VerificaciVerificacióón y depuradon y depurado
Archivosde Biblioteca
ProgramaFuente(texto)
Compilador EnlazadorPrograma Objeto
Archivosincluídos
Errores de Compilación(léxicos, sintácticos y semánticos)
Errores de ejecuciónErrores lógicos Programa
EjecutableVerificación y
DepuradoResultadosCorrectos
17Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
•• DocumentaciDocumentacióónn– 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,...
• ...
Metodología de la Programación
18Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Metodología de la Programación: Fases
Problema AnálisisDefinición del
ProblemaDatos de EntradaDatos de Salida
Diseño
División modulardel Problema
(Pseudocódigo, Diagrama de Flujo)
DE, DS
Codificación
Compilar y Enlazar
ProgramaFuente
Verificar y Depurar
ProgramaEjecutable
Programa fuentePseudocódigoDiagrama de FlujoManual de UsuarioEspecificación de los Datos...
Errores deCompilación
Errores de EjecuciónErrores de Lógica
Documentación
19Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
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 EstructuradaTodo algoritmo puede ser descrito utilizando solamente tres tipos de estructuras de control: secuencial, alternativa, y repetitiva.
20Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Programación Estructurada
• Secuencia
– Todas las acciones se ejecutan sucesivamente, una a continuación de otra sin posibilidad de bifurcaciones.
• Sentencias Alternativa
– Una estructura alternativa bifurca el flujo de un algoritmo según se cumplan una o varias condiciones.
Acción 1
Acción 2
Acción 3
Acción 1 Acción 2
Falso Cierto
Condición
Acción
Falso Cierto
Condición
21Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
• 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)
Programación Estructurada
22Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Índices
PARA
Acción
Falso
Condición
Cierta
MIENTRAS
Cierta
Falsa
Acción
Condición
HACERMIENTRAS
Cierta
Falsa
Acción
Programación Estructurada
23Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Ejemplos• Diseñar un algoritmo que resuelva una ecuación de segundo grado:
– Datos de entrada:• Coeficientes a,b,c
– Datos de salida:• 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).
24Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
Entrada de datos: a , b , c
DECISIÓN
b*b >4*a*c
SI NO
DatosIncorrectos
x1=(-b+sqrt(b*b-4*a*c))/2*a
x2=(-b-sqrt(b*b-4*a*c))/2*a
Salidax1, x2
INICIO
FIN
FIN
No ecuación de 2º grado
a!= 0SI
NO
FIN
Ejemplo (opción 1):Ecuación de Segundo Grado – Diagrama de flujo
25Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI
Tema 2: Conceptos básicos de programación
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*/
InicioEscribir (“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_sisino
Escribir (“ No se trata de una ecuación de 2º grado”)fin_si
Fin
Escuela Técnica Superior de Ingeniería ICAIAlberto Aguilera 2528015 MadridTel +34 91 542 28 00Fax + 34 91 542 31 76Iwww.icai.upcomillas.es
www.upcomillas.es