construcción de programas Prof. Eliana Guzmán U.



Documentos relacionados
Tema 2 Conceptos básicos de programación. Fundamentos de Informática

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

1 La Resolución de Problemas utilizando la Computadora

Estructuras de Control - Diagrama de Flujo

Algoritmos y Diagramas de Flujo 2

Estructuras de Control - Diagrama de Flujo

Diseño de algoritmos

Introducción a la Informática Resolución de problemas con computadoras. Algoritmos

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

MACROS. Automatizar tareas a través del uso de las macros.

DISEÑO DE FUNCIONES (TRATAMIENTOS)

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Formularios. Formularios Diapositiva 1

Introducción a la Computación

ESTRUCTURA DE DATOS: ARREGLOS

Soporte lógico de computadoras

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

Matemática de redes Representación binaria de datos Bits y bytes

Introducción a la Firma Electrónica en MIDAS

Metodología de la programación y desarrollo de software. Marta Zorrilla Universidad de Cantabria

Ejemplos de conversión de reales a enteros

4. Programación Paralela

Arquitectura de Aplicaciones

TEMA 2: DESARROLLO DEL SOFTWARE

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

Figura 4.1 Clasificación de los lenguajes de bases de datos

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

UNIDADES DE ALMACENAMIENTO DE DATOS

Plan de estudios ISTQB: Nivel Fundamentos

CONTENIDOS. 2. Entidades primitivas para el desarrollo de algoritmos.

Diseño orientado al flujo de datos

Introducción a la Computación TFA

Ecuaciones de primer grado con dos incógnitas

4º ESO 1. ECUAC. 2º GRADO Y UNA INCÓGNITA

Procesadores de lenguaje Tema 1: Introducción a los compiladores

Capítulo 4 Procesos con estructuras de repetición

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

Modulo 1 El lenguaje Java

BPMN Business Process Modeling Notation

Ecuaciones de segundo grado

Metodologías de diseño de hardware

Preliminares. Tipos de variables y Expresiones

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama.

Centro de Capacitación en Informática

EL PROCESO DE DISEÑO DEL SOFTWARE

IAP TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO)

METODOLOGIA DE LA PROGRAMACION

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

SISTEMAS DE INFORMACIÓN I TEORÍA

Problemas indecidibles

Capítulo 1 Introducción a la Computación

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

DIAGRAMA DE FLUJO DE DATOS

Guía Práctica para el Uso del Servicio de Software Zoho CRM

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

1. DML. Las subconsultas

Estructuras de Datos y Algoritmos Tecnólogo en Informática

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Introducción al lenguaje de programación java

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Módulo 9 Sistema matemático y operaciones binarias

SIIGO Pyme. Templates. Cartilla I

Distinguir las diferentes estructuras de repetición utilizadas en problemas con ciclos: mientras, haga-mientras, repita-hasta, para.

Ingeniería de Software. Pruebas

1. Resolución de problemas con computadoras

Tema 2. Software. Informática (1º Ingeniería Civil)

forma de entrenar a la nuerona en su aprendizaje.

RELACIONES DE RECURRENCIA

TEMA 2: Representación de la Información en las computadoras

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Materia: Informática. Nota de Clases Sistemas de Numeración

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

Lenguajes de Programación

Estructuras de Sistemas Operativos

Tema 2 : NÚMEROS ENTEROS. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Introducción. 1. Lenguajes de máquina 2. Lenguajes de ensamblador 3. Lenguajes de alto nivel

capitulo3 MARCO TEÓRICO Para el diseño de la reubicación de los procesos se hará uso de la Planeación

Operación de Microsoft Word

ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN

by Tim Tran:

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

INTRODUCCION A LA PROGRAMACION DE PLC

❷ Aritmética Binaria Entera

Guía paso a paso para la cumplimentación del formulario de candidatura

GENERALIDADES DE BASES DE DATOS

Unidad Didáctica. Códigos Binarios

EJERCICIOS SOBRE : DIVISIBILIDAD

GUÍA DE TRABAJO Tecnología en Sistemas de Información

NÚMEROS NATURALES Y NÚMEROS ENTEROS

