Vous êtes sur la page 1sur 28

Programacin Modular

Programacin digital I Escuela de Sistemas Facultad de Ingeniera Gilberto Diaz

Programacin Modular

Un software monoltico no puede ser entendido fcilmente por un solo lector. El nmero de caminos de control, mbito de referencia, nmero de variables y la complejidad global haran su comprensin casi imposible.

Programacin Modular

Es ms fcil resolver un problema complejo cuando se rompe en piezas manejables.

Divide y Vencers!

Modularidad: Acoplamiento

Un mdulo debe ofrecer un grupo de servicios diseados para que el resto del programa pueda interactuar con l Por ejemplo, en el procesador de texto se debe contar con rutinas para:

Cambiar la letra utilizada: cambiarEstilo() Cambiar el color: cambiarColorLetra() etc.

Programacin Modular

Es un mtodo de resolucin de problemas que consiste en resolver de forma independiente los subproblemas que se obtienen de una descomposicin del problema general

Programacin Modular

La base fundamental de este paradigma de programacin es el mdulo Un mdulo en un conjunto de rutinas que prestan un servicio especfico. Una rutina, subrutina o subprograma, como idea general, se presenta como un algoritmo separado del algoritmo principal, el cual permite resolver una tarea especfica.

Programacin Modular

Decimos que algo es modular si es construido de manera tal que se facilite su ensamblaje, acomodamiento flexible y reparacin de sus componentes.

Programacin Modular

La modularidad da una mejor compresin del problema y reduce el tamao del cdigo Generalmente se hace la asociacin de un mdulo como una caja negra. Se sabe que entra y que sale pero no como se procesa

Funciones y Procedimientos

En la programacin modular se debe asegurar los siguientes preceptos


mxima cohesin mnimo acoplamiento entre mdulos

Modularidad: Cohesin

Un mdulo debe ofrecer un grupo de servicios que sin lugar a dudas deben ir juntos, por ejemplo:

math.h stdio.h

Por ejemplo en un procesador de texto, todos los mdulos tienen como objetivo cooperar para producir documentos con estilo y formato definido (mdulo de colores, mdulo de tamao, etc)

Ventajas de los Mdulos

Facilitan la escritura y depuracin de un programa Localizacin rpida de errores La modificacin de un mdulo no afecta a los dems Un grupo de instrucciones que se repite en varias partes de un programa puede incluirse en un mdulo y llamarlo en el programa.

Diseo Descendente

En us proceso de refinamiento por pasos, etapas o capas. Se comienza desde lo ms general hasta lo ms especfico. En la solucin de problemas grandes es conveniente dividirlo en problemas ms pequeos, los cuales a su vez pueden dividirse en sub-problemas ms pequeos.

Diseo Descendente

Se inicia desde lo ms general, luego dividir y vencer Asegurarse de las capacidades y especificaciones del lenguaje. Esto permite cambiar el lenguaje en medio del diseo sin ningn trauma. Postergar lo ms posible el trabajo en los detalles. Verificar cuidadosamente cada nivel.

Diseo Descendente
Sistema

Mod 1

Mod 2

Mod 1.1

Mod 1.2

Mod 1.2.1

Diseo Descendente
Proc de Palabras

Visualiz

Ortogra

Color

Fuente

Itlica Negrita

Diseo de Rutinas
comienzo

Diseo de la Rutina

Chequeo del diseo

Chequeo del cdigo

Codificar la rutina

Listo

Diseo de Rutinas

Chequeo de prerrequisitos. Verificar si en trabajo de la rutina esta bien definida Definir el problema de la rutina en trminos de los datos de entrada, salida y gestin de errores. Nombre de la rutina. Debe ser conciso y representativo de lo que hace la rutina.

Diseo de Rutinas

Establecer mecanismos de prueba para la rutina. Revisar cualquier caso que genere un error. Pruebe con diferentes formas para codificar la rutina. La construccin de programas es iterativa, es decir, se prueba, se falla y se realiza un nuevo esfuerzo hasta conseguir la versin definitiva.

Codificacin de Rutinas

El diseo de una rutina equivale al plano de una casa. La construccin de la casa equivale a la codificacin de la rutina Escriba la declaracin de la rutina. Esto se conoce como interfaz Escriba el algoritmo con frases de muy alto nivel

Codificacin de Rutinas

Complete cada frase de alto nivel con una o ms lneas de cdigo. Cheque el cdigo informalmente. Comente y haga una prueba de los trozos de cdigo nuevo

Chequeo Formal de Cdigo

Haga una inspeccin mental de cdigo. Repase los algoritmos que se han inventado para la solucin del problema. Compile la rutina. Esto mostrar todos los errores de sintaxis. Elimine todas las causas que generen advertencias

Reutilizacin de un Mdulo

Generalmente los algoritmos de cada modulo slo se escriben una sola vez La reutilizacin de un mdulo por otros programas implica ahorro de tiempo. Si el mdulo ha sido probado y verificado previamente, se reduce la posibilidad de errores. Fcil compresin del programa completo.

Funcin

En C los mdulos se llaman funciones. (unidad bsica de los programas) Una funcin se define una sola vez pero puede ser utilizada tantas veces como sea necesario a travs de una llamada.

Funcin
Int funcion1 ( arg1, arg2 ...){ sentencias } int funcion2 (arg1, arg2 ...){ sentencias funcion1(a,b...) } int main(){ funcion1(arg1, arg2...); funcion2(arg1, arg2...);

Tipo de Funciones en C

Funciones de biblioteca (mdulos): C tiene su propio conjunto de bibliotecas de funciones bsicas que permiten realizar las operaciones de entrada salida, operaciones lgicas, aritmticas. Funciones definidas (diseadas y codificadas) por el programador para realizar sus propias tareas.

Biblioteca Estndar de C

Contiene una amplia coleccin de funciones para llevar a cabo:


clculos matemticos comunes, manipulaciones con cadenas de caracteres, operaciones de entrada salida, etc

Esta biblioteca de funciones comunes construida una vez, puede ser reutilizada por diferentes programas.

Biblioteca Estndar de C

Entrada salida

Operaciones sobre archivos Entrada Salida

Cadenas de caracteres: string.h Funciones matemticas: math.h Funciones varias: stdlib.h (atoi, atof, calloc, malloc, etc) Fecha y hora: time.h

Ejercicios

Escriba una funcin que devuelva el mayor de dos nmeros que se le pasan como entrada. Escriba una funcin que devuelva el factorial de un nmero.