Övning – Skapa och testa en loop för att ange nya husdjursdata
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:
- Beräkna petCount: skrivkod som räknar antalet husdjur i matrisen
ourAnimalssom har tilldelats data. - Villkorsstyrda meddelanden: skriv kod för att visa meddelandeutdata när
petCountär mindre änmaxPets. - Yttre loop: skapa en loopstruktur som ska användas för att ange nya
ourAnimalsmatrisdata. - Avslutsvillkor: skriv kod som utvärderar avslutsvillkoret för loopen "ange nya vårAnimals-matrisdata".
- 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.
Kontrollera att Visual Studio Code är öppet och att filen Program.cs visas i redigeraren.
Hitta
switch(menuSelection)-instruktionen och sedancase "2":-kodraden.Leta upp instruktionen
Console.WriteLine()som visar meddelandet "kommer snart" och ersätt det sedan med en tom kodrad.Ange följande kod för att deklarera variablerna
anotherPetochpetCountpå den tomma kodraden som du skapade:string anotherPet = "y"; int petCount = 0;Dessa två variabler styr iterationen av en
whileloop som används för att ange nya husdjursdata. Du initierar båda variablerna som en del av deklarationen.anotherPetinitieras med ett värde påyföre början av loopenwhile. Det får ett användartilldelat värde, antingenyellerninuti loopenwhile.petCountrepresenterar antalet djur med tilldelade husdjursegenskaper. Det tilldelas ett beräknat värde utanför loopenwhileoch ökas1med inuti loopenwhilevarje gång ett nytt djur läggs till i matrisenourAnimals.
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
petCountpå programnivå i stället för att begränsa scopet till kodblocketcase "2":. Med det större omfånget kan du komma åtpetCountvar som helst i programmet. OmpetCountvar 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 matrisenourAnimalskan du minskapetCount1med . 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ättapetCountpå applikationsnivå trots att du inte använder det någon annanstans. OmfångetpetCountpå 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ändapetCountmer 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.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
forloopen varje gång du itererar genom matrisenourAnimals.Ange följande kod i kodblocket i loopen
forfö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
ifinstruktionen varje gång du kontrollerar om husdjursegenskaper har tilldelats.I kodblocket för
ifsom du skapade, för att ökapetCountmed 1, ange följande kod:petCount += 1;Ta en minut att undersöka den slutförda
forloopen.Den slutförda
forloopen 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 detpetCounter.På menyn Visual Studio Code-fil väljer du Spara.
Ö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 buildkommandot från kommandotolken i Terminal.Å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
anotherPethar tilldelats men aldrig används. Du lägger till kod som användsanotherPetsenare 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.
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.
På en tom kodrad under loopen
forsom du skapade anger du följande kod för att se ompetCountden är mindre änmaxPets:if (petCount < maxPets) { }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.
Ta en minut för att granska kodgrenen
case "2":iswitchinstruktionen.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;På menyn Visual Studio Code-fil väljer du Spara.
Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.
Åtgärda eventuella build-fel som du ser rapporterade innan du fortsätter.
Återigen kan du ignorera varningsmeddelandet om
anotherPettilldelas men aldrig används. I nästa uppgift börjar du skapa loopenwhilesom används för att ange data för ett eller flera husdjur. Uttrycket som du skapar för loopenwhilekommer att användaanotherPetoch 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.
I kommandotolken i Terminal anger du kommandot för att köra programmet.
dotnet runAnge 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.
I kommandotolken i Terminal anger du 2
Det här värdet motsvarar din
case "2":kodgren.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.
I kommandotolken i Terminal trycker du på Retur för att fortsätta köra programmet.
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.
Skapa en tom kodrad under
if (petCount < maxPets)kodblocket i kodredigeraren.Om du vill börja skapa den nya
whileloopen anger du följande kod:while (anotherPet == "y" && petCount < maxPets) { }På menyn Visual Studio Code-fil väljer du Spara.
Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.
Observera att du inte längre får varningsmeddelandet om att
anotherPetinte 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 .
Skapa en tom kodrad i kodblocket i loopen
while (anotherPet == "y" && petCount < maxPets)som du skapade i föregående uppgift.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;Om du vill kontrollera om
petCountär mindre änmaxPetsanger du följande kod:// check maxPet limit if (petCount < maxPets) { }Ange följande kod i kodblocket i -instruktionen
ifsom 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)");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");Hitta instruktionen
breaksom separerarcase "2";fråncase "3";i dinswitch-instruktion.Lägg märke till
Console.WriteLine()- ochConsole.ReadLine()-instruktionerna i slutet av vårcase "2";kod.Den här koden visar ett meddelande till användaren och pausar sedan programmet.
Om du vill inkludera
Console.WriteLine()- ochConsole.ReadLine()-satserna i enif-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 loopenwhile. OmpetCountär lika medmaxPetskan inga fler husdjur läggas till i matrisenourAnimals. Du bör meddela användaren när detta inträffar.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":Ta en minut för att granska koden i din
whileloop 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(); }På menyn Visual Studio Code-fil väljer du Spara.
Öppna panelen Integrerad terminal i Visual Studio Code och ange kommandot för att skapa programmet.
Å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.
Om det behövs öppnar du Visual Studio Codes integrerade terminalpanel.
I kommandotolken i Terminal anger du dotnet run
I kommandotolken i Terminal anger du 2
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)I kommandotolken i Terminal anger du n
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
whilenär användaren anger "n". Spara ändringarna, återskapa programmet och kör verifieringstestet för att komma tillbaka nu.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)I terminalens kommandoprompt skriver du in y
Ta en minut att tänka på hur
petCountanvä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
petCountochmaxPets. Du vet attmaxPetstilldelats ett värde på8, men hur är det medpetCount? Följande objekt hjälper dig att utvärdera logiken som du har implementerat:Du vet att det
petCountär4när du anger den första iterationen av loopenwhile.Du vet att
petCountökas varje gång loopenwhilekörs.Du vet att det tilldelade
petCountvärdet och det sätt sompetCountökas påverkar hur data lagras i matrisenourAnimals. Följande objekt förklarar relationen mellanpetCountoch de data som lagras iourAnimals:- Programmet lägger till fyra husdjur i matrisen
ourAnimalsnär exempeldata skapas. - Programmet lagrar nya data i matrisen
ourAnimalsnär värdetpetCountför är4. Det här är ingen bugg. Koden är vettig när du kommer ihåg att matriselementen är nollbaserade. Innehåller till exempelourAnimals[0,0]husdjurs-ID:t för djur1ochourAnimals[3,0]innehåller husdjurs-ID:t för djur4. Därför, närpetCountär4, lagrar du data för det femte husdjuret. - Programmet lagrar husdjursdata i matrisen innan det ökar
petCount. - Programmet ökar
petCountinnan 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
petCountredan inställt på5.
- Programmet lägger till fyra husdjur i matrisen
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 eftersomanotherPet == "y"ochpetCount < maxPets. - Värdet som tilldelas
petCountkommer att ökas (närwhile-loopen itereras). - Värdet som tilldelas
petCountkommer att vara6(när användaren anger y första gången).
- Loopen
Tänk på den här analysen av kodlogik när du fortsätter att testa programmet.
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)I terminalens kommandoprompt skriver du in y
När du anger
yen andra gångpetCount, ökas till7. SåpetCountär fortfarande mindre änmaxPetsI terminalens kommandoprompt skriver du in y
När du anger
yen tredje gångpetCountökas till8. SåpetCountär nu lika medmaxPetsKontrollera att koden avslutar loopen
whilenä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
petCountnår ett värde som är lika medmaxPets. Fortsätt att svara 'y' tills du vet attpetCountär lika medmaxPets, som har standardvärdet8.I kommandotolken i Terminal trycker du på Retur för att fortsätta köra programmet.
Avsluta programmet och stäng sedan terminalpanelen.