Existen varias ventajas de "romper" un programa en subrutinas:
*Reducción de código duplicado.
*Permite el reusó de código en múltiples programas.
*Descomposición de problemas complejos en simples piezas (lo que aumenta la mantenibilidad y extensibilidad).
Las subrutinas sirven para estructurar o dividir el programa en bloques más pequeños y, por tanto, más fáciles de gestionar. Esta ventaja se puede aprovechar a la hora de realizar tareas de comprobación y mantenimiento del programa.
Cuando el programa principal llama a una subrutina para que ésta se ejecute, la subrutina procesa un programa hasta el final. El sistema retorna luego el control al segmento del programa principal desde donde se llamo a la subrutina.
Para utilizar una subrutina en el programa es preciso realizar tres tareas:
*Crear subrutina
*Definir los parámetros en la tabla de variables locales de la subrutina.
*Llamar a la subrutina desde la unidad de organización del programa en cuestión, es decir, desde el programa principal o desde una subrutina diferente.
En las subrutinas se han de tener en cuenta las siguientes consideraciones:
*Realizan funciones concretas y no son operativas por si mismas.
*Siempre están ligadas a un programa principal o a otras subrutinas.
*Permiten la división del programa en bloques por lo que realizan la función de estructuración. Proporcionando mayor visibilidad y comprensión del mismo.
COMUNICACIÓN ENTRE SUBPROGRAMAS O SUBRUTINAS
Los subprogramas no operan aisladamente, en la mayoría de los casos dependen de lo que produzcan otros subprogramas. Para que un subprograma reciba de o envíe datos a otros subprogramas es necesario que el subprograma tenga parámetros o instrucción de retorno. Los parámetros permiten a un subprograma comunicarse con el mundo externo, para recibir datos del exterior o enviar información al exterior. No todos los subprogramas tienen parámetros para recibir datos del exterior o parámetros para enviar información al exterior.
A manera de un pequeño ejemplo.
Cuando ya se tiene un programa que resuelva un problema concreto, como ya se había mencionado, se puede usar tantas veces como queramos sin tener que reescribirlo.
# include ……
// programa principal
Int main (int argc, char** argv)
{
….
}
// Subprogramas
… // funciones y procedimientos
Importante: los subprogramas solo se ejecutan cuando son invocados desde el principal programa o desde otros subprogramas.
Para crear un subprograma o subrutina, lo primero que se tiene que hacer es escribir su cabecera, que incluye el nombre del subprograma y su lista de parámetros:
Float sqrt (float x)
….
Además de la cabecera, tendremos que escribir el cuerpo de la función:
….
// Calculamos la raíz cuadrada
…..
// valor devuelto por la función return…..
Una vez que se ha completado la implementación del subprograma, podemos usarlo cuando lo necesitemos:
a = sqrt (4.0)
b = 2*sqrt
c =1 / sqrt (b)
x = ( -b + sqrt (b*b - 4 *a*c)) / ( 2 *a)
c = sqrt ( 2.33 t sqrt ( a*b) / 34.12)
Todos los cambios que se hagan dentro de la subrutina para modificar un parámetro pasado por referencia se reflejaran en el parámetro actual correspondiente.
BIBLIOGRAFIA:
http://www.alegsa.com.ar/Dic/subrutina.php
http://galia.fc.uaslp.mx/~cantocar/automatas/PRESENTACIONES_PLC_PDF_S/19_SUBRUTINAS.PDF
http://www.alciro.org/alciro/microcontroladores-8051_24/subrutina-subprograma_357.htm
Esté link, los considero importante
http://elvex.ugr.es/decsai/c/apuntes/subprogramas.pdf
Espero que les haya aportado un poco de información útil para aclarar algunas dudas.
Ojo con las mayúsculas (Float no, sino float). Te pongo +3.
ReplyDelete