AnteriorPosterior

5.4. Valor devuelto por una función. El valor void

  Curso: Programación en C# (2015), por Nacho Cabanes

5.4. Valor devuelto por una función. El valor void

Cuando queremos dejar claro que una función no tiene que devolver ningún valor, podemos hacerlo indicando al principio que el tipo de datos va a ser "void" (nulo), como hacíamos hasta ahora con "Main" y como hicimos con nuestra función "Saludar".

Pero eso no es lo que ocurre con las funciones matemáticas que estamos acostumbrados a manejar: sí devuelven un valor, que es el resultado de una operación (por ejemplo, la raíz cuadrada de un número tiene como resultado otro número).

De igual modo, para nosotros también será habitual crear funciones que realicen una serie de cálculos y nos "devuelvan" (return, en inglés) el resultado de esos cálculos, para poderlo usar desde cualquier otra parte de nuestro programa. Por ejemplo, podríamos crear una función para elevar un número entero al cuadrado así:

public static int Cuadrado ( int n ) 
{
    return n*n;
}
 

Podríamos usar el resultado de esa función como si se tratara de un número o de una variable, así:

resultado = Cuadrado( 5 );

En general, en las operaciones matemáticas, no será necesario que el nombre de la función sea un verbo. El programa debería ser suficientemente legible si el nombre expresa qué operación se va a realizar en la función.

Un programa más detallado de ejemplo podría ser:

// Ejemplo_05_04a.cs
// Funcion "Cuadrado"
// Introducción a C#, por Nacho Cabanes
 
using System;
 
public class Ejemplo_05_04a
{
 
    public static int Cuadrado ( int n ) 
    {
        return n*n;
    }
 
    public static void Main()
    {
        int numero;
        int resultado;
 
        numero= 5;
        resultado = Cuadrado(numero);
        Console.WriteLine("El cuadrado del numero {0} es {1}", 
            numero, resultado);
        Console.WriteLine(" y el de 3 es {0}", Cuadrado(3));
    }
 
}
 

Podremos devolver cualquier tipo de datos, no sólo números enteros. Como segundo ejemplo, podemos hacer una función que nos diga cuál es el mayor de dos números reales así:

public static float Mayor ( float n1, float n2 ) 
{
    if (n1 > n2)
        return n1;
    else
        return n2;
}
 

Como se ve en este ejemplo, una función puede tener más de un "return".

En cuanto se alcance un "return", se sale de la función por completo. Eso puede hacer que una función mal diseñada haga que el compilador nos dé un aviso de "código inalcanzable", como en el siguiente ejemplo:

public static string Inalcanzable() 
{
    return "Aquí sí llegamos";
 
    string ejemplo = "Aquí no llegamos";
    return ejemplo;
}
 

En ese caso, el primer return hace que no se llegue pasar por las dos últimas líneas en ningún momento.

Ejercicios propuestos:

Ejercicio propuesto 5.4.1: Crea una función "Cubo" que calcule el cubo de un número real (float) que se indique como parámetro. El resultado deberá ser otro número real. Prueba esta función para calcular el cubo de 3.2 y el de 5.
Ejercicio propuesto 5.4.2: Crea una función "Menor" que calcule el menor de dos números enteros que recibirá como parámetros. El resultado será otro número entero.
Ejercicio propuesto 5.4.3: Crea una función llamada "Signo", que reciba un número real, y devuelva un número entero con el valor: -1 si el número es negativo, 1 si es positivo o 0 si es cero.
Ejercicio propuesto 5.4.4: Crea una función "Inicial", que devuelva la primera letra de una cadena de texto. Prueba esta función para calcular la primera letra de la frase "Hola".
Ejercicio propuesto 5.4.5: Crea una función "UltimaLetra", que devuelva la última letra de una cadena de texto. Prueba esta función para calcular la última letra de la frase "Hola".
Ejercicio propuesto 5.4.6: Crea una función "MostrarPerimSuperfCuadrado" que reciba un número entero y calcule y muestre en pantalla el valor del perímetro y de la superficie de un cuadrado que tenga como lado el número que se ha indicado como parámetro.

Actualizado el: 11-12-2014 10:59

AnteriorPosterior