DIAGRAMAS DE GANTT DIAGRAMAS DE FLUJO Y PSEUDOCODIGOS COMO HERRAMIENTAS PARA LA PROGRAMACION DE JUEGOS PEDAGOGICOS ERIKA VANNESSA MARTINEZ SUAZA

Bienvenidos a la presentación, producción de informes y depuración (debugging). En esta unidad discutiremos la producción de informes utilizando la


Transcripción:

Unidad II. Metodología para la construcción de programas Prof. Eliana Guzmán U. Semestre: A-2015

Introducción Resolver un problema con una computadora conduce a la escritura de un programa y a su ejecución. El proceso de diseñar un programa es esencialmente creativo, pero se pueden considerar una serie de fases o pasos comunes, que sirven de guía cuando se está aprendiendo a escribir programas.

Programación Es el proceso de escribir un programa, por lo que requiere conocer cuál es el conjunto de instrucciones del lenguaje de programación, que se esté empleando.

Programa Es un conjunto de instrucciones internas utilizadas para ejecutarse en una computadora y que producen un resultado concreto. Cuando un programa se ejecuta normalmente hay dos tipos de entrada a la computadora: el programa y los datos.

Instrucciones, sentencias o proposiciones: i Son los diferentes pasos o acciones de un programa o algoritmo, las cuales especifican ciertas instrucciones i que debe ejecutar la computadora. Las instrucciones básicas que una computadora es capaz de manipular y ejecutar, se pueden agrupar en cuatro grupos:

Tipos de instrucciones Instrucciones de entrada/salida. Instrucciones aritmético/lógicas: ejecutan este tipo de operaciones. Instrucciones de selección: permiten seleccionar de alternativas múltiples según una condición. Instrucciones de repetición: permiten la repetición de secuencias de instrucciones, una cantidad dada de veces.

Fases de resolución de un problema a través de un programa (ciclo de vida de un software) Análisis del problema. Diseño del algoritmo. Codificación. Compilación y Ejecución. Verificación y Depuración. Mantenimiento y Documentación.

Ciclodevidadeunsoftware Análisis del problema. Diseño del algoritmo. Codificación ió (implementación) ió Se implementa el algoritmo en código. Compilación y Ejecución. Verificación y Depuración. Mantenimiento y Documentación. El resultado de estas dos etapas, es el diseño detallado del algoritmo

Ciclodevidadeunsoftware 1. Análisis del problema: Esta fase requiere una clara definición, donde se exprese exactamente lo que debe hacer el programa y el resultado o solución deseada. Para definir bien un problema, es conveniente responder las siguientes i preguntas: Qué entradas se requieren? (tipo y cantidad) Qué método produce la salida deseada? d Cuál es la salida deseada? (tipo y cantidad)

Ciclodevidadeunsoftware Ejemplo 1: Calcular la superficie de un rectángulo. Entradas: Proceso: Salida: base altura Cálculo de la superficie: Superficie = base * altura Superficie

Ciclo de vida de un software Ejemplo 2: Calcular la superficie y la longitud de la circunferencia, de un círculo de radio r. Entrada: Radio del círculo: r Proceso: Cálculo de la superficie: πr 2 Cálculo de la longitud de la circunferencia: 2πr Superficie del círculo Salidas: Longitud de la circunferencia del círculo

Definición de algoritmo Antes de explicar la segunda fase, vamos a estudiar algunas definiciones de algoritmo: es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. Preciso: indica el orden en que se ejecutan cada paso. Definido: si se sigue dos veces, se obtiene el mismo resultado. Finito: tiene un número determinado de pasos.

Definición de algoritmo Ejemplos de algoritmos son: Instrucciones para montar una bicicleta. Hacer una receta de cocina. Hacer la suma de dos enteros. Los algoritmos se pueden expresar por fórmulas, diagramas de flujo y pseudocódigo.

Ciclodevidadeunsoftware 2. Diseño del algoritmo Se determina cómo hace el programa la tarea solicitada. Los métodos más eficaces de diseño se basan en el conocido divide y vencerás. Es decir, la resolución de un problema complejo se realiza dividiendoidi d el problema en subproblemas, bl y a continuación dividir estos subproblemas en otros de nivel más bajo, hasta que pueda implementarse una solución en el computador. Este método se conoce como diseño descendente o modular.

