Esercizio - Comprendere l'ambito del metodo

Completato

for cicli, if-else istruzioni e metodi rappresentano tutti tipi diversi di blocchi di codice. Ogni blocco di codice ha un proprio "ambito". "Ambito" è l'area di un programma in cui determinati dati sono accessibili. Le variabili dichiarate all'interno di un metodo o qualsiasi blocco di codice sono accessibili solo all'interno di tale area. Man mano che i programmi diventano più complessi, questo modello aiuta i programmatori a usare in modo coerente variabili denominate chiaramente e a mantenere facile leggere il codice.

In questo esercizio verranno fornite altre informazioni sull'ambito del metodo usando diversi tipi di metodi e variabili.

Ambito della variabile di test

Le istruzioni dichiarate all'esterno di qualsiasi blocco di codice sono denominate istruzioni di primo livello. Le variabili dichiarate nelle istruzioni di primo livello sono denominate 'variabili globali'. Le variabili globali non sono limitate ad alcun ambito e possono essere usate in qualsiasi punto del programma. Le variabili globali possono essere utili per metodi diversi che devono accedere agli stessi dati. Tuttavia, è importante prestare attenzione ai nomi delle variabili in ambiti diversi.

  1. Nell'editor di Visual Studio Code eliminare qualsiasi codice esistente dagli esercizi precedenti.

  2. Immettere il codice seguente nell'editor di Visual Studio Code:

    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();
    }
    

    In questo codice si crea una matrice globale students e un metodo DisplayStudents che accetta un parametro con lo stesso nome.

  3. Salvare ed eseguire il codice per osservare l'output seguente:

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

    Si noti che il parametro student del metodo ha la precedenza sulla matrice globale student . È importante essere intenzionali sulle variabili globali che si vuole usare i metodi.

  4. Eliminare il codice precedente.

  5. Immettere il codice seguente nell'editor:

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

    Questo codice calcola e visualizza l'area di un cerchio.

  6. Provare a fare riferimento alle variabili all'interno del PrintCircleArea metodo aggiornando il codice come indicato di seguito:

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

    Vengono visualizzati messaggi di errore che informano che i nomi pi e radius non esistono nell'ambito corrente. Tali variabili esistono solo nell'ambito del PrintCircleArea metodo.

  7. Eliminare il codice non corretto e aggiungere il codice seguente:

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

    Poiché la variabile pi è impostata sullo stesso valore fisso e usata in entrambi i metodi, questo valore è un buon candidato per una variabile globale. In questo esempio radius non è una variabile globale in modo che sia possibile chiamare i metodi con valori diversi di radius senza aggiornare una variabile ogni volta.

  8. Aggiornare il codice come segue:

    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}");
    }
    

    Ora entrambi i metodi possono fare riferimento allo stesso valore di pi senza che sia necessario definirlo. È possibile che i metodi possano chiamare altri metodi. In genere, purché un metodo sia definito nell'ambito del programma, può essere chiamato ovunque.

  9. Aggiungere un nuovo metodo al codice come indicato di seguito:

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

    In questo codice viene creato un nuovo metodo PrintCircleInfo per chiamare i metodi esistenti. Il valore di radius viene inoltre passato a ogni metodo. La creazione di metodi modularizzati consente di mantenere il codice organizzato e facile da leggere.

  10. Salvare ed eseguire il codice per osservare l'output seguente:

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

Riepilogo

Ecco quanto appreso finora sull'ambito del metodo:

  • Le variabili dichiarate all'interno di un metodo sono accessibili solo a tale metodo.
  • Le variabili dichiarate nelle istruzioni di primo livello sono accessibili in tutto il programma.
  • I metodi non hanno accesso alle variabili definite all'interno di metodi diversi.
  • I metodi possono chiamare altri metodi.