Tema 2 Conceptos básicos de programación · 2010. 9. 21. · Departamento de Sistemas...

Post on 24-Sep-2020

2 views 0 download

Transcript of Tema 2 Conceptos básicos de programación · 2010. 9. 21. · Departamento de Sistemas...

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