Esercizio - Esaminare il codice di avvio

Completato

In questo primo passaggio del processo di sviluppo si esamina il codice fornito nella cartella Progetto iniziale.

Esaminare il contenuto del file Program.cs

Il file Program.cs contiene una versione preliminare dell'applicazione su cui si sta lavorando. Il codice include funzionalità per generare e visualizzare i dati di esempio per l'applicazione e visualizza un elenco di opzioni di menu che definiscono le funzionalità principali dell'applicazione.

  1. Assicurarsi di disporre della cartella "GuidedProject" (Guided-project-Work-with-variable-data-CSharp-main) aperta in Visual Studio Code.

    L'unità "Prepare" (l'unità precedente di questo modulo) include una sezione setup che descrive il processo di download del punto iniziale iniziale per il progetto guidato e l'apertura della cartella di Visual Studio Code. Se necessario, tornare indietro e seguire le istruzioni per la configurazione.

  2. Nella visualizzazione "EXPLORER" espandere la cartella "Starter", quindi selezionare "Program.cs".

    Quando si seleziona il file Program.cs, il contenuto del file viene aperto nell'area editor principale a destra di EXPLORER.

    Se la visualizzazione EXPLORER non è aperta, è possibile selezionare/aprire la visualizzazione EXPLORER dalla barra attività a sinistra di Visual Studio Code. EXPLORER è l'icona più in alto sulla barra delle attività.

  3. Prendersi qualche minuto per esaminare le dichiarazioni iniziali delle variabili nella parte superiore del file Program.cs.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
    // #2 variables that support data entry
    int maxPets = 8;
    string? readResult;
    string menuSelection = "";
    
    // #3 array used to store runtime data, there is no persisted data
    string[,] ourAnimals = new string[maxPets, 6];
    

    Prima di tutto, viene visualizzato un commento (commento n. 1) seguito da un elenco di variabili. Queste variabili, animalSpecies tramite animalNickname, utilizzate per contenere i valori delle caratteristiche dell'animale domestico all'interno di una matrice di stringhe multidimensionali denominata ourAnimalse inizializzate per contenere una stringa ""di lunghezza zero. La ourAnimals dichiarazione di matrice è un po' più in basso nel codice.

    Il gruppo successivo di variabili (sotto commento n. 2) è una combinazione di string variabili e int usate per generare dati di esempio, leggere l'input dell'utente e stabilire i criteri di uscita per il ciclo di programma principale. Si noti la riga di codice string? readResult;. Utilizzi il carattere ? per trasformare un tipo di variabile normalmente non annullabile (int, string, bool,...) per aggiungere il supporto per la versione annullabile.

    Annotazioni

    Quando si leggono i valori immessi dall'utente con il Console.ReadLine() metodo , è consigliabile abilitare una stringa di tipo nullable usando string? per evitare che il compilatore di codice generi un avviso quando si compila il progetto.

    La variabile finale (in commento n. 3) è la matrice di stringhe bidimensionale denominata ourAnimals. Il numero di righe, definito da maxPets, è stato inizializzato su 8. Il numero di caratteristiche archiviate inizialmente è sei. Le sei caratteristiche corrispondono al numero di variabili stringa esaminate nel codice di esempio, ma il numero di caratteristiche deve essere espanso per aggiungere un campo per suggestedDonation.

  4. Scorrere verso il basso il file Program.cs per esaminare il ciclo for contenente un costrutto switch di selezione all'interno del relativo blocco di codice.

    L'esempio di codice è una versione abbreviata per risparmiare spazio.

    // #4 create sample data ourAnimals array entries
    for (int i = 0; i < maxPets; i++)
    {
        switch (i)
        {
            case 0:
                animalSpecies = "dog";
                animalID = "d1";
                animalAge = "2";
                animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
                animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
                animalNickname = "lola";
                break;
    
            case 1:
                animalSpecies = "dog";
                animalID = "d2";
                animalAge = "9";
                animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
                animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
                animalNickname = "gus";
                break;
    
            // case 2: deleted for brevity
            // case 3: deleted for brevity
    
            default:
                animalSpecies = "";
                animalID = "";
                animalAge = "";
                animalPhysicalDescription = "";
                animalPersonalityDescription = "";
                animalNickname = "";
                break;
        }
        ourAnimals[i, 0] = "ID #: " + animalID;
        ourAnimals[i, 1] = "Species: " + animalSpecies;
        ourAnimals[i, 2] = "Age: " + animalAge;
        ourAnimals[i, 3] = "Nickname: " + animalNickname;
        ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
        ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
    }
    
  5. Si noti che il for ciclo usa la maxPets variabile per stabilire un limite superiore sul numero di iterazioni che seguono il commento 4.

  6. Si noti anche che il switch costrutto dirama in modo selettivo il codice in modo da poter definire caratteristiche diverse per gli animali domestici nel set di dati di esempio.

    Si usa un'istruzione switch per definire valori diversi per le prime quattro iterazioni del for ciclo. Dopo l'elaborazione dei dati di esempio, tutte le caratteristiche sono vuote o di lunghezza zero, stringa.

    I valori delle variabili delle caratteristiche degli animali vengono assegnati all'array ourAnimals nella parte inferiore del ciclo for.

  7. Scorrere fino alla fine del file di codice in Visual Studio Code. Esaminare il codice usato per visualizzare le opzioni di menu e acquisire l'input della selezione dell'utente.

    È necessario osservare il codice seguente:

    // #5 display the top-level menu options
    do
    {
        // NOTE: the Console.Clear method is throwing an exception in debug sessions
        Console.Clear();
    
        Console.WriteLine("Welcome to the Contoso PetFriends app. Your main menu options are:");
        Console.WriteLine(" 1. List all of our current pet information");
        Console.WriteLine(" 2. Display all dogs with a specified characteristic");
        Console.WriteLine();
        Console.WriteLine("Enter your selection number (or type Exit to exit the program)");
    
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            menuSelection = readResult.ToLower();
        }
    
        // use switch-case to process the selected menu option
        switch (menuSelection)
        {
            case "1":
                // list all pet info
                for (int i = 0; i < maxPets; i++)
                {
                    if (ourAnimals[i, 0] != "ID #: ")
                    {
                        Console.WriteLine();
                        for (int j = 0; j < 6; j++)
                        {
                            Console.WriteLine(ourAnimals[i, j]);
                        }
                    }
                }
                Console.WriteLine("\n\rPress the Enter key to continue");
                readResult = Console.ReadLine();
                break;
    
            case "2":
                // Display all dogs with a specified characteristic");
                Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");
                Console.WriteLine("Press the Enter key to continue.");
                readResult = Console.ReadLine();
                break;
    
            default:
                break;
        }
    
    } while (menuSelection != "exit");
    
  8. Prenditi un momento per rivedere le due case dichiarazioni.

    Sono disponibili solo due opzioni di menu che riguardano una versione limitata dell'applicazione. L'applicazione iniziale fornisce solo le funzionalità necessarie per l'esecuzione e il test di funzionalità prototipo.

  9. Si noti che la riga di codice è readResult = Console.ReadLine(); seguita da un controllo per un valore Null.

    Il codice che utilizza il metodo Console.ReadLine() ha il valore impostato su una variabile nullable di tipo stringa readResult per evitare che il compilatore di codice generi un avviso durante la compilazione del progetto.

Controlla il tuo lavoro

  1. Testa l'app console del codice di avvio, al prompt dei comandi TERMINAL compila ed esegui il codice del progetto con un comando immettendo: dotnet run.

    Annotazioni

    Il prompt TERMINAL deve essere aperto nella cartella inizio e il TERMINAL dovrebbe essere simile a ..\ArrayGuidedProject\starter>

    Quando viene eseguito il codice, vengono visualizzate due voci di menu.

    • Immettere "1" per testare l'output "Elencare tutte le informazioni sull'animale domestico corrente"
    • Immettere: 2per testare il messaggio segnaposto "in costruzione"
  2. Immettere: 1 e premere poi INVIO per visualizzare tutti gli animali domestici.

  3. Verificare che tutte le informazioni sugli animali domestici siano visualizzate.

    Come si osservano i dati su tutti gli animali domestici, l'ultimo animale domestico visualizzato dovrebbe corrispondere all'output seguente:

    ID #: c4
    Species: cat
    Age: 3
    Nickname: Lion
    Physical description: Medium sized, long hair, yellow, female, about 10 pounds. Uses litter box.
    Personality: A people loving cat that likes to sit on your lap.
    
    Press the Enter key to continue
    
  4. Premere INVIO per continuare e tornare al menu.

  5. Quando richiesto dal menu, immettere 2 e premere il tasto "Invio".

    Questa scelta è un segnaposto per la funzionalità "Visualizzare tutti i cani con una caratteristica specificata".

  6. Verificare che il messaggio UNDER CONSTRUCTION sia visualizzato per la selezione Display all dogs with a specified characteristic.

    e si dovrà osservare l'output seguente:

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. Digitare exit nel menu dell'app per terminare il programma e quindi chiudere il pannello del terminale.

    Il programma deve terminare.

A questo punto è possibile iniziare a sviluppare le nuove funzionalità.