12.213 cursos gratis
8.309.043 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Aprende a programar

Autor: Maria Elena de Lobos
Curso:
9,45/10 (38 opiniones) |131084 alumnos|Fecha publicación: 08/03/2005
Envía un mensaje al autor

Capítulo 20:

 Modularidad. Procedimientos y funciones.

Habíamos visto la programación estructurada que permite la escritura de programas fáciles de leer y modificar. En esta programación, el flujo lógico se gobierna por las estructuras de control básicas vista hasta hoy: secuenciales, repetitivas y de selección. La programación modular permite la descomposición de un problema en un conjunto de subproblemas independientes entre sí, más sencillos de resolver y que pueden ser tratados separadamente unos de otros. Gracias a la modularidad se pueden probar los subprogramas o módulos de manera independiente, depurándose sus errores antes de su inclusión en el programa principal y almacenarse para su posterior utilización cuantas veces se precise.

Módulo

Uno de los elementos principales de programación utilizados en la representación de cada módulo es la subrutina. Una subrutina es un conjunto de instrucciones de cómputo que realizan una tarea. Un programa principal llama a estos módulos a medida que se necesitan. Un módulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea específica y puede ser lamado o invocado desde el algoritmo principal cuando sea necesario. os módulos son independientes en el sentido de que ningún módulo puede tener acceso irecto a cualquier otro módulo, con excepción del módulo al que llama y sus propios submódulos. Sin embargo, los resultados producidos por un módulo pueden ser utilizados por cualquier otro módulo cuando se transfiera a ellos el control. Los módulos tienen una entrada y una salida. Se pueden tomar decisiones dentro de un módulo que tenga repercusión en todo el flujo, pero el salto debe ser únicamente hacia el programa principal. Al descomponer un programa en módulos independientes más simples se conoce también como el método de "Divide y vencerás".

¿Cuándo es útil la modularización?

Este enfoque de segmentación o modularización es útil en dos casos:

1. Cuando existe un grupo de instrucciones o una tarea específica que deba ejecutarse en más de una ocasión.

2. Cuando un problema es complejo o extenso, la solución se divide o segmenta en módulos que ejecutan partes o tareas específicas.

Ventajas de la Programación Modular:

Como los módulos son independientes, el desarrollo de un programa se puede efectuar con mayor facilidad, ya que cada módulo se puede crear aisladamente y varios programadores podrán trabajar simultáneamente en la confección de un algoritmo, repartiéndose las distintas partes del mismo. Se podrá modificar un módulo sin afectar a los demás Las tareas, subalgoritmos, sólo se escribirán una vez, aunque se necesiten en distintas ocasiones a lo largo del algoritmo. El uso de módulos facilita la proyección y la comprensión de la lógica subyacente para el programador y el usuario. Aumenta la facilidad de depuración y búsqueda de errores en un programa ya que éstos se pueden aislar fácilmente. El mantenimiento y la modificación de la programación se facilitan. Los módulos reciben diferentes nombres:

- Funciones en C, C++

- Subrutinas en Basic

- Procedimientos y funciones en Pascal

- Subrutinas en Fortran y

- Secciones en Cobol.

Desarrollar programas de forma modular:

Significa que pueden identificarse las principales tareas a realizar por el programa y que se pueden diseñar y probar procedimientos individuales para estas tareas. Por ejemplo: ¿Qué transacciones se le hacen a una cuenta de ahorros?

Transacciones:

- depósito (cheque y efectivo)

- intereses

- retiro

- estado de cuenta

- cambio de libreta

Tiempo de vida de los datos

Según el lugar donde son declaradas puede haber dos tipos de variables.

Globales: las variables permanecen activas durante todo el programa. Se crean al iniciarse éste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en cualquier procedimiento o función.

Locales: las variables son creadas cuando el programa llega a la función o procedimiento en la que están definidas. Al finalizar la función o el procedimiento, desaparecen de la memoria. Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecerá sobre la global dentro del módulo en que ha sido declarada. Dos variables locales pueden tener el mismo nombre siempre que estén declaradas en funciones o procedimientos diferentes.

Parámetros Formales

Es un tipo especial de variables en un procedimiento a los que se pueden pasar valores desde el exterior del procedimiento. Se declaran en la cabecera del procedimiento.

Ejemplos:

1. Uso de variables globales en procedimientos o funciones.

Algoritmo global var x:entero

Inicio

         x ¬0

          cambiar

            escribir (x)

fin

Módulo cambiar

inicio

            x ¬1

fin

La variable X está definida como global, por lo tanto la salida será 1.

2. Uso de variables locales.

Algoritmo local

var x:entero

Inicio

        x ¬0

         cambiar

           escribir (x)

fin

Módulo cambiar

var x:entero

inicio

            x ¬1

fin

Como x es local, no tiene efecto en el programa, por lo tanto la salida será 0.

3. Variables locales y globales.

Programa en Borland C++

/* Variables globales y locales. */

#include stdio.h

int num1=1;

main() /* Escribe dos cifras */

{

            int num2=10;

            printf("%d\n",num1);

            printf("%d\n",num2);

}

Parámetros por Valor

Son los parámetros que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envío de su valor, después de lo cual ya no hay relación. Lo que le sucede a la variable local no afectará a la global. Cuando un parámetro actual se pasa por valor, el subprograma hace una copia del valor de éste en una posición de memoria idéntica en tamaño pero distinta en ubicación a la del parámetro actual y la asigna al parámetro formal correspondiente. Como el subprograma trabaja a partir de sus parámetros formales, si durante la ejecución se modifica el valor de un parámetro formal correspondiente a un paso por valor, el contenido de la posición de memoria del parámetro actual no se verá alterado.

Ejemplo:

Algoritmo parámetro valor

var x: entero

Inicio

          x = 0

           cambiar(x)

             escribir(X)

Fin

Módulo cambiar (y:entero)

inicio

         y ¬1

fin

Salida 0

Parámetros por Variable

Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a través de su contenido; al establecerse dicha conexión las variables se convierten en sinónimos, lo que afecte a la variable local le sucederá a la

variable global.

Ejemplo:

Algoritmo parámetro variable

var x:entero

Inicio

         x ¬0

           cambiar (x)

               escribir (x)

Fin

Módulo cambiar (var y:entero)

inicio

    y ¬1

fin

Salida: x =1

PROCEDIMIENTOS

Son subprogramas, es decir, módulos que forman parte de un programa y realizan una tarea específica. Un procedimiento puede tener sus propias variables que se declaran en la sección var del propio procedimiento. Estas se llaman variables locales. La casilla de memoria para estas variables se crea cada vez que el procedimiento es llamado y se borran al salir del mismo. Asi, las variables locales para un procedimiento sólo se pueden usar en el cuerpo del procedimiento y no en el cuerpo principal del programa.

FUNCIONES

La función es una estructura autónoma similar a los módulos. La diferencia radica en que la función se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. La función se relaciona especificando su nombre en una expresión, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estándares y definidas por el usuario.

- Estándar: Son funciones proporcionadas por cualquier lenguaje de programación de alto nivel, y se dividen en aritméticas y alfabéticas.

- Definidas por el usuario: son funciones que puede definirlas el programador con el propósito de ejecutar alguna función específica, y que por lo general se usan cuando se trata de hacer algún cálculo que será requerido en varias ocasiones en la parte principal del algoritmo.

Ejemplos:

Función factorial (n:entero):entero

var i,factorial:entero

inicio

              si n <=1 entonces

               factorial <-- 1

sino

              factorial <-- 1

desde i = 1 hasta n hacer

              factorial <-- factorial * 1

          fin_desde

       fin_si

fin

Evaluar la función f = x! / (y!(x-y)!)

Algoritmo hallarf

var x,y:entero

f:real

inicio

     leer (x,y)

     f <-- factorial (x)/(factorial (y)* factorial (x-y))

     escribir ("El valor de f es:", f)

fin

Semejanzas entre Procedimientos y Funciones.

- La definición de ambos aparece en la sección de subprogramas de la parte de declaraciones de un programa y en ambos casos consiste en una cabecera, una parte de declaraciones una parte de instrucciones.

- Ambos son unidades de programa independientes. Los parámetros, constantes y variables declarados en una función o procedimiento son locales a la función o al procedimiento, solamente son accesibles dentro del subprograma.

- Cuando se llama a una función o a un procedimiento, el número de los parámetros reales debe ser el mismo que el número de los parámetros formales y los tipos de los parámetros reales deben coincidir con los tipos de los correspondientes parámetros formales, con una excepción: se puede asociar un parámetro real de tipo entero con un parámetro formal por valor de tipo real.

Diferencias entre Procedimientos y Funciones.

- Mientras que a un procedimiento se le llama mediante una instrucción de llamada a procedimiento, a una función se la llama usando su nombre en una expresión.

- Puesto que se debe asociar un valor al número de una función, también se le debe asociar un tipo. Por tanto, la cabecera de una función debe incluir un identificador de tipo  que especifique el tipo del resultado. Sin embargo, no se asocia ningún valor con el nombre de un procedimiento y, por tanto, tampoco ningún tipo.

- Las funciones normalmente devuelven un único valor a la unidad de programa que la llama. Los procedimientos suelen devolver más de un valor, o pueden no devolver ninguno si solamente realizan alguna tarea, como una operación de salida.

- En los procedimientos, los valores se devuelven a través de parámetros por variable, pero el valor de una función se devuelve mediante la asignación al nombre de la función de dicho valor en la parte de instrucciones de la definición de la función.

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a Aprende a programar


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Cómo programar aplicaciones Cliente/Servidor en Visual Basic
Visual Basic nació como un lenguaje sencillo de programación, ideal para iniciarse... [17/09/04]
14.881  
2. Aprende Photodraw
PhotoDraw es una herramienta gráfica que permite trabajar con gráficos e imágenes... [21/05/02]
27.207  
3. Aprende Word
Este curso está destinado a los principiantes. A todos aquellos que necesitan una... [27/09/05]
5.184  

El blog de mailxmail|¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail


¿Recibir novedades de Programación? ¡No te costará nada!