Diseño de Programas.

Slides:



Advertisements
Presentaciones similares
ALGORITMO Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y resolver un problema. De un modo más formal,
Advertisements

Programación de Computadores
El Proyecto Tecnológico
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Pruebas de Unidad y Refactorización
Aprendizaje de Microsoft® Access® 2010
Resolución de Problemas Algoritmos y Programación
Ing. Esp. Ricardo Cujar. El computador: es una máquina que permite hacer tareas aritmético y lógicas de una manera fácil, consta de software y hardware.
Programación modular Procedimientos y Funciones
Introducción a la Programación
Tipos de Datos Abstractos Modularidad
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
Introducción a la programación
INTERFAZ DE ACCES DISEÑO DE BASE DE DATOS
Diseño de un Sistema de Control en Tiempo Real para el Kernel del Sistema Operativo utilizando MatLab-SimuLink Por: MARCO ANTONIO ESPINEL CANGUI DIRECTOR:
Objetivos Específicos de la Unidad
Semana 5 Subprogramas..
PROCEDIMIENTOS FUNCIONES
Funciones y Procedimientos(Pseudocódigo)
Programación Modular (Pseudocódigo)
TEMA 4 TRANSFORMADA DE LAPLACE

Subsistemas de Control
Sistemas decimal, binario, octal y hexadecimal
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
(Organización y Manejo de Archivos)
El Ciclo de Vida de los Sistemas
Descomposición Factorial Unidad 5
LENGUAJE DE PROGRAMACIÓN
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Material de apoyo Unidad 4 Estructura de datos
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
PLC Controladores Lógicos Programables
SISTEMAS DE PROCEDIMENTO DE TRANSACCIONES
Metodología para solución de problemas
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Metodología para la construcción de programas
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
DOCENCIA EN LA CLÍNICA MÉDICA: nuevas herramientas para un aprendizaje significativo Curso Perfeccionamiento Escuela de Medicina Universidad Valparaíso.
COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
SENA REGIONAL HUILA REGIONAL HUILA CENTRO DE LA INDUSTRIA LA EMPRESA Y LOS SERVICIOS Huila Elementos de sistemas de información.
Metodología de la programación
Alexander Aristizabal Ángelo flores herrera
Software El software permite comunicar al computador los problemas y hace posible que nos comunique las soluciones Los programas son el software del computador.
Estructura del Sistemas Operativos por su Estructura
Elaboración de algoritmos usando lógica de programación
Programación orientada a objetos
CIFRAS SIGNIFICATIVAS
Introducción al proceso de verificación y validación.
UNIDAD V Bibliotecas de Funciones L.I. & M.S.C. OSCAR RAMÍREZ CORTÉS PROGRAMACIÓN DE SISTEMAS.
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
Unidad I: CONCEPTOS FUNDAMENTALES
Desarrollo de lógica algorítmica.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Introducción a los TADs
Objetivos del tema. Hemos visto lo que es la estructura de un programa, los datos, que esos datos en realidad se convierten en variables de distinto.
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
Arquitectura de una aplicación Arquitectur a: desarrolla un plan general del sistema, asegurando que las necesidades de los usuarios sean atendidas. Ingeniería.
Curso: Fundamentos de Computación
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
SOFTWARE DE COMPUTADORAS
Fuentes consultadas Fuentes consultadas Medios de Transmisión Medios de Transmisión Actividades de aprendizaje Actividades de aprendizaje Propósito Introducción.
Gestión de Memoria – Parte 2
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Diseño de Programas

Diseño Diseñar un programa se puede comparar con resolver un problema de la vida cotidiana. El programador debe tener muy presente el objetivo del programa, es recomendable que siempre se tenga en mente: Propósito del programa: Qué hace? Qué tan rápido debe ser? En que procesador se va a implementar? Parámetros de entrada: Cómo se pasan los parámetros (registro, por stack, por memoria, etc)? Cuantos son? Qué tipo de datos? Salidas esperadas del programa: Cómo debe alterar registros o zonas de memoria? Hay casos particulares o excepciones: Códigos de error frente a entradas o salidas erróneo

Diseño Es conveniente simplificar el problema original siguiendo los siguientes lineamientos Paso 1: Evitar realizar todo de una sola vez Subdividir el problema en pasos simples o en tareas lógicas independientes De esta manera uno programa módulos más sencillos. Probar módulos más simples es más rápido Integrar módulos lógicamente independientes es más sencillo Paso 2: Realizar diagramas de flujo (si aplica) Un diagrama de flujo debe ser simple de seguir No debe contener instrucciones específicas de un procesador sino ideas o conceptos generales

Diagrama de Flujo Un diagrama de flujo nos permite realizar un seguimiento conceptual del programa a diseñar

Modularización Si un programa es suficientemente complejo un diagrama de flujo no resuelve todo. En estos casos es conveniente modularizar el programa.

Modularización Modularizar un problema implica dividir el mismo en problemas más pequeños o módulos. Resolviendo problemas más pequeños se puede resolver el problema más complejo Para poder modularizar uno debe encontrar los bloques fundamentales que constituyen el problema. Esta división da origen a lo que se conoce como el paradigma de la programación modular. En el proceso de modularización se debe: Dividir el problema en segmentos simples Buscar que los módulos sean genéricos (que tengan flexibilidad) En la búsqueda de flexibilidad no debo perder el objetivo del cual partí

Modularización Divido el problema en bloques fundamentales Resolviendo cada bloque y uniéndolo puedo resolver el problema planteado

Modularización Si diseño segmentos o módulos flexibles puedo reutilizarlos en otro momento Una locomotora? Un hombre?

Modularización Un problema complejo como calcular el coseno de un número podría analizarse como varios bloques simples

Modularización Que bloques empleo? Función Potencia Función División Función Factorial Con que profundidad?

Modularización Ahora no es tan complicado resolver esto no?

Modularización Ventajas Desventajas Un solo modulo es mas simple de escribir y de poner en funcionamiento. Un modulo puede ser útil en diferentes partes de un programa e inclusive formar parte de otros programas. Esto será cierto siempre y cuando el modulo realice una tarea lo suficientemente general. Los errores son mas fáciles de aislar y la corrección de los mismos se limita a la modificación de un modulo. Desventajas La integración de los módulos puede ser compleja en particular si fueron escritos por diferentes personas. Los módulos requieren de documentación cuidadosa dado que pueden afectar a otras partes del programa. Se debe prestar mucha atención cuando se utilizan módulos que modifican estructuras de datos compartidas con otros módulos. La prueba de un modulo puede ser difícil en situaciones en las que se necesitan datos generados por otros módulos.

Modularización Principios de la modularización Aquellos módulos que hacen referencia a datos comunes deben ser parte de un mismo modulo. Dos módulos en donde el primero depende o hace uso del segundo deben estar separados. Un modulo que es usado por varios módulos debe ser separado de los demás. Dos módulos cuya frecuencia de uso es significativamente diferente deben ser separados La organización (estructura) de datos relacionados entre si debe estar oculta en un solo modulo

Modularización Si un problema es difícil de modularizar hay que intentar redefinir las tareas involucradas en el problema. Demasiados casos especiales o demasiadas variables que requieren un tratamiento especial son signos de que la definición del problema es inadecuado

Modularización Los módulos (también llamados subrutinas o funciones) pueden recibir valores llamados parámetros y/o devolver resultados (valor de retorno) Parámetro Modulo o Subrutina Valor de Retorno

Modularización Una subrutina puede ser invocada desde distintos lugares del programa Modulo o Subrutina

Modularización Ejemplo: Temporizador Supongamos que tenemos que escribir un programa que controle el tiempo de encendido de una lámparita. Se pide que un usuario presione un pulsador, que se encienda la luz y un minuto después se apague automáticamente. El procesador controlará todas las entradas y salidas del proceso Procedamos a plantear el diagrama de flujo…

Ejemplo: Temporizador Terminó tiempo? Inicio/Espero NO Se presiónó el pulsador? SI NO Apago la luz SI Fin Enciendo Luz Inicio Temporizador

Ejemplo: Temporizador Utilizando los conceptos de progamación modular podríamos pensar en dos módulos principales para este programa: MODULO 1: Espera que se cierre el interruptor y enciende la luz como respuesta MODULO 2: Provee el reatrdo de un minuto y luego apaga la luz Si bien temos modularizado el progama no lo hemos hecho de la mejor manera: En ambos módulos se opera con datos que no están relacionados entre sí: el tiempo y el estado de la luz (on/off). Modularizando de esta manera perdemos flexbilidad y por ende portabilidad del código.

Ejemplo: Temporizador Recuerden que los criterios para modularizar nos recomiendan mantener los datos (entradas o salidas) que estén relacionados entre sí en el mismo módulo. Podríamos entonces redefinir los módulos de la siguiente manera MODULO1: Espera que se cierre el interruptor MODULO 2: Enciende la luz MODULO 3: Apaga la luz MODULO 4: Retardo de 1 minuto Estos módulos comparten los mismos datos. Los podríamos convertir en un único módulo

Ejemplo: Temporizador Podríamos mejorar el diseño aun más. El primer módulo comprende una etapa de decisión (cuando se cierra el interruptor?) con una etapa de lectura del estado del interruptor (abierto o cerrado) Separemos dejando la decisión afuera de uno de los módulos. El proceso de decisión estará en el programa principal. Redefiniendo esta condición el esquema del programa estará dado de la siguiente manera: MODULO 1: Indicar estado del interruptor (on/off) MODULO 2: Endender o apagar la luz (on/off) MODULO 3: Retardo de 1 minuto

Ejemplo: Temporizador Documentemos cada módulo: MODULO 1: Indica si el interruptor está abierto o cerrado. Este módulo no recibe ningún parámetro de entrada. Como salida ofrece dos valores posibles: 0 = Abierto; 1 = Cerrado MODULO 2: Enciende o apaga la luz. El módulo recibe un parámetro que le indica si debe encender o apagar la luz: 0 = Off ; 1 = On. No devuelve ningún parámetro. MODULO 3: Establece la constante de tiempo de 1 minuto. No recibe o devuelve ningún parámetro. La ejecución de este módulo debería extenderse durante 1 minuto.

Ejemplo: Temporizador Cada modulo es independiente de los demás lo que los convierte en genéricos y por lo tanto pueden ser usados en cualquier programa. Debe notarse que los dos primeros módulos tienen subyacente la estructura del hardware y por lo tanto toda modificación realizada sobre dicha estructura se vera reflejada únicamente en estos módulos y no en el resto del programa.

Se presiónó el pulsador? Ejemplo: Temporizador Terminó tiempo? Estado Interruptor NO Se presiónó el pulsador? SI OFF NO LUZ SI Fin ON LUZ Modulos: Verde Parámetros: Negro Programa: Celeste Temporizador