martes, 28 de febrero de 2012

Programación Modular y estructurada

La programación estructurada es un conjunto de técnicas para desarrollar algoritmos fáciles de escribir, verificar, leer y modificar. La programación estructurada utiliza:

Diseño descendente. Consiste en diseñar los algoritmos en etapas, yendo de los conceptos generales a los de detalle. El diseño descendente se verá completado y ampliado con el modular.

Programación modular. El diseño descendente resuelve un problema efectuando descomposiciones en otros problemas más sencillos a través de distintos niveles de refinamiento.

La programación modular consiste en resolver de forma independiente los subproblemas resultantes de una descomposición. La programación modular completa y amplia el diseño descendente como método de solución de problemas y permite proteger la estructura de la información asociada a un subproblema. Cuando se trata de este modo, existirá un algoritmo principal o conductor que transferirá el control a los distintos módulos o subalgoritmos, los cuales, cuando terminen su tarea, devolverán el control al algoritmo que los llamó. Los módulos o subalgoritmos deberán ser pequeños, seguirán todas las reglas de la programación estructurada y podrán ser representados con las herramientas de programación habituales.

Un problema complejo se puede dividir en pequeños subproblemas más sencillos. Estos subproblemas se conocen como “Módulos” y su complementación en un lenguaje se llama subprograma (procedimientos y funciones).

Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma lo utiliza solamente un programa para un propósito especifico.

Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al subprograma, este ejecuta una tarea específica y devuelve el “control” al programa que lo llamo).

Tipos de módulos

- Funciones

- Procedimientos

Función: Una función en matemáticas, es una operación que toma un o mas valores (argumentos) y devuelve un resultado (valor de la función para los argumentos dados). Por ejemplo:

F(X) = X / (1+X2)

Donde:

F ………….. Nombre de la función

X …………. Es el argumento (también conocido como parámetro formal)

Una función desde el punto de vista de la programación, se define como un proceso que recibe valores de entrada (llamados argumentos) y el cual retorna un valor resultado. Las funciones son subprogramas dentro de un programa que se puede invocar (ejecutar), desde cualquier parte del programa, es decir, desde otra función, desde la misma función o desde el programa principal, cuantas veces sea necesario.

Definición de funciones: Una definición de función se presenta de la siguiente manera:

Función nombre_funcion (arg1: tipo,…arg n: tipo) tipo

Variables

Inicio

Bloque de instrucciones

Retornar “valor”

Fin_función

Ejemplo:

Función minimo (a: real; b: real; c: real): real

Variables m: real

Inicio

Si (a<=b & a<=c) entonces

m=a

sino

si (b<=a & b<=c) entonces

m=b

sino

m=c

fin_si

fin_si

retornar m

fin_función

Donde:

Función …………… Es la palabra clave que nos indica una definición de función.

Nombre_funcion ….. Es el identificador con el cual se reconoce a la función en el cuerpo del

Algoritmo principal.

P1,p2,…,pn ……... Es el grupo de parámetros que define a la función.

Llamado a una función

Cuando definimos una función solo le indicamos al algoritmo que esta función existe, pero una definición de función no implica la realización de las instrucciones que la constituyen. Para hacer uso de una función, el algoritmo principal la debe llamar. Por ejemplo:

Función F(X)

Inicio

F = X /(1 + X^2)

Fin

Inicio

Imprimir “Este es el algoritmo principal”

Leer N

R = F(N) llamado de la función

Imprimir “El resultado de la función es:”,R

Fin

Procedimientos

Un procedimiento es una parte del programa que realiza una acción específica basada a menudo en una serie de parámetros o argumentos. El procedimiento se ejecuta simplemente con una sentencia que es igual a su identificador seguido de los parámetros correspondientes, si los tiene, entre paréntesis. A diferencia de las funciones, no tiene sentido situarlos en una expresión porque no devuelven un valor una vez terminada su ejecución.

Un procedimiento se define de la siguiente manera:

Procedimiento nombre (arg 1: tipo 1,….)

Variables

Inicio

Instrucciones

Fin_procedimiento

Los parámetros o argumentos son un mecanismo para pasar datos del programa principal a un procedimiento y viceversa. Los parámetros de la llamada para ejecutar la rutina se llaman parámetros reales mientras que los parámetros en la declaración de la rutina se llaman parámetros formales.

Los parámetros formales por valor permiten la introducción de información en el procedimiento.

Sintaxis: identificador : tipo_dato; o si hay n parámetros por valor del mismo tipo: identificador_1,...,identificador_n : tipo_dato;

Los valores son introducidos en la llamada a la subrutina mediante el parámetro real que puede ser una constante, una variable o una expresión con un valor determinado. Al empezar a ejecutarse la subrutina se reserva espacio en memoria para el parámetro formal al que, en un principio, se le asigna el mismo valor que el parámetro real. Posteriormente los valores que vayan tomando durante la ejecución de la subrutina los parámetros real y formal serán independientes. Una vez terminada de ejecutar la subrutina se deja libre de uso el espacio de memoria correspondiente al parámetro formal.

Estuctura de un algoritmo

Algoritmo

INICIO

const

= valor1.

..................................................

tipo

.

var

< nombreVariable1> [,, ...].

.........................................................................................................

//Los datos han de ser declarados antes de poder ser utilizados.

.

.

........................

llamar_a [(listaParametrosActuales)].

//La llamada a la función ha de realizarse en una expresión, por ejemplo:

escribir( (listaParametrosActuales)).

//Se utilizará siempre la sangría en las estructuras selectivas y repetitivas.

...................................

.

FIN.

procedimiento [(listaParametrosFormales)]

INICIO

[declaraciones locales].

enunciados.

FIN.

función (listaParametrosFormales)

INICIO

//claseDato devuelto por la función es una clase estándar.

[declaraciones locales].

enunciados.

....................

devolver().

FIN.

No hay comentarios:

Publicar un comentario