Övning – Granska startkoden

Slutförd

I det här första steget i utvecklingsprocessen granskar du koden som anges i projektmappen Starter.

Granska innehållet i Program.cs-filen

Filen Program.cs innehåller en preliminär version av programmet som du arbetar med. Koden innehåller funktioner för att generera och visa exempeldata för programmet, och den visar en lista med menyalternativ som definierar programmets huvudfunktioner.

  1. Kontrollera att mappen "GuidedProject" (Guided-project-Work-with-variable-data-CSharp-main) är öppen i Visual Studio Code.

    Enheten "Förbered" (föregående enhet i den här modulen) innehåller ett installationsavsnitt som beskriver processen för att ladda ned den första startpunkten för det guidade projektet och öppna mappen Visual Studio Code. Om det behövs går du tillbaka och följer installationsanvisningarna.

  2. I vyn "EXPLORER" expanderar du mappen "Starter" och väljer sedan "Program.cs".

    När du väljer filen Program.cs öppnas filinnehållet i huvudredigeraren till höger om EXPLORER.

    Om EXPLORER-vyn inte är öppen kan du välja/öppna EXPLORER-vyn från aktivitetsfältet längst till vänster i Visual Studio Code. EXPLORER är den översta ikonen i aktivitetsfältet.

  3. Det tar några minuter att granska de första variabeldeklarationerna överst i filen 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];
    

    Först visas en kommentar (kommentar nr 1) följt av en lista med variabler. Dessa variabler, från animalSpecies till animalNickname, används för att lagra värdena för husdjursegenskaperna i en flerdimensionell strängmatris som heter ourAnimals och som är initierad för att innehålla en sträng med noll längd "". Matrisdeklarationen ourAnimals ligger lite längre ned i koden.

    Nästa grupp av variabler (under kommentar nr 2) är en blandning av string och int variabler som används för att generera exempeldata, läsa användarens indata och fastställa avslutningskriterier för huvudprogrammets loop. Lägg märke till kodraden string? readResult;. Du använder ? tecknet för att transformera en normalt icke-nullbar variabeltyp (int, sträng, bool,...) med stöd för den nullbara typen.

    Anmärkning

    När du läser användarens angivna värden med Console.ReadLine()-metoden är det bäst att aktivera en nullbar strängtyp med string? för att undvika att kodkompilatorn genererar en varning när du bygger projektet.

    Den sista variabeln (under kommentar nr 3) är den tvådimensionella strängmatrisen med namnet ourAnimals. Du initierade antalet rader, som definierats av maxPets, till 8. Antalet egenskaper som du lagrar från början är sex. De sex egenskaperna matchar antalet strängvariabler som du undersökte i exempelkoden, men antalet egenskaper måste expanderas för att lägga till ett fält för suggestedDonation.

  4. Rulla ner Program.cs-filen för att undersöka slingan for som innehåller en switch selektionskonstruktion i kodblocket.

    Kodexemplet är en förkortad version för att spara utrymme.

    // #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. Observera att loopen for använder variabeln maxPets för att upprätta en övre gräns för antalet iterationer efter kommentar nr 4.

  6. Observera också att konstruktionen switch selektivt förgrenar koden så att du kan definiera olika husdjursegenskaper för husdjuren i exempeldatauppsättningen.

    Du använder en switch instruktion för att definiera olika värden för de första fyra iterationerna i loopen for . Efter exempeldatabearbetningen är alla egenskaper tomma, eller nolllängdssträngar.

    Värdena för de djuriska karakteristiska variablerna tilldelas till matrisen ourAnimals längst ned i loopen for .

  7. Rulla längst ned i kodfilen i Visual Studio Code. Granska koden som används för att visa menyalternativen och samla in indata från användarens val.

    Observera följande kod:

    // #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. Ta en minut att granska de två case uttrycken.

    Det finns bara två menyalternativ som fungerar med en begränsad version av programmet. Startprogrammet innehåller endast de funktioner som behövs för att köra och testa funktioner prototyp.

  9. Observera att kodraden readResult = Console.ReadLine(); följs av en kontroll av ett null-värde.

    Koden som använder Console.ReadLine() metoden har värdet inställt på den nullbara strängen readResult för att undvika att kodkompilatorn genererar en varning när du skapar projektet.

Kontrollera ditt arbete

  1. Testa startkodkonsolappen i terminalens kommandoprompt, bygg och kör projektkoden med ett kommando genom att ange: dotnet run.

    Anmärkning

    Terminalprompten måste öppnas i startmappen och TERMINAL bör se ut ungefär som ..\ArrayGuidedProject\starter>

    När koden körs visas två menyalternativ.

    • Ange: 1, för att testa utdata för "Visa all aktuell information om våra husdjur"
    • Ange: 2för att testa platshållarmeddelandet "under konstruktion"
  2. Ange: 1, följt av att trycka på returknappen för att "visa alla husdjur".

  3. Kontrollera att all information om husdjur visas.

    När du observerar data om alla husdjur bör det sista husdjuret som visas matcha följande utdata:

    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. Tryck på Retur för att fortsätta och gå tillbaka till menyn.

  5. I menyprompten anger du 2 följt av att trycka på returknappen.

    Det här valet är en platshållare för funktionen "Visa alla hundar med en angiven egenskap".

  6. Kontrollera att meddelandet UNDER CONSTRUCTION visas för Display all dogs with a specified characteristic val.

    Observera följande utdata:

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. Skriv exitpå appmenyn för att avsluta programmet och stäng sedan terminalpanelen.

    Programmet bör avslutas.

Nu är du redo att börja utveckla de nya funktionerna.