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. Z2*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
Created with BuildVu