lunes, 20 de abril de 2009

MANEJO DE MODULOS

MANEJO DE MODULOS

Concepto y características

Módulo: Es aquél que está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa.

Un módulo puede ser:

Ø Un programa
Ø Una función
Ø Una subrutina (o procedimiento)

Características de un Módulo

Los módulos deben tener la máxima cohesión y el mínimo acoplamiento. Es decir, deben tener la máxima independencia entre ellos.

La salida del módulo debe ser función de la entrada, pero no de ningún estado interno. En la creación de los módulos deben cumplirse tres aspectos básicos: descripción, rendimiento y diseño.

En la descripción se definen las funciones y objetivos del programa. Para obtener el máximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al máximo todos los recursos de los que dispone. En cuanto al diseño, se debe comprobar la estructura que sigue el módulo, así como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes módulos.

Conforme se extiende el tamaño de los algoritmos, se hace más difícil su revisión, actualización y/o corrección.

Una política común para solventar este problema consiste en la modularización. Esto significa que el algoritmo se fragmenta en partes llamadas módulos. En realidad, es un método de diseño que tiende a dividir el problema, de forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a punto independiente.

Realmente la programación modular es un intento para diseñar programas, de forma tal que cualquier función lógica pueda ser intercambiada sin afectar a otras partes del programa.

Algunas ventajas de utilizar módulos son:

Ø Un programa modular es fácil de mantener y modificar.
Ø Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a punto).
Ø Un programa modular es más fácil de controlar. El desglose de un problema en módulos permite encomendar los módulos más complejos a los programadores más experimentados y los más sencillos a los programadores jóvenes.
Ø Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas

Desventajas del uso de módulos:

Ø No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no tienen claras las ideas de los módulos.
Ø La programación modular requiere más memoria y tiempo de ejecución.

Objetivos de la programación modular:

Ø Disminuir la complejidad.
Ø Aumentar la claridad y fiabilidad.
Ø Disminuir el coste.
Ø Aumentar el control del proyecto.
Ø Facilitar la ampliación del programa mediante nuevos módulos.
Ø Facilitar las modificaciones y correcciones al quedar automáticamente localizadas en un módulo.

CLASIFICACIÓN DE LOS MÓDULOS

Pueden ser de dos tipos:

Ø Funciones
Ø Procedimientos

Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser referenciados (invocadas) en diferentes puntos de un programa, tantas veces como se requiera de modo que se puede evitar la duplicación innecesaria del código.

Funciones

Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado).

Cada función se evoca utilizando su nombre en una expresión con los argumentos actuales o reales encerrados entre paréntesis.

Para hacer una referencia a una función se invoca mediante un nombre y en caso de existir, una lista de parámetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con los de la función que fue definida. La función devuelve un valor único.

Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son definidas por él mismo y permiten su uso en forma idéntica a las funciones estándares. Para coordinar e iniciar el procesamiento, se utiliza un módulo principal que es colocado al final del algoritmo.

Declaración de funciones

función nombre_función (par1, par2,par3,...) : tipo_del_resultado

Inicio
acción1
acción2
:
nombre_función Resultado_Obtenido
Fin


Donde:

par1,par2 ...Lista de parámetros formales o argumentos.
nombre_función Nombre asociado de la función, que será un nombre de identificador válido.
acción1, acción2,.. Instrucciones que constituyen la definición de las función, y que debe contener una acción sola de asignación que asigne un valor al nombre de la función.

Ejemplo:

Obtener el sexto carácter de un nombre y si dicho carácter no existe, se asumirá un asterisco como tal.

Función SEXTO(n:string):carácter
Inicio
si longitud(n) >= 6 entonces
SEXTO Subcadena(n,6,1)
en caso contrario
SEXTO ‘*’
Fin

Invocación a las funciones

Una función puede ser llamada sólo mediante referencia de la forma siguiente:

nombre_función (lista de parámetros actuales)

Donde:

nombre_función Función que llama.
Lista de param. actuales Constantes, variables, expresiones, valores de
funciones, nombres de funciones o procedimientos.

Una llamada a la función implica los siguientes pasos:

Ø A cada parámetro formal se le asigna el valor real de su correspondiente parámetro actual (esta correspondencia se verá más tarde y se denomina llamada por valor).
Ø Se ejecuta el cuerpo de acciones de la función.
Ø Se devuelve el valor de la función y se retorna al punto de llamada.

Ejercicio:

Calcular la potencia de un número.

funcion POTENCIA(x,n :entero): entero
Inicio
y 1
Desde i 1 hasta abs(n) hacer
y y*x
fin Desde
si n < 0 entonces
y 1/y
Fin si
POTENCIA y
Fin

OPERACIÓN DE MÓDULOS Y SUS PARÁMETROS

PASO DE PARAMETROS

Existen diferentes métodos para el paso de parámetros a subprogramas, un mismo programa puede producir diferentes resultados bajo diferentes sistemas de paso de parámetros.

Los parámetros se clasifican de la siguiente manera:

1. Entradas: Las entradas proporcionan valores desde el programa que llama y que se utilizan dentro de un procedimiento. En los subprogramas función las entradas son los argumentos en el sentido tradicional.

2. Salidas: Las salidas producen los resultados del subprograma; de nuevo si se utiliza el caso una función, mientras que con procedimientos pueden calcularse cero, una o varias salidas.

3. Entradas/Salidas: Un solo parámetro se utiliza para mandar argumentos a un programa y para devolver resultados.




Los métodos más empleados para realizar el paso de parámetros son:

Ø Paso por valor (parámetro valor).
Ø Paso por referencia o dirección (parámetro variable).

PASO POR VALOR

Se utiliza en muchos lenguajes de programación (pascal, basic, modula-2, algol, etc), debido a su analogía con los argumentos de una función, donde los valores se proporcionan en el orden de cálculo de resultados. Los parámetros se tratan como variables locales y los valores iniciales se proporcionan copiando los valores de los correspondientes argumentos.

Los parámetros formales (locales a la función), reciben como valores iniciales los valores de los parámetros actuales y con ello se ejecutan las acciones descritas en el subprograma.

La llamada por valor no devuelve información al programa que llama.

PASO POR REFERENCIA

Se utiliza cuando se requiere que ciertos parámetros sirvan como parámetros de salida, es decir, devuelvan los resultados a la unidad o programas que llama. La unidad que llama pasa a la unidad llamada la dirección del parámetro actual (que está en el ámbito de la unidad llamante). Una referencia al correspondiente parámetro formal se tratra como una referncia a la posición de memoria, cuya dirección se ha pasado. Entonces una variable pasada como parámetro real es compartida, es decir, se puede modificar directamente por el subprograma. Si el parámetro actual es una expresión, el subprograma recibe la dirección de la posición temporal que contiene el valor de la expresión.

CRITERIOS DE MODULARIZACIÓN

Criterios de la programación modular

Con independencia de las técnicas, los requisitos que debe cumplir la programación modular son:

1. Establecimiento de un organigrama modular: Se realiza mediante bloques, en el que cada bloque corresponde a un módulo y muestra gráficamente la comunicación entre el módulo principal y los secundarios

2. Descripción del módulo principal: Debe ser claro y conciso, reflejando el punto fundamental del programa.

3. Descripción de los módulos básicos o secundarios: Los módulos básicos deben resolver partes bien definidas del problema. Solo pueden tener un punto de entrada y un punto de salida. Si un módulo es complejo de resolver, conviene se subdivida en submódulos. Ningún módulo puede ser llamado desde distintos puntos del módulo principal.

4. Normas de la programación: Dependerán del análisis de cada problema y de las normas generales o particulares que haya recibido el programador.


Problemas Propuestos

1) Diseñe un algoritmo que llene una matriz de 10 * 10 y determine:
A) El numero mayor almacenado en la matriz
B) El numero mayor almacenado en cada renglón
C) La columna que tuvo la máxima suma
D) El renglón que tuvo la máxima suma
Diseña una función para cada inciso.

2) Diseñe un algoritmo que lea un numero y mediante una función regrese el valor de 1 si el numero es positivo y -1 si es negativo).



3 comentarios:

  1. MUCHA GRACIAS POR TU BLOG ME HA SERVIDO MUCHO PARA MI CLASE DE PROGRAMACON SALUDOS

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Gracias por tu generosidad y apoyo bastante en mi trabajo de guia de manejo de modulos

    ResponderEliminar