Ciclodevidadeunsoftware Cada subprograma se resuelve mediante un módulo que tiene un solo punto de entrada y un solo punto de salida. Cualquier programa bien diseñado, consta de un programa principal que llama a los subprogramas. Los programas estructurados de esta forma, se dice que tienen un diseño modular, y el método de descomponer el programa en módulos más pequeños se llama programación modular.

Ciclodevidadeunsoftware Conclusión: el diseño del algoritmo es el proceso de convertir los resultados de la etapa de análisis del problema, en un diseño modular con refinamientos sucesivos, que permitan una posterior traducción a un lenguaje de programación.

Ciclodevidadeunsoftware Las dos herramientas más utilizadas comúnmente para diseñar algoritmos son: los diagramas de flujo y los pseudocódigos. a. Diagrama de flujo: es una representación gráfica de un algoritmo. Utiliza símbolos estándar que representan los pasos del algoritmo unidos por flechas denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar. Los símbolos empleados se han establecido y los más utilizados son:

Ciclodevidadeunsoftware Línea de flujo Conector Proceso Llamada a subrutina Entrada/Salida Pantalla Terminal, representa el inicio y fin de un programa Decisión Impreso Teclado

Ciclo de vida de un software Ejemplo de Diagrama de flujo Inicio Leer (base, altura) superficie base * altura Escribir (superficie) Fin

Ciclodevidadeunsoftware b. Pseudocódigo: es un lenguaje de descripción de algoritmos. Su uso hace el paso de codificación final, relativamente fácil. Nació como un lenguaje similar al inglés y era un medio para representar básicamente las estructuras de control de programación estructurada, que se verán más adelante. El pseudocódigo no se puede ejecutar en una computadora.

Ciclodevidadeunsoftware Su ventaja radica que al utilizarlo, en la planificación del programa, el programador se puede concentrar en la lógica y en las estructuras de control, y no preocuparse por las reglas del lenguaje de programación. Es también más fácil corregir errores de la lógica de programación que si el programa está codificado. Puede traducirse fácilmente a lenguajes estructurados como el Pascal.

Ciclodevidadeunsoftware Ejemplo de un algoritmo escrito en Pseudocódigo: algoritmo superficie_de_un_rectangulo {declaración de variables y constantes} Inicio Leer(base, altura) superficie base * altura Escribir( La superficie del rectángulo es:, superficie) Fin

Ciclodevidadeunsoftware 3. Codificación de un programa Codificación es la escritura de la representación del algoritmo desarrollada en las etapas precedentes, usando un lenguaje de programación. En esta etapa se traduce el algoritmo y puede transcribirse en la computadora. Esta operación se realiza con el programa editor de texto, para obtener el programa fuente.

Ciclo de vida de un software Para realizar la conversión del algoritmo en programa, debe sustituir las palabras reservadas en español por sus homónimos en inglés, respetando la sintaxis del lenguaje de programación empleado.

Ciclodevidadeunsoftware PROGRAM Ejemplo1; USES CRT; VAR lado1,lado2, area: REAL; BEGIN {Este programa calcula el área de un rectángulo} ClrScr; WRITELN ('Escriba los lados del rectángulo'); READLN (lado1); READLN (lado2); area:=lado1*lado2; WRITELN ('AREA DEL RECTANGULO: ', area); END.

Ciclodevidadeunsoftware 4. Compilación y ejecución de un programa La compilación es el proceso de traducir programas fuentes en programas objeto (normalmente en código de máquina), haciendo uso de un compilador o interprete.

Ciclo de vida de un software Compiladores: es un programa intérprete que traduce un programa escrito en lenguaje de alto nivel, en un programa escrito en lenguaje de máquina, de forma que la computadora lo pueda comprender directamente.

Ciclo de vida de un software Intérpretes: es un traductor que toma un programa fuente y realiza la traducción y ejecución línea por línea. Prácticamente ya no se utilizan. Programa fuente Programa fuente Intérprete Compilador Traducción y ejecución línea a línea Programa objeto Intérprete Compilador

Ciclo de vida de un software Fases de la compilación: 1. Escribir el programa fuente utilizando el editor de texto del lenguaje y guardarlo en algún dispositivo de almacenamiento, por ejemplo el DD. 2. Cargar el programa fuente en memoria. 3. Compilar el programa (por ejemplo en TP: Alt+F9). 4. Verificar y corregir los errores de compilación. 5. Obtener el programa objeto. 6. El enlazador (linker) obtiene el programa ejecutable.exe. 7. Se ejecuta el programa y se obtienen las salidas (por ejemplo en TP: Ctrl+F9).

Ciclodevidadeunsoftware Si tras la compilación se presentan errores en el programa fuente (.pas), es preciso volver a editar el programa, corregir los errores y compilar de nuevo, este proceso se repite hasta que no se producen errores, obteniéndose el programa objeto (.psd) y el programa ejecutable (.exe).

Ciclodevidadeunsoftware Cuando se ejecuta un programa se pueden producir tres tipos de errores: 1. Errores de compilación: se producen normalmente por el uso incorrecto de las reglas de programación y suelen ser errores de sintaxis. Si existe un error de sintaxis, la computadora no puede entender la instrucción, no se obtendrá el programa objeto y el compilador imprimirá la lista de errores.

Ciclodevidadeunsoftware 2. Errores de ejecución: estos errores se producen por instrucciones que la computadora puede entender pero no ejecutar. Ejemplo típicos: división por cero, raíces cuadradas de números negativos. En este caso se detiene la ejecución del programa y se muestra un mensaje de error.

Ciclodevidadeunsoftware 3. Errores lógicos: se producen en la lógica del programa y la fuente del error suele ser el diseño del algoritmo. Estos errores son los más difíciles de detectar porque el programa compila y corre bien, pero no se obtienen los resultados correctos. En este caso debe volver a las etapas de análisis y diseño, modificar el algoritmo y cambiar el programa fuente, compilar y ejecutar una vez más.

Ciclodevidadeunsoftware 5. Verificación y depuración de un programa La verificación es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarán si el programa tiene errores. Se debe desarrollar una amplia gama de datos de prueba: valores normales de entrada, valores extremos de entrada que comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa. La depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.

Ciclo de vida de un software 6. Documentación y mantenimiento La documentación de un problema consta de la descripción de los pasos a dar en el proceso de resolución del mismo. Programas pobremente documentados son difíciles de leer, más difíciles de depurar y casi imposibles de mantener y modificar. La documentación puede ser interna y externa. La documentación interna es la contenida en líneas de comentario. La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigo, manuales de usuario con instrucciones para ejecutar el programa y para interpretar t los resultados.

Ciclo de vida de un software La documentación es vital cuando se desea corregir posibles errores futuros o cambiar el programa. Tales cambios se denominan mantenimiento del programa. Después de cada cambio se debe actualizar la documentación. Es común usar las versiones de los programas 1.0, 1.1, 2.0.

Programación modular Es uno de los métodos de diseño más flexible y potente para mejorar la productividad de un programa. El programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada uno de estos módulos se analizan, codifican y ponen a punto por separado.

Programación modular Cada programa tiene un módulo denominado programa principal, que controla todo lo que sucede. Se transfiere el control a cada submódulo, de modo que ellos puedan ejecutar sus funciones y luego devuelve el control al programa principal p cuando haya completado sus tareas. Cada módulo debe tener solamente una tarea específica que ejecutar. Esta tarea puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos.

Programación modular Los módulos son independientes en el sentido que ningún módulo puede tener acceso directo a cualquier otro módulo, excepto el módulo al que llama y sus propios submódulos.

Programación modular

Programación estructurada Programación modular, programación descendente y programación estructurada, son términos que a menudo se utilizan como sinónimos aunque no significan lo mismo. La programación estructurada significa escribir un programa de acuerdo a las siguientes reglas: El programa tiene un diseño modular. Los módulos son diseñados de modo descendente. Cada módulo se codifica utilizando las tres estructuras de control básicas: secuenciales, decisión y repetición.

Programación estructurada La programación estructurada, es un conjunto de técnicas que: Aumentan considerablemente la productividad del programa reduciendo el tiempo requerido para escribir, verificar, depurar y mantener los programas. Utiliza una cantidad limitado de estructuras de control, que minimizan la complejidad de los programas y por consiguiente reducen los errores. Hace los programas más fáciles de escribir, verificar, leer y mantener. Los programas están dotados de una estructura.

Programación estructurada La programación estructurada es un conjunto de técnicas que incorporan: Recursos abstractos: descomponer una acción compleja en términos de acciones más simples que la computadora pueda ejecutar. Diseño descendente (top-down): es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento. Estructuras básicas de control: son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutan, este orden se denomina flujo de control. Las 3 estructuras básicas de control son: secuenciales, decisión y repetición.

A continuación se retoma el concepto de algoritmo y se explica con mas detalle

Concepto y característica de algoritmos Metodología de la programación: es la metodología necesaria para resolver problemas mediante programas. El eje central de esta metodología es el concepto de algoritmo: método para resolver un problema. Problema Diseño del algoritmo Programa de computadora

Concepto y característica de algoritmos Los pasos para la resolución de un problema son: Diseño del algoritmo: describe la secuencia ordenada de pasos, sin ambigüedades, que conducen a la solución de un problema dado. Convertir el algoritmo a un programa usando un lenguaje de programación. Ejecución y validación del programa por la computadora.

Características de un algoritmo Preciso: indicando el orden exacto de realización de cada paso. Definido: si se sigue el algoritmo dos veces se debe obtener el mismo resultado. Finito: it debe tener una cantidad d limitada it de pasos.

Ejemplo 1: Realizar la suma de todos los números pares entre 2 y 1000. El problema consiste en sumar 2 + 4 + 6 + + 1000. Algoritmo: 1. Inicio 2. Establecer suma en cero 3. Establecer número en dos 4. Sumar número a suma. El resultado será el nuevo valor de la suma (suma). 5. Incrementar número en 2 unidades 6. Si número <= 1000 regresar al paso 4, en caso contrario escribir el lúli último valor de suma y terminar el proceso. 7. Fin

Ejemplo 2: Un socio solicita el ingreso a un club. Si está solvente, puede entrar sino se le impide la entrada. Algoritmo 1. Inicio 2. Solicitar it su número de acción 3. Examinar en la base de datos 4. Si el socio está solvente, dejarlo entrar; en caso contrario no dejarlo entrar. 5. Fin

Diseño del algoritmo La información proporcionada al algoritmo constituyen su entrada y la información producida por el algoritmo constituye su salida. Método de descomponer: divide y vencerás. Por ejemplo, en el problema de encontrar la superficie y longitud de un círculo se puede dividir idi en cuatro problemas más simples o subproblemas:

Ejemplo Ejemplo: Calcular la superficie y la longitud de la circunferencia, de un círculo de radio r. Entrada: Radio del círculo Proceso: Cálculo de la superficie (πr2) Cálculo de la circunferencia (2 πr) Salidas: Superficie del círculo Longitud de la circunferencia del círculo

Diseño del algoritmo

Diseño del algoritmo Normalmente los pasos diseñados en el primer esbozo del algoritmo son incompletos e indicarán solo unos pocos pasos (un máximo de 12 aproximadamente). Tras esta primera descripción, estos pasos se amplían en una descripción más detallada con pasos más específicos. Este proceso se denomina refinamiento del algoritmo. Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento, antes de que se pueda obtener un algoritmo claro, preciso y completo.

En el ejemplo: Diseño del algoritmo

Diseño del algoritmo Las ventajas del diseño descendente son: El problema se comprende más fácilmente al dividirse en partes más simples denominadas módulos. Las modificaciones i en los módulos son más fáciles. La comprobación del problema es más sencilla.

Diseño del algoritmo En resumen el diseño de un algoritmo se descompone en: Diseño descendente. Refinamiento por casos. Uso de las herramientas de programación: diagrama de flujo y/o pseudocódigo.