104 Subalgoritmos
y ← 1/y
fin si
Devolver (y)
fin función
5.3.2 ¿Cómo usar/llamar/invocar una función?
A este tipo de subalgoritmo se lo puede llamar o invocar desde una expresión, desde una
asignación, desde una decisión, o una salida de datos. Debe cumplirse que el valor calculado que
devuelve la función en su nombre sea recibido en un contenedor válido respecto de su tipo de
dato.
Ejemplo 2 : Escribir un algoritmo que utilice la función del ejemplo anterior para calcular las 10
primeras potencias de un valor x de tipo real que primero deberá ser ingresado por teclado.A
continuación se muestran 2 modos diferentes de llamar a la función potencia.
En el Modo 1 la función potencia es empleada directamente dentro de la acción escribir, mientras
que en el Modo 2 el valor devuelto por la función potencia es asignado en la variable real z y es
el valor almacenado en z el que luego se muestra.
Las diferentes formas de invocar/llamar a un subalgoritmo función son las siguientes:
Asignando el resultado de la función a una variable, como es el Modo 2.
Dentro de una acción Escribir, como es el Modo 1.
Como parte de una expresión, por ej. Z← 2*potencia( w, 7)/ 10.
Dentro de una condición, por ej. Repetir mientras potencia(w,n) < 100 hacer .
Veamos otros ejemplos:
Ejemplo 3 : Desarrollar un subalgoritmo que calcule el factorial de un número entero n.
El pseudocódigo de resolución de esta función es el siguiente:
función FACTORIAL ( n:entero):real
variables
entero i, f
inicio
f ← 1
Repetir para i ← 1 hasta abs(n) hacer
5.4 Subalgoritmo subrutina 105
f ← f*i
finpara
Devolver (f)
fin función
Ejemplo 4 : Realizar un subalgoritmo que verifique si una fecha es válida o no.Esta función
de tipo lógica o booleana, necesita recibir 3 parámetros (día, mes y año) y devuelve verdadero o
falso, según si la fecha recibida es válida o no.Debe considerarse que el año puede ser bisiesto.
El pseudocódigo de resolución de esta función es el siguiente:
función Validación-de-fecha (dia, mes, anio:entero): boolean
variables
boolean correcta, bisiesto
inicio
bisiesto ← falso
Si (anio MOD 4= 0) AND (anio MOD 100 <> 0) OR (anio MOD 400= 0)
entonces bisiesto ← verdadero
finsi
correcta ← verdadero
Segúnsea mes hacer
1,3,5,6,8,10,12: Si dd>31 entonces correcta ← falso
finsi
4,7,9,11: Si dia > 30 entonces correcta ← falso
finsi
2: Si bisiesto entonces Si dia > 29 entonces correcta ← f
finsi
sino
Si dia>28 entonces correcta ← falso
finsi
fínsi
valores: correcta ← falso
finsegún
Devolver (correcta)
fin de la función Validación-de-fecha
5.4 Subalgoritmo subrutina
El empleo de los subalgoritmos función está limitado a los casos donde el resultado debe ser
expresado por un único valor. Sin embargo, en ciertas ocasiones se necesita que el subalgoritmo
devuelva más de un valor (por ejemplo raíces de un polinomio) o no devuelva nada (por ejemplo
una impresión), en este caso se introduce una nueva idea de subalgoritmo que se denomina
textbfsubrutina.
En general se piensa en una subrutina cuando la tarea a desarrollar es un proceso que no necesari-
amente tenga un único resultado -aunque no es excluyente- tales como impresión, ordenamiento,
búsqueda de información, dibujo de figuras o interfaces, entre otros.
Una subrutina es un subalgoritmo que recibiendo o no datos permite devolver varios resultados,
un resultado o ninguno