Ejercicio: Describir la sintaxis del tipo de valor devuelto

Completado

Los métodos no solo pueden realizar operaciones, sino que también pueden devolver un valor. Los métodos pueden devolver un valor incluyendo el tipo de valor devuelto en la firma del método. Los métodos pueden devolver cualquier tipo de dato o no devolver nada. El tipo de valor devuelto siempre debe especificarse antes del nombre del método.

Si se usa void como tipo de valor devuelto, el método solo realiza operaciones y no devuelve un valor. Por ejemplo:

void PrintMessage(string message)

Cuando se usa un tipo de datos (como int, string, bool, etc.), el método realiza operaciones y, a continuación, devuelve el tipo especificado tras la finalización. Dentro del método, se usa la palabra clave return para devolver el resultado. En los métodos void, también puede usar la palabra clave return para finalizar el método.

En este ejercicio, obtendrá más información sobre el uso de la palabra clave return.

Preparación del entorno de creación de código

Este módulo incluye actividades prácticas que le guiarán en el proceso de compilación y ejecución de código de demostración. Se recomienda realizar las actividades con Visual Studio Code como entorno de desarrollo. El uso de Visual Studio Code para estas actividades le ayudará a familiarizarse con la escritura y la ejecución de código en un entorno de desarrollo que usan profesionales de todo el mundo.

  1. Abra Visual Studio Code.

    Puede usar el menú Inicio de Windows (o un recurso equivalente en otro sistema operativo) para abrir Visual Studio Code.

  2. En el menú Archivo de Visual Studio Code, seleccione Abrir carpeta.

  3. En el cuadro de diálogo Abrir carpeta , vaya a la carpeta Escritorio de Windows.

    Si tiene una ubicación de carpeta diferente donde guarda los proyectos de código, úsela. Para este ejercicio, lo importante es tener una ubicación fácil de encontrar y recordar.

  4. En el cuadro de diálogo Abrir carpeta , seleccione Seleccionar carpeta.

    Si ve un cuadro de diálogo de seguridad que pregunta si confía en los autores, seleccione .

  5. En el menú Terminal de Visual Studio Code, seleccione Nuevo terminal.

    Observe que el símbolo del sistema del terminal muestra la ruta de acceso de la carpeta actual. Por ejemplo:

    C:\Users\someuser\Desktop>
    

    Nota

    Si trabaja en su propio equipo, en lugar de un entorno aislado o hospedado, y ha realizado otros módulos de Microsoft Learn de esta serie de C#, es posible que ya haya creado una carpeta de proyecto para ejemplos de código. Si este es el caso, puede omitir el siguiente paso, que es para crear una aplicación de consola en la carpeta TestProject.

  6. En el símbolo del sistema del terminal, para crear una nueva aplicación de consola en una carpeta especificada, escriba dotnet new console -o ./CsharpProjects/TestProject y presione Entrar.

    Este comando de la CLI de .NET usa una plantilla de programa de .NET para crear un nuevo proyecto de aplicación de consola de C# en la ubicación de carpeta especificada. El comando crea las carpetas CsharpProjects y TestProject, y usa TestProject como nombre del archivo .csproj.

  7. En el panel EXPLORADOR, expanda la carpeta CsharpProjects .

    Debería ver la carpeta TestProject y dos archivos, un archivo de programa de C# denominado Program.cs y un archivo de proyecto de C# denominado TestProject.csproj.

  8. En el panel EXPLORADOR, para ver el archivo de código en el panel Editor, seleccione Program.cs.

  9. Elimine las líneas de código que contiene.

    Usará este proyecto de consola de C# para crear, compilar y ejecutar ejemplos de código durante este módulo.

  10. Cierre el panel del terminal.

Uso de métodos para calcular el precio total de compra

¡El Centro Comercial Contoso tiene unas excelentes rebajas! Muchos artículos tienen un precio con descuento. Se le da una lista de precios de los artículos y una lista de los descuentos correspondientes. Los descuentos se representan mediante porcentajes, por ejemplo, 50 % = 0,5. Si un cliente gasta más de 30,00 USD, recibirá 5,00 USD de su compra total. En esta tarea, escribirá código para calcular el total del cliente. Comencemos.

  1. En el Editor de Visual Studio Code, escriba el código siguiente:

    double total = 0;
    double minimumSpend = 30.00;
    
    double[] items = {15.97, 3.50, 12.25, 22.99, 10.98};
    double[] discounts = {0.30, 0.00, 0.10, 0.20, 0.50};
    
    Console.WriteLine($"Total: ${total}");
    
    void GetDiscountedPrice(int itemIndex)
    {
        // Calculate the discounted price of the item
    }
    
    void TotalMeetsMinimum()
    {
        // Check if the total meets the minimum
    }
    
    void FormatDecimal(double input)
    {
        // Format the double so only 2 decimal places are displayed
    }
    

    En este paso, configurará las variables que necesitará el programa y creará métodos de marcador de posición que se usarán para realizar las tareas para obtener el precio total de compra.

  2. Cambie el método GetDiscountedPrice para devolver double mediante la actualización del código a lo siguiente:

    double GetDiscountedPrice(int itemIndex)
    {
        // Calculate the discounted price of the item
    }
    

    Observe que este método produce el error de compilación: not all code paths return a value. Un método con un tipo de valor devuelto siempre debe devolver un valor de ese tipo. Vamos a corregir este error.

  3. Actualice el método GetDiscountedPrice con el código siguiente:

    double GetDiscountedPrice(int itemIndex)
    {
        double result = items[itemIndex] * (1 - discounts[itemIndex]);
        return result;
    }
    

    Para devolver un valor de un método, agregue un valor o expresión después de la palabra clave return. El valor devuelto debe coincidir con el tipo de datos especificado en la firma del método.

    En este código, se calcula el precio con descuento del artículo en itemIndex y luego se devuelve el resultado. Sin embargo, la palabra clave return no se limita a devolver variables o valores literales. Vamos a omitir la variable y devolver la expresión en su lugar.

  4. Actualice el método GetDiscountedPrice con el código siguiente:

    double GetDiscountedPrice(int itemIndex)
    {
        return items[itemIndex] * (1 - discounts[itemIndex]);
    }
    

    Dado que el código items[itemIndex] * (1 - discounts[itemIndex]) se evalúa como un valor double, esta instrucción return es válida.

  5. Cambie el método TotalMeetsMinimum para devolver bool mediante la actualización del código a lo siguiente:

    bool TotalMeetsMinimum()
    {
        return total >= minimumSpend;
    }
    

    En este código, se devuelve el resultado de la comparación que se evalúa como bool. La devolución de expresiones desde métodos es una excelente manera de organizar el código y mejorar la legibilidad.

  6. Cambie el método FormatDecimal para devolver string mediante la actualización del código a lo siguiente:

    string FormatDecimal(double input)
    {
        return input.ToString().Substring(0, 5);
    }
    

    Observe que puede llamar a otros métodos en una expresión de instrucción return. Cuando se llama a este método, el control de ejecución evalúa primero input.ToString, después evalúa y devuelve el valor de subcadena. La flexibilidad de la palabra clave return permite crear líneas cortas de código repletas de funcionalidad.

Captura de los valores devueltos

Ahora que los métodos devuelven valores, puede capturar estos valores y usarlos en el resto del código. El uso de resultados devueltos por métodos es una excelente manera de mantener el código estructurado y fácil de leer. ¡Vamos a practicar!

  1. Busque la siguiente línea de código en el programa:

    Console.WriteLine($"Total: ${total}");

  2. Actualice el código a lo siguiente:

    for (int i = 0; i < items.Length; i++)
    {
        total += GetDiscountedPrice(i);
    }
    
    Console.WriteLine($"Total: ${total}");
    

    En este código, se usa el bucle for para obtener la suma de todos los precios de artículos con descuento. Dado que GetDiscountedPrice devuelve un valor double, puede usar el método para inicializar u operar en cualquier otra variable double. En este caso, se usa el resultado de GetDiscountedPrice para incrementar total.

  3. Escriba una nueva línea de código en blanco antes de Console.WriteLine y agregue el código siguiente:

    if (TotalMeetsMinimum())
    {
        total -= 5.00;
    }
    

    Puesto que TotalMeetsMinimum devuelve un valor bool, puede llamar al método dentro de la condición if. También puede usar este método en una expresión ternaria como se indica a continuación:

    total -= TotalMeetsMinimum() ? 5.00 : 0.00;

  4. Use FormatDecimal para dar formato al precio de compra mostrado actualizando el código de la siguiente manera:

    Console.WriteLine($"Total: ${FormatDecimal(total)}");
    

    De forma similar al código anterior, FormatDecimal devuelve un valor string. Por lo tanto, puede llamar al método en lugar de usar una variable de cadena o un literal. En este código, el control de ejecución se pasa a FormatDecimal para evaluar el resultado antes de evaluar Console.WriteLine.

Compruebe su trabajo

En esta tarea, ejecuta la aplicación desde el terminal integrado y comprueba si el código funciona correctamente. Comencemos.

  1. Compare su código con el siguiente para asegurarse de que es correcto:

    double total = 0;
    double minimumSpend = 30.00;
    
    double[] items = {15.97, 3.50, 12.25, 22.99, 10.98};
    double[] discounts = {0.30, 0.00, 0.10, 0.20, 0.50};
    
    for (int i = 0; i < items.Length; i++)
    {
        total += GetDiscountedPrice(i);
    }
    
    total -= TotalMeetsMinimum() ? 5.00 : 0.00;
    
    Console.WriteLine($"Total: ${FormatDecimal(total)}");
    
    double GetDiscountedPrice(int itemIndex)
    {
        return items[itemIndex] * (1 - discounts[itemIndex]);
    }
    
    bool TotalMeetsMinimum()
    {
        return total >= minimumSpend;
    }
    
    string FormatDecimal(double input)
    {
        return input.ToString().Substring(0, 5);
    }
    
  2. Guarde el trabajo con Ctrl + S o con el menú Archivo de Visual Studio Code.

  3. Si es necesario, abra el panel del terminal integrado de Visual Studio Code.

    En el panel EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.

  4. En el símbolo del sistema del terminal, escriba dotnet run.

  5. Compruebe que el código genera la siguiente salida:

    Total: $44.58
    

    Si el código muestra un resultado diferente, debe revisarlo para buscar el error y corregirlo. Vuelva a ejecutar el código para ver si ha corregido el problema. Continúe actualizando y ejecutando el código hasta que genere el resultado esperado.

Resumen

Esto es lo que ha aprendido sobre la palabra clave return hasta ahora:

  • Los métodos pueden devolver un valor especificando el tipo de datos devuelto, o void para ningún valor devuelto.
  • La palabra clave return se puede usar con variables, literales y expresiones.
  • El valor devuelto desde un método debe coincidir con el tipo de valor devuelto especificado.
  • El autor de la llamada del método puede capturar y usar los datos devueltos de los métodos.