Subalgoritmos o Subprogramas
¿Qué es un Subalgoritmo?
Se llama Subalgoritmo a cada una de las partes de un Algoritmo más general que resuelve cada una de las tareas particulares necesarias para que dicho algoritmo general alcance el
objetivo para el que fue diseñado, es decir resolver un probnlema. Este concepto está vinculado al Diseño
estructurado de algoritmos, en el cual un problema se divide en partes que posteriormente son resueltas por un módulo. Cada módulo coincidirá pon un subalgoritmo.
Cuando hablamos de algoritmos complejos estamos hablando de problemas complejos es decir, problemas que se dividen en problemas mas pequeños (subproblemas). La solucion
de estos subproblemas se realiza mediante los subalgoritmos.
Está demostrado que ante un problema complejo, este se resuelve mejor cuando el mismo se divide en pequeños problemas. Este concepto es aplicable con los algoritmos,
dividiéndolos en subalgoritmos, que en su conjunto logran resolver el algoritmo.
La programación modular consiste en dividir un programa en partes bien diferenciadas, llamadas módulos (o subprogramas, o subalgoritmos o subrutinas), que pueden ser
analizadas y programadas por separado. Existe un algoritmo o programa principal, que cede el control a los módulos, y una vez éstos se han ejecutado, vuelve a tomar el control, continuando la
ejecución del programa por dónde los llamó
El objetivo del uso de subalgoritmos es modularizar un algoritmo, es decir dividir al problema en subpromlemas, resolver el problema con un algoritmo y a los sobproblemas
con subalgoritmos. De esta forma cuando resuelvo un problema me abstraigo de los pequeños detalles que no hacen en sí al problema llamando a acciones (Subalgoritmos) que una vez resuelto el
problema principal tendré que solucionar.
La ventaja más importante de modularizar es que los subprogramas se pueden reutilizar en el mismo algoritmo o en otros.
Veamos el ejemplo planteado al principio
El algoritmo, con el uso de subalgoritmos quedaría escrito de la siguiente forma.
Algoritmo Ejercicio_1
Leer_Y_Validar
X<-Numero
Escribir(‘Ingrese la cantidad de número que quiere ingresar’)
Leer(N)
Para i<-1 hasta N
Lee_y_Validar
Ver_Cooprimos
Si Son_Coopromos entonces
Escribir(‘Los número son cooprimos’)
Si no
Escribir(‘Los número no son cooprimos’)
Fin si
Fin Para
Fin Algoritmo Ejercicio_1
Subalgoritmo Leer_y_Validar
Repetir
Escribir(‘Ingrese un número entre 1 y 10’)
Leer(Numero)
Hasta (Numero<=10) ^ (Numero>=1)
Fin Subalgoritmo Leer_y_Validar
Subalgoritmo Ver_Cooprimos
Son_Cooprimos<-V
Si X<Numero entonces
Min<-X
Si no
Fin si
i<-2
Mientras i<Min ^ Son_Cooprimos Hacer
Si Min mod i = 0 Entonces
Son_Cooprimos<-F
Si no
i<-i+1
fin si
Fin Subalgoritmo Ver_Cooprimos
¿Qué es un procedimiento?
Teniendo en cuenta lo anterior, se definiría como un módulo. Concretamente, como un módulo que no retorna ningún valor, ejecuta lo que tenga que ejecutar y devuelve el
control al programa que lo llamó.
Supongamos que queremos ordenar tres valores numéricos.
En ese caso, el algoritmo sería:
Algoritmo ordenar
Var
a,b,c, aux : entero
Comienzo
Leer a, b, c
si a > b
aux= a
a=b
b= aux
Tres veces se repite el intercambio, con diferentes variables.
Obsérvese que las líneas de código son similares, por lo que se podría escribir un fragmento de código aparte, y utilizarlo con los PARAMETROS adecuados en cada caso
finsi
si b>c
aux= c
c=b
b= aux
si a > b
aux= a
a=b
b= aux
finsi
finsi
mostrar a,b,c
fin
Amerita, entonces, utilizar un procedimiento «intercambio » que me permita intercambiar dos variables cada vez que lo necesite y sin necesidad de reescribir el código cada vez.
Funciones:
Es una que toma una o mas valores llamados argumentos y produce un valor llamado resultado
Ejemplo:
F(x) =x/i+x*x
Para evaluar f debemos darle un valor a x.
Declaración de funciones
Consta de una cabecera , seguido de la palabra (función) y del nombre del argumento de la
función después ira el cuerpo que es una serie de acciones cuya ejecución hará que se asigne un
valor al nombre de la función , esto determina el resultado que ha de devolver al programa.
Ejemplo:
F(x,y)=x/1+x*x
Se define como :
Real función f(x)
Inicio
Devolver (x/(1+x*x))
Fin_funcion