Tema 2. Diseño Modular.

Documentos relacionados
7.3. Estructura de un programa

Programación Modular. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Departamento de Lenguajes y Ciencias de la Computación. Contenido

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Tema 2 Introducción a la Programación en C.

Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.

Fundamentos de Informática 3. Construcción de Software

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Capitulo 2. Programación Modular

2.3 DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

TEMA 1: Algoritmos y programas

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

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

PROGRAMACION MODULAR FUNCIONES

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

INTRODUCCIÓN A LA POO EN C++

Programación estructurada

Modularización en lenguaje C. Funciones

Tema II: Metodología para la construcción de programas

2.2 METODOLOGÍA PARA EL DISEÑO DE SOFTWARE

INTRODUCCION A LA PROGRAMACION (C.U.) PROGRAMACION (T.I.G.)

Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para computadora, en el que cada paso del algoritmo se

Programación de Ordenadores

Tipos Abstractos de Datos (TAD) Lección 1

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Introducción a la Programación en C Funciones

Estructuración del programa en partes más pequeñas y sencillas

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Fundamentos de Programación 2017-I

Programación Estructurada

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

UNIDAD 3 Modularidad

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

: Algorítmica y Estructura de Datos I

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

ALGORITMOS Y PROGRAMACIÓN I Unidad 3

GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos.

FACULTAD DE INGENIERIA

Introducción a la programación: Contenido. Introducción

METODOLOGÍA DE LA PROGRAMACIÓN. APLICACIONES EN BASIC, COBOL Y PASCAL ÍNDICE

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Unidad I: Introducción a las estructuras de datos

TEMA 5: Subprogramas, programación modular

Tema 3: Resolución de problemas con computadoras 2014

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Procedimientos y funciones

Programación Orientada a Objetos

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Funciones Tipos de funciones y Recursividad

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Tema: Funciones, Procedimientos y Recursividad en C#.

Lenguaje de programación C. Introducción

PRESENTACIÓN DEL ALGORITMO

PROGRAMACION ESTRUCTURADA: Tema 3. Funciones

Programación y Algoritmia

UNIVERSIDAD POPULAR DEL CESAR FACULTAD INGENIERIAS Y TECNOLOGICAS DEPARTAMENTO DE INGENIERIA DE SISTEMAS

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Programación Orientada a Objetos en C++

Diseño Estructurado. Diseños eran los antes. Lic. Ariel Trellini 28/07/2015

Tipos Abstractos de Datos

Cómo implementar tus propias funciones en Lenguaje C?

Tema 10: Tipos de datos definidos por el usuario

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Tema 5. Diagramas de flujo. Computacion - FA.CE.NA.

Programación orientada a objetos I

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

Tema 6: Memoria dinámica

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Operadores aritméticos

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

PROGRAMA: COMPUTACION I

Paso de Parámetros a una Función

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Examen Teórico (1/3 de la nota final)

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

PROBLEMAS DEL TEMA 7 SUBPROGRAMAS Y MODULARIDAD

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

Dra. Jessica Andrea Carballido

Introducción a la. Programación con

Lenguaje C, tercer bloque: Funciones

Transcripción:

Tema 2. Diseño Modular. E.U. Politécnica Curso 2004-2005 Departamento Lenguajes y Ciencias de la Computación. Universidad de Málaga José Luis Leiva Olivencia. Despacho: I-326D (Edificio E.U.P)/ 3.2.41 (Teatinos-E.T.S.I.I.) 1 Introducción. Por dónde empezaste a escribir tu programa? Seguramente, después de una lectura rápida de las especificaciones y de los requisitos del programa la siguiente tarea fue la escritura del código en algún lenguaje de programación. Posteriormente comenzaría la ardua tarea de corregir errores, depurar el código, cambiar la lógica del programa, etc. Realizar un proyecto grande de software requiere la participación de un equipo de programadores, que necesitan una buena planificación, organización y comunicación entre ellos para conseguir su meta. La ingeniería del software, afortunadamente, proporciona técnicas para facilitar el desarrollo de programas. 2

Introducción (II) El término resolver un problema significa, a grandes rasgos, llevar a cabo todo el proceso de definición del problema y desarrollo de una solución, a modo de programa, que lo resuelva. Una solución consta de dos componentes: algoritmos y estructuras de datos. 3 Introducción (III) INCONVENIENTES DE LA PROGRAMACIÓN TRADICIONAL. rigidez e inflexibilidad de los programas, pérdida excesiva de tiempo en la corrección de errores documentación deficiente e ineficiente, incluso mala, imposibilidad de reutilizar el código o fragmentos del mismo en proyectos futuros 4

Introducción (IV) DISEÑO TOP-DOWN El diseño top-down es una de las metodologías más empleadas en programación. Está basada en la técnica de resolución humana de problemas: divide y vencerás. Consiste en dividir el algoritmo en unidades más pequeñas sucesivamente hasta que sean directamente ejecutables en el ordenador. Programa Modular Programa Principal Procedimiento P1 Función F Procedimiento P2 5 Introducción (V) Encontrar Mediana Leer datos en el vector Ordenar vector Elegir el elemento medio del vector Pedir valores Almacenar Método 1 Método 2 Método 1 Método 2 6

Introducción (VI) Abstracción procedural: Cada algoritmo es como una CAJA NEGRA Cada caja negra especifica qué se hace, no como se hace. A la vez, ninguna caja negra debe saber cómo otra caja negra realiza una tarea, sino sólo qué acción realiza. Los distintos componentes de una solución deben mantenerse aislados unos de otros. La abstraccion procedural separa el propósito de un programa de su implementación. Una vez que el programa ha sido escrito es posible usarlo sin necesidad de conocer las particularidades de su algoritmo, con sólo tener una definición de la acción que realiza y una descripción de los parámetros que maneja. 7 Introducción (VII) Ocultación: El principio de ocultación de la información no sólo oculta los detalles en cajas negras, sino que asegura que ninguna otra caja negra puede acceder a esos datos Q P Q no debe saber cómo P realiza la ordenación pero si que debe pasarle un array de enteros y de longitud MaxArray 8

Introducción (VIII) Las especificaciones suponen un conjunto de condiciones que deben cumplirse para que se ejecute un módulo. Puede verse como un contrato entre los módulos implicados que ayuda a descomponer el problema en tareas más pequeñas y, en caso de proyectos en equipo, a depurar responsabilidades. El contrato debe especificar: cómo usar la rutina o tarea; qué hace la rutina (resultado de su ejecución). 9 Introducción (IX) Aspectos favorables de la modularidad: Construcción del programa (son + pequeños) Depuración del programa (la modularidad aisla errores). Facilidad para la legibilidad. Modularidad aisla las modificaciones. Eliminación de redundancia. 10

Introducción (X) Criterios de modularización: NO HAY. El objetivo de la modularidad es obtener software que sea manejable, de modo que una modificación futura afectare a unos pocos módulos. Por acoplamiento se entiende el grado de interconexión entre los módulos. El objetivo será, por tanto, maximizar la independencia de los módulos, es decir, minimizar el acoplamiento. 11 Introducción (XI) El acoplamiento entre módulos se da de varias maneras: de control y de datos. El acoplamiento de control implica la transferencia del control de un módulo a otro (llam/ret de subprogramas). El acoplamiento de datos se refiere al compartir de datos entre los mod. Procesar nómina Calcular ingresos Calcular retención plan jubilación Calcular impuestos Calcular retención después impuestos SS IRPF 12

Introducción (XII) Los módulos se representan en la figura mediante rectángulos, mientras que las relaciones entre ellos se representan mediante flechas (diagrama de estructura) y constituyen el acoplamiento de control. El acoplamiento de datos se representa en los diagramas de estructura mediante flechas adicionales que indican los elementos de información (datos o parámetros) que se pasan a un módulo cuando otro módulo solicita sus servicios, así como los datos que devuelve el módulo al módulos que realiza la llamada. 13 Introducción (XIII) Procesar nómina Id. Empleado Ingresos Tot. Calcular ingresos Calcular retención plan jubilación Calcular impuestos Calcular retención después impuestos SS IRPF OJO: EFECTOS LATERALES Y VBLES. GLOBALES. 14

Ventajas de la modularización. Crear grandes programas de forma sencilla. Ayuda a que un programa sea más fácil de modificar. Compilación separada. Reutilización. Mayor comprensión. 15 Módulos de biblioteca (I) Modulo de definición (.h) y módulo de implementación(.c o.cpp). En los archivos de cabecera.h incluiremos (1) las definiciones de constantes (la cláusula #define del preprocesador); (2) variables globales; (3) la descripción del programa; y (4) los prototipos de las funciones que aparecen en el programa. 16

Módulos de biblioteca (II) Fichero prueba.h : #define CONST1 1 #define CONST2 2 int VariableGlobal; /* Programa: Este programa muestra la utilidad de los ficheros de cabecera Desarrollado por: Periquito de Los Palotes Descripción: Se limita a escribir en pantalla los valores 1 y 2 Variables: VariableGlobal: ilustra la inclusión de una variable global */ Constantes: CONST1: constante 1 CONST2: constante 2 /* Prototipos de funciones */ void funcion1 (int uno); /* uno = variable para la salida por pantalla Imprime en pantalla el valor de la variable uno */ void funcion2 (int dos); /* dos = variable para la salida por pantalla Imprime en pantalla el valor de la variable dos */ 17 Módulos de biblioteca (III) Fichero prueba.cpp : #include <stdio.h> #include prueba.h void funcion1(int uno){ printf( Uno= %d\n, uno); } void funcion2(int dos){ printf( Dos= %d\n, dos); } void main() { funcion1(1); funcion2(2); printf( Variable Global= %d\n, VariableGlobal); } 18

Módulos de biblioteca (IV) #include <stdio.h> #include <conio.h> #include "prueba.cpp" void main() { printf("variable global %d", variableglobal); variableglobal=10; funcion1(1); funcion2(2); printf("variable global %d", variableglobal); getche(); } 19 Compilación separada (I) Archivo: uno.cpp Archivo: dos.cpp #include <stdio.h> #include <stdio.h> void dos(int n) #include <conio.h> { void dos(int); printf("%d al cuadrado es %d\n",n,n*n); void main() } { printf("hola, es el programa uno\n"); dos(3); getche(); } 20

Compilación separada(ii) 21 Dev-C++(I) Figura 1 22

Dev-C++(II) Figura 2 23