Övning – Skapa och testa en loop för att ange nya husdjursdata

Fullbordad

I den här övningen utvecklar du kod som styr inmatning av nya ourAnimals arraydata. Du beräknar de inledande värdena för dina loopkontrollvariabler och konstruerar loopen som samlar in användardefinierade data för djuren. De detaljerade uppgifter som du utför under den här övningen är:

  1. Beräkna petCount: skrivkod som räknar antalet husdjur i matrisen ourAnimals som har tilldelats data.
  2. Villkorsstyrda meddelanden: skriv kod för att visa meddelandeutdata när petCount är mindre än maxPets.
  3. Yttre loop: skapa en loopstruktur som ska användas för att ange nya ourAnimals matrisdata.
  4. Avslutsvillkor: skriv kod som utvärderar avslutsvillkoret för loopen "ange nya vårAnimals-matrisdata".
  5. Verifieringstest: Utför verifieringstester för den kod som du utvecklar i den här övningen.

Viktigt!

Du måste slutföra föregående övning i den här modulen innan du påbörjar den här övningen.

Räkna antalet husdjur i matrisen ourAnimals

I den här uppgiften upprättar du avslutskriterierna för datainmatningsloopen och skapar en for loop som kan användas för att räkna antalet husdjur i ourAnimals som har tilldelats data.

  1. Kontrollera att Visual Studio Code är öppet och att filen Program.cs visas i redigeraren.

  2. Hitta switch(menuSelection)-instruktionen och sedan case "2":-kodraden.

  3. Leta upp instruktionen Console.WriteLine() som visar meddelandet "kommer snart" och ersätt det sedan med en tom kodrad.

  4. Ange följande kod för att deklarera variablerna anotherPet och petCount på den tomma kodraden som du skapade:

    string anotherPet = "y";
    int petCount = 0;
    

    Dessa två variabler styr iterationen av en while loop som används för att ange nya husdjursdata. Du initierar båda variablerna som en del av deklarationen.

    • anotherPet initieras med ett värde på y före början av loopen while . Det får ett användartilldelat värde, antingen y eller n inuti loopen while .

    • petCount representerar antalet djur med tilldelade husdjursegenskaper. Det tilldelas ett beräknat värde utanför loopen while och ökas 1 med inuti loopen while varje gång ett nytt djur läggs till i matrisen ourAnimals .

    Viktigt!

    Omfånget för dina variabler bör alltid vara så smalt som möjligt. I Contoso Pets-programmet kan du ställa in petCount på programnivå i stället för att begränsa scopet till kodblocket case "2":. Med det större omfånget kan du komma åt petCount var som helst i programmet. Om petCount var avgränsad till programnivå kan du tilldela det ett värde när du skapar exempeldata och hantera dess värde programmatiskt genom resten av programmet. När du till exempel hittar ett hem för ett husdjur och tar bort husdjuret från matrisen ourAnimals kan du minska petCount1med . Frågan är på vilken nivå ska du omfångsbegränsa en variabel när du är osäker på om den kommer att användas i andra delar av programmet? I det här fallet är det frestande att sätta petCount på applikationsnivå trots att du inte använder det någon annanstans. Omfånget petCount på programnivå säkerställer trots allt att det är tillgängligt om du bestämmer dig för att använda det någon annanstans. Du kanske även kan omfångsbegränsa andra variabler på programnivå. På så sätt är dina variabler alltid tillgängliga och inom räckhåll. Så varför inte omfångsvariabler på programnivå när du tror att de kan användas senare i programmet? Omfångsvariabler på en högre nivå än nödvändigt kan leda till problem. Utökat omfång blåser upp resurskraven för ditt program och kan utsätta programmet för onödiga säkerhetsrisker. När dina program blir större och mer komplexa behöver de mer resurser. Telefoner och datorer tilldelar minne för dessa resurser när de behöver användas. När dina program blir mer "verkliga" blir de mer tillgängliga. Program är ofta tillgängliga från molnet eller andra program. När dessa problem förvärras lämnas program ofta igång när de inte används. Det är viktigt att hålla ett programs resurskrav under kontroll och säkerhetsavtrycket så litet som möjligt. Även om dagens operativsystem gör ett bra jobb med att hantera resurser och skydda program, är det fortfarande bästa praxis att hålla variablerna begränsade till den nivå där de faktiskt behövs. Om du väljer att använda petCount mer allmänt i appen i din Contoso Pets-app kan du uppdatera koden till en högre omfångsnivå petCount. Kom ihåg att hålla variablerna begränsade så snävt som möjligt och öka bara deras omfång när det blir nödvändigt.

  5. På kodraden under dina variabeldeklarationer anger du följande kod för att skapa en loop som itererar genom djuren i matrisen ourAnimals :

    for (int i = 0; i < maxPets; i++)
    {
    }
    

    Den här koden bör se bekant ut. Du använder den här for loopen varje gång du itererar genom matrisen ourAnimals .

  6. Ange följande kod i kodblocket i loopen for för att kontrollera om data om husdjursegenskaper har tilldelats till ett djur:

    if (ourAnimals[i, 0] != "ID #: ")
    {
    }
    

    Återigen bör den här koden se bekant ut. Du använder den här if instruktionen varje gång du kontrollerar om husdjursegenskaper har tilldelats.

  7. I kodblocket för if som du skapade, för att öka petCount med 1, ange följande kod:

    petCount += 1;
    
  8. Ta en minut att undersöka den slutförda for loopen.

    Den slutförda for loopen bör se ut som följande kod:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            petCount += 1;
        }
    }
    

    Den här koden kommer att loopa genom ourAnimals-arrayen för att kontrollera tilldelade data. När det hittar djur med tilldelade data, ökar det petCounter.

  9. På menyn Visual Studio Code-fil väljer du Spara.

  10. Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.

    Om du vill öppna integrera terminalen från EXPLORER-vyn högerklickar du på Starter och väljer sedan Öppna i integrerad terminal. Du kan också använda menyn Visa eller Terminal för att öppna panelen Integrerad terminal.

    Om du vill skapa programmet anger du dotnet build kommandot från kommandotolken i Terminal.

  11. Åtgärda eventuella build-fel som du ser rapporterade innan du fortsätter.

    Anmärkning

    För tillfället kan du ignorera varningsmeddelandet om att anotherPet har tilldelats men aldrig används. Du lägger till kod som används anotherPet senare i den här övningen.

    Om du har några byggfel bör du komma ihåg att kompileringsfel och varningsmeddelanden talar om för dig vad problemet är och var du hittar det. Kom ihåg att spara ändringarna innan du återskapar koden om du uppdaterar koden.

  12. Stäng terminalpanelen.

Visa meddelandeutdata när petCount är mindre än maxPets

I den här uppgiften kontrollerar du om petCount den är mindre än maxPets och om den är det visar du ett meddelande för användaren.

  1. På en tom kodrad under loopen for som du skapade anger du följande kod för att se om petCount den är mindre än maxPets:

    if (petCount < maxPets)
    {
    }
    
  2. Inuti kodblocket för if-satsen, för att visa ett meddelande till användaren, ange följande kod:

    Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
    

    Programanvändare är på väg att ange husdjursegenskaper. Det här meddelandet ger viktig kontext.

  3. Ta en minut för att granska kodgrenen case "2": i switch instruktionen.

    I det här läget bör din case "2": kodgren se ut som följande kod:

    case "2":
        // Add a new animal friend to the ourAnimals array
        string anotherPet = "y";
        int petCount = 0;
        for (int i = 0; i < maxPets; i++)
        {
            if (ourAnimals[i, 0] != "ID #: ")
            {
                    petCount += 1;
            }
    
        }
    
        if (petCount < maxPets)
        {
            Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
        }
    
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
  4. På menyn Visual Studio Code-fil väljer du Spara.

  5. Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.

  6. Åtgärda eventuella build-fel som du ser rapporterade innan du fortsätter.

    Återigen kan du ignorera varningsmeddelandet om anotherPet tilldelas men aldrig används. I nästa uppgift börjar du skapa loopen while som används för att ange data för ett eller flera husdjur. Uttrycket som du skapar för loopen while kommer att använda anotherPet och det här varningsmeddelandet kommer att försvinna.

    Kom ihåg att varningsmeddelanden är saker som du bör oroa dig för, men de hindrar dig inte från att köra programmet.

  7. I kommandotolken i Terminal anger du kommandot för att köra programmet.

    dotnet run Ange kommandot i terminalkommandot för att köra programkoden.

    Så länge koden inte genererar ett körningsfel bör appens huvudmeny nu visas i terminalpanelen.

  8. I kommandotolken i Terminal anger du 2

    Det här värdet motsvarar din case "2": kodgren.

  9. Kontrollera att följande meddelande visas i terminalen.

    We currently have 4 pets that need homes. We can manage 4 more.
    Press the Enter key to continue.
    

    Om det förväntade meddelandet inte visas granskar du koden för att identifiera och åtgärda problemet. Spara ändringarna, återskapa och kör appen igen. Se till att koden fungerar som förväntat innan du fortsätter.

  10. I kommandotolken i Terminal trycker du på Retur för att fortsätta köra programmet.

  11. Avsluta programmet och stäng sedan terminalpanelen.

Skapa en loopstruktur som ska användas för att ange ny data i vårAnimals-arrayen.

I den här uppgiften skapar du en while loop som fortsätter att iterera så länge som anotherPet är lika y med och petCount är mindre än maxPets.

  1. Skapa en tom kodrad under if (petCount < maxPets) kodblocket i kodredigeraren.

  2. Om du vill börja skapa den nya while loopen anger du följande kod:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. På menyn Visual Studio Code-fil väljer du Spara.

  4. Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.

  5. Observera att du inte längre får varningsmeddelandet om att anotherPet inte används.

    Om några build-fel eller varningar rapporterades kan du åtgärda problemen innan du fortsätter.

Kontrollera avslutsvillkoret för nya husdjursloop

I den här uppgiften uppdaterar du kodblocket while (anotherPet == "y" && petCount < maxPets) . Den nya koden inkrementerar petCount och kontrollerar sedan om petCount är mindre än maxPets. Om petCount är mindre än maxPetsfrågar du användaren om de vill ange information för ett annat husdjur och se till att svaret är antingen y eller n. Efter kodblocket while (anotherPet == "y" && petCount < maxPets) kontrollerar du värdet på petCount. Om petCount är lika med informerar du användaren om att inga fler husdjur kan läggas till maxPets.

Anmärkning

Koden som används för att ange husdjursdata utvecklas i nästa övning. Just nu höjs petCount som om data matades in och sparades i ourAnimals-fältet. På så sätt kan du slutföra utvecklingen av kodlogik som är associerad med loopen while .

  1. Skapa en tom kodrad i kodblocket i loopen while (anotherPet == "y" && petCount < maxPets) som du skapade i föregående uppgift.

  2. För att öka petCount, ange följande kod:

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. Om du vill kontrollera om petCount är mindre än maxPetsanger du följande kod:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. Ange följande kod i kodblocket i -instruktionen if som du skapade för att fråga användaren om de vill lägga till ett annat husdjur:

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. Under meddelandet WriteLine() som du angav, för att läsa användarsvaret och se till att användaren angav "y" eller "n", anger du följande kod:

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. Hitta instruktionen break som separerar case "2"; från case "3"; i din switch-instruktion.

  7. Lägg märke till Console.WriteLine() - och Console.ReadLine() -instruktionerna i slutet av vår case "2"; kod.

    Den här koden visar ett meddelande till användaren och pausar sedan programmet.

  8. Om du vill inkludera Console.WriteLine()- och Console.ReadLine()-satserna i en if-instruktion, uppdaterar du koden på följande sätt:

    
    if (petCount >= maxPets)
    {
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
    break;
    
    case "3":
    

    Värdet för petCount ökas i loopen while . Om petCount är lika med maxPetskan inga fler husdjur läggas till i matrisen ourAnimals . Du bör meddela användaren när detta inträffar.

  9. Om du vill informera användaren om att Contoso Pets har nått sin kapacitet uppdaterar du koden på följande sätt:

    
        if (petCount >= maxPets)
        {
            Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
        }
    
        break;
    
    case "3":
    
  10. Ta en minut för att granska koden i din while loop och användarmeddelandet som du har skapat.

    Din while (anotherPet == "y" && petCount < maxPets) loop och kod som visar användarmeddelandet bör se ut som följande kod:

    while (anotherPet == "y" && petCount < maxPets)
    {
        // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
        petCount = petCount + 1;
    
        // check maxPet limit
        if (petCount < maxPets)
        {
            // another pet?
            Console.WriteLine("Do you want to enter info for another pet (y/n)");
            do
            {
                readResult = Console.ReadLine();
                if (readResult != null)
                {
                    anotherPet = readResult.ToLower();
                }
    
            } while (anotherPet != "y" && anotherPet != "n");
        }
    }
    
    if (petCount >= maxPets)
    {
        Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
  11. På menyn Visual Studio Code-fil väljer du Spara.

  12. Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.

  13. Åtgärda eventuella build-fel eller varningar som du ser rapporterade innan du fortsätter.

Kontrollera ditt arbete

I den här uppgiften kör du vårt program från den integrerade terminalen och kontrollerar att den loopnings- och förgreningslogik som du har skapat fungerar som förväntat.

  1. Om det behövs öppnar du Visual Studio Codes integrerade terminalpanel.

  2. I kommandotolken i Terminal anger du dotnet run

  3. I kommandotolken i Terminal anger du 2

  4. Kontrollera att följande meddelanden visas:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  5. I kommandotolken i Terminal anger du n

  6. Kontrollera att koden avslutar loopen för att ange nya husdjur när du angav "n".

    Om din kodlogik fungerar som förväntat bör huvudmenyn visas i terminalen.

    Om koden inte avslutar loopen när den är förväntad trycker du på Ctrl + C i terminalen för att tvinga körningen att stoppa. Du behöver gå igenom din kod manuellt och spåra värdena för variablerna kopplade till avslutningskriterierna. Uppdatera koden om det behövs för att säkerställa att du avslutar loopen while när användaren anger "n". Spara ändringarna, återskapa programmet och kör verifieringstestet för att komma tillbaka nu.

  7. I kommandotolken i Terminal anger du 2

    Återigen visas följande meddelanden:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  8. I terminalens kommandoprompt skriver du in y

  9. Ta en minut att tänka på hur petCount används i koden.

    Du måste förstå din kodlogik innan du kan verifiera koden.

    I det här fallet förlitar sig kodlogik på relationen mellan petCount och maxPets. Du vet att maxPets tilldelats ett värde på 8, men hur är det med petCount? Följande objekt hjälper dig att utvärdera logiken som du har implementerat:

    • Du vet att det petCount är 4 när du anger den första iterationen av loopen while .

    • Du vet att petCount ökas varje gång loopen while körs.

    • Du vet att det tilldelade petCount värdet och det sätt som petCount ökas påverkar hur data lagras i matrisen ourAnimals . Följande objekt förklarar relationen mellan petCount och de data som lagras i ourAnimals:

      • Programmet lägger till fyra husdjur i matrisen ourAnimals när exempeldata skapas.
      • Programmet lagrar nya data i matrisen ourAnimals när värdet petCount för är 4. Det här är ingen bugg. Koden är vettig när du kommer ihåg att matriselementen är nollbaserade. Innehåller till exempel ourAnimals[0,0] husdjurs-ID:t för djur 1 och ourAnimals[3,0] innehåller husdjurs-ID:t för djur 4. Därför, när petCount är 4, lagrar du data för det femte husdjuret.
      • Programmet lagrar husdjursdata i matrisen innan det ökar petCount.
      • Programmet ökar petCount innan det uppmanar användaren att lägga till ett annat husdjur.
      • När programmet visar kommandot Vill du ange information för ett annat husdjur (y/n) för första gången är petCount redan inställt på 5.
    • Om användaren anger y först Vill du ange information för ett annat husdjur (y/n) fråga, vet du att:

      • Loopen while (anotherPet == "y" && petCount < maxPets) kommer att iterera. Du vet att loopen itererar eftersom anotherPet == "y" och petCount < maxPets.
      • Värdet som tilldelas petCount kommer att ökas (när while-loopen itereras).
      • Värdet som tilldelas petCount kommer att vara 6 (när användaren anger y första gången).

    Tänk på den här analysen av kodlogik när du fortsätter att testa programmet.

  10. Observera att terminalpanelen uppdateras med samma "ett annat husdjur?"-meddelande, men koden visar inte en uppdaterad petCount.

    Terminalpanelen bör nu visa följande utdata:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    
  11. I terminalens kommandoprompt skriver du in y

    När du anger y en andra gång petCount , ökas till 7. Så petCount är fortfarande mindre än maxPets

  12. I terminalens kommandoprompt skriver du in y

    När du anger y en tredje gång petCount ökas till 8. Så petCount är nu lika med maxPets

  13. Kontrollera att koden avslutar loopen while när du anger y tredje gången.

    Terminalpanelen bör nu visa följande utdata:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    We have reached our limit on the number of pets that we can manage.
    Press the Enter key to continue.
    

    Om koden inte avslutar loopen när den är förväntad går du igenom koden manuellt och spårar värdena för variablerna för utgående villkor. Uppdatera koden för att se till att du avslutar loopen när den petCount når ett värde som är lika med maxPets. Fortsätt att svara 'y' tills du vet att petCount är lika med maxPets, som har standardvärdet 8.

  14. I kommandotolken i Terminal trycker du på Retur för att fortsätta köra programmet.

  15. Avsluta programmet och stäng sedan terminalpanelen.