Ejercicio: Describir el ámbito del método

Completado

for bucles, if-else instrucciones y métodos representan diferentes tipos de bloques de código. Cada bloque de código tiene su propio "ámbito". 'Ámbito' es la región de un programa donde se puede acceder a determinados datos. Las variables declaradas dentro de un método, o cualquier bloque de código, solo son accesibles dentro de esa región. A medida que los programas se vuelven más complicados, este patrón ayuda a los programadores a usar constantemente variables con nombre claro y mantener código fácil de leer.

En este ejercicio, obtendrá más información sobre el ámbito del método trabajando con diferentes tipos de métodos y variables.

Ámbito de la variable de prueba

Las instrucciones declaradas fuera de cualquier bloque de código se denominan instrucciones de nivel superior. Las variables declaradas en instrucciones de nivel superior se denominan "variables globales". Las variables globales no están restringidas a ningún ámbito y se pueden usar en cualquier lugar del programa. Las variables globales pueden ser útiles para distintos métodos que necesitan tener acceso a los mismos datos. Sin embargo, es importante prestar atención a los nombres de variable en distintos ámbitos.

  1. En el editor de Visual Studio Code, elimine cualquier código que haya de los ejercicios anteriores.

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

    string[] students = {"Jenna", "Ayesha", "Carlos", "Viktor"};
    
    DisplayStudents(students);
    DisplayStudents(new string[] {"Robert","Vanya"});
    
    void DisplayStudents(string[] students) 
    {
        foreach (string student in students) 
        {
            Console.Write($"{student}, ");
        }
        Console.WriteLine();
    }
    

    En este código, creará una matriz global students y un método DisplayStudents que acepta un parámetro con el mismo nombre.

  3. Guarde y ejecute el código para observar la salida siguiente:

    Jenna, Ayesha, Carlos, Viktor, 
    Robert, Vanya, 
    

    Observe que el parámetro student del método tiene prioridad sobre la matriz global student . Es importante tener claro las variables globales que desea que usen los métodos.

  4. Elimine el código anterior.

  5. Escriba el siguiente código en el editor:

    PrintCircleArea(12);
    
    void PrintCircleArea(int radius)
    {
        double pi = 3.14159;
        double area = pi * (radius * radius);
        Console.WriteLine($"Area = {area}");
    }
    

    Este código calcula y muestra el área de un círculo.

  6. Intente hacer referencia a las variables dentro del método PrintCircleArea actualizando su código de la siguiente manera:

    PrintCircleArea(12);
    double circumference = 2 * pi * radius;
    

    Aparecen mensajes de error que le informan de que los nombres pi y radius no existen en el ámbito actual. Esas variables solo existen dentro del ámbito del PrintCircleArea método.

  7. Elimine el código incorrecto y agregue el código siguiente:

    void PrintCircleCircumference(int radius)
    {
        double pi = 3.14159;
        double circumference = 2 * pi * radius;
        Console.WriteLine($"Circumference = {circumference}");
    }
    

    Dado que la variable pi se establece en el mismo valor fijo y se usa en ambos métodos, este valor es un buen candidato para una variable global. En este ejemplo, radius no es una variable global para que pueda llamar a los métodos con valores diferentes de radius sin actualizar una variable cada vez.

  8. Actualice el código a lo siguiente:

    double pi = 3.14159;
    
    void PrintCircleArea(int radius)
    {
        double area = pi * (radius * radius);
        Console.WriteLine($"Area = {area}");
    }
    
    void PrintCircleCircumference(int radius)
    {
        double circumference = 2 * pi * radius;
        Console.WriteLine($"Circumference = {circumference}");
    }
    

    Ahora ambos métodos pueden hacer referencia al mismo valor de pi sin necesidad de definirlo. Es posible que ya haya adivinado que los métodos pueden llamar a otros métodos. Por lo general, siempre que se defina un método dentro del ámbito de tu programa, se puede llamar desde cualquier parte.

  9. Agregue un nuevo método al código de la siguiente manera:

    double pi = 3.14159;
    PrintCircleInfo(12);
    PrintCircleInfo(24);
    
    void PrintCircleInfo(int radius) 
    {
        Console.WriteLine($"Circle with radius {radius}");
        PrintCircleArea(radius);
        PrintCircleCircumference(radius);
    }
    

    En este código, creará un nuevo método PrintCircleInfo para llamar a los métodos existentes. El valor de radius se transmite también a cada método. La creación de métodos modulares puede ayudar a mantener el código organizado y fácil de leer.

  10. Guarde y ejecute el código para observar la salida siguiente:

    Circle with radius 12
    Area = 452.38896
    Circumference = 75.39815999999999
    Circle with radius 24
    Area = 1809.55584
    Circumference = 150.79631999999998
    

Resumen

Esto es lo que ha aprendido sobre el ámbito del método hasta ahora:

  • Las variables declaradas dentro de un método solo son accesibles para ese método.
  • Las variables declaradas en instrucciones de nivel superior son accesibles en todo el programa.
  • Los métodos no tienen acceso a las variables definidas en métodos diferentes.
  • Los métodos pueden llamar a otros métodos.