Cvičení – sestavení a otestování smyčky pro zadávání nových dat domácích mazlíčků
V tomto cvičení vytvoříte kód, který ovládá vstup nových dat v poli ourAnimals. Vypočítáte počáteční hodnoty řídicích proměnných smyčky a vytvoříte smyčku, která shromažďuje uživatelsky zadaná data pro zvířata. Podrobné úkoly, které jste dokončili během tohoto cvičení, jsou:
- Výpočet petCount: napište kód, který spočítá počet domácích zvířat v
ourAnimalspoli, které mají přiřazená data. - Podmíněné zprávy: Napsání kódu pro zobrazení výstupu zprávy, pokud
petCountje menší nežmaxPets. - Vnější cyklus: Postavte strukturu cyklu, která se použije pro zadávání nových
ourAnimalsdat pole. - Kritéria ukončení: Napište kód, který vyhodnocuje podmínku ukončení pro cyklus smyčky "zadejte data nového pole ourAnimals".
- Ověřovací test: Proveďte ověřovací testy pro kód, který vyvíjíte v tomto cvičení.
Důležité
Před zahájením tohoto cvičení je nutné dokončit předchozí cvičení v tomto modulu.
Spočítejte počet mazlíčků v poli „ourAnimals“.
V této úloze vytvoříte výstupní kritéria pro smyčku zadávání dat a vytvoříte smyčku for , která se dá použít k počítání počtu domácích zvířat v ourAnimals přiřazených datech.
Ujistěte se, že je visual Studio Code otevřený a že je váš soubor Program.cs viditelný v Editoru.
Vyhledejte příkaz
switch(menuSelection)a najděte řádek kóducase "2":.Console.WriteLine()Vyhledejte příkaz, který zobrazí zprávu "připravujeme", a pak ji nahraďte prázdným řádkem kódu.Na prázdný řádek kódu, který jste vytvořili, deklarujte
anotherPetapetCountproměnné zadejte následující kód:string anotherPet = "y"; int petCount = 0;Tyto dvě proměnné řídí iteraci
whilesmyčky, která se používá k zadávání nových dat domácích mazlíčků. Obě proměnné inicializujete jako součást deklarace.anotherPetinicializuje se hodnotouypřed začátkem smyčkywhile. Obdrží uživatelem přiřazenou hodnotu, buďynebon, uvnitř smyčkywhile.petCountpředstavuje počet zvířat s přiřazenými vlastnostmi domácího mazlíčka. Bude mu přiřazena vypočítaná hodnota mimo vašiwhilesmyčku a uvnitř1smyčky se zvýší owhilepři každém přidání nového zvířete do poleourAnimals.
Důležité
Rozsah proměnných by měl být vždy co nejužší. V aplikaci Contoso Pets byste mohli vymezit
petCountna úrovni aplikace, nikoli v rámci blokucase "2":kódu. Větší rozsah by vám umožnil přístuppetCountodkudkoli v aplikaci. PokudpetCountbyl obor vymezen na úrovni aplikace, můžete ji přiřadit při vytváření ukázkových dat a programově spravovat její hodnotu ve zbývající části aplikace. Když například najdete domov pro domácího mazlíčka a odeberete hoourAnimalsz pole, můžete snížitpetCounto1. Otázka je, na jaké úrovni byste měli nastavit rozsah proměnné, pokud si nejste jisti, jestli se použije v jiných částech vaší aplikace? V tomto případě je lákavé nastavit oborpetCountna úrovni aplikace, i když ho nepoužíváte nikde jinde. Určení rozsahupetCountna úrovni aplikace zajistí, že je k dispozici, pokud se rozhodnete ho používat jinde. Možná byste mohli také nastavit rozsah dalších proměnných na úrovni aplikace. Díky tomu jsou proměnné vždy na dosah a jsou přístupné. Proč tedy neurčit obor proměnných na úrovni aplikace, když si myslíte, že by se mohly použít později v aplikaci? Vymezení rozsahů proměnných na vyšší úrovni, než je nutné, může vést k problémům. Zvýšený obor nafoukne požadavky na prostředky vaší aplikace a může vystavit aplikaci zbytečným rizikům zabezpečení. S rostoucím a složitějším růstem vašich aplikací vyžadují více prostředků. Telefony a počítače přidělují těmto prostředkům paměť, když jsou v rozsahu. S tím, jak se vaše aplikace stanou "reálným světem", budou přístupnější. Aplikace jsou často přístupné z cloudu nebo jiných aplikací. Souhrnně s těmito problémy zůstávají aplikace často spuštěné, i když se nepoužívají. Je důležité udržovat požadavky na prostředky aplikace pod kontrolou a co nejmenší nároky na zabezpečení. I když dnešní operační systémy dělají skvělou úlohu při správě prostředků a zabezpečení aplikací, je stále osvědčeným postupem zachovat rozsah proměnných na úrovni, kde jsou skutečně potřeba. Pokud se v aplikaci Contoso Pets rozhodnete používatpetCountobecněji v rámci aplikace, můžete kód aktualizovat tak, aby byl oborpetCountna vyšší úrovni. Nezapomeňte zachovat rozsah proměnných co nejužším způsobem a zvýšit jejich rozsah pouze v případě potřeby.Pod řádek deklarací proměnných zadejte následující kód pro vytvoření smyčky, která prochází zvířata v poli
ourAnimals:for (int i = 0; i < maxPets; i++) { }Tento kód by měl vypadat dobře. Tuto
forsmyčku použijete při každé iteraci poleourAnimals.Uvnitř bloku kódu naší
forsmyčky, pro zjištění, zda byla data charakteristik domácích mazlíčků přiřazena zvířeti, zadejte následující kód:if (ourAnimals[i, 0] != "ID #: ") { }Tento kód by měl znovu vypadat povědomě. Tento
ifpříkaz použijete pokaždé, když zkontrolujete, jestli byly přiřazeny vlastnosti domácích mazlíčků.Do bloku
ifkódu, který jste vytvořili, zadejte následující kód, který chcete zvýšitpetCounto 1:petCount += 1;Udělejte si chvilku na prozkoumání dokončené
forsmyčky.Dokončená
forsmyčka by měla vypadat jako následující kód:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { petCount += 1; } }Tento kód bude procházet pole
ourAnimalsa kontrolovat přiřazení dat. Když najde zvíře s přiřazenými daty, se zvýšípetCounter.V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.
Chcete-li otevřít terminál integrace ze zobrazení EXPLORER, klepněte pravým tlačítkem myši na Starter a pak vyberte Otevřít v integrovaném terminálu. K otevření panelu Integrovaný terminál můžete použít také nabídku Zobrazení nebo Terminál .
Chcete-li vytvořit program, zadejte
dotnet buildpříkaz z příkazového řádku terminálu.Opravte všechny chyby sestavení, které se zobrazí před pokračováním.
Poznámka:
Prozatím můžete ignorovat varovnou zprávu o tom, že
anotherPetbyl přiřazen, ale nikdy použit. Přidáte kód, který se použijeanotherPetpozději v tomto cvičení.Pokud máte nějaké chyby při sestavení, mějte na paměti, že zprávy o chybách sestavení a upozornění vám sdělí, jaký je problém a kde se nachází. Pokud kód aktualizujete, nezapomeňte změny před opětovně sestavením uložit.
Zavřete panel Terminálu.
Zobrazení výstupu zprávy, když je petCount menší než maxPets
V tomto úkolu zkontrolujete, jestli petCount je menší než maxPets a jestli je, zobrazí se zpráva pro uživatele.
Na prázdný řádek kódu pod smyčkou
for, kterou jste vytvořili, chcete-li zjistit, zdapetCountje menší nežmaxPets, zadejte následující kód:if (petCount < maxPets) { }Pokud chcete uživateli zobrazit zprávu, zadejte do bloku
ifkódu tohoto příkazu následující kód:Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");Uživatelé aplikace se chystá zadat charakteristiky domácích mazlíčků. Tato zpráva poskytuje důležitý kontext.
Věnujte chvíli prohlédnutí větve kódu vašeho
case "2":příkazuswitch.V tomto okamžiku by vaše
case "2":větev kódu měla vypadat jako následující kód: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;V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.
Opravte všechny chyby sestavení, které se zobrazí před pokračováním.
Můžete znovu ignorovat varovnou zprávu o
anotherPetpřiřazeném, ale nikdy nepoužitém. V dalším úkolu začnete vytvářet smyčkuwhile, která se použije k zadání dat pro jednoho nebo více domácích mazlíčků. Výraz, který vytvoříte pro smyčkuwhile, použijeanotherPeta toto varování zmizí.Nezapomeňte, že upozornění jsou věci, které by vás měly znepokojovat, ale neznemožní vám spuštění programu.
Na příkazovém řádku terminálu zadejte příkaz pro spuštění programu.
dotnet runZadáním příkazu na příkazovém řádku terminálu spusťte kód programu.Pokud váš kód negeneruje chybu za běhu, měla by se teď hlavní nabídka aplikace zobrazit na panelu Terminálu.
Na příkazovém řádku terminálu zadejte 2.
Tato hodnota odpovídá vaší
case "2":větvi kódu.Ověřte, že se v terminálu zobrazí následující zpráva.
We currently have 4 pets that need homes. We can manage 4 more. Press the Enter key to continue.Pokud se očekávaná zpráva nezobrazí, zkontrolujte kód a zjistěte a opravte problém. Uložte změny, znovu sestavte a spusťte aplikaci. Než budete pokračovat, ujistěte se, že kód funguje podle očekávání.
Na příkazovém řádku terminálu pokračujte ve spuštění aplikace stisknutím klávesy Enter.
Ukončete aplikaci a zavřete panel Terminálu.
Vytvořte smyčkovou strukturu, která se použije pro zadávání nových dat pole našeZvířata.
V této úloze vytvoříte smyčku while , která bude pokračovat iterací, pokud anotherPet je rovna y a petCount je menší než maxPets.
V Editoru kódu vytvořte pod blokem
if (petCount < maxPets)kódu prázdný řádek kódu.Pokud chcete zahájit proces vytváření nové
whilesmyčky, zadejte následující kód:while (anotherPet == "y" && petCount < maxPets) { }V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.
Všimněte si, že už nezobrazuje zprávu Upozornění o tom, že
anotherPetnení použito.Pokud byly nahlášeny nějaké chyby sestavení nebo upozornění, před pokračováním opravte problémy.
Kontrola stavu ukončení u nové smyčky domácích zvířat
V tomto úkolu aktualizujete while (anotherPet == "y" && petCount < maxPets) blok kódu. Nový kód inkrementuje petCount a pak zkontroluje, zda je petCount menší než maxPets. Pokud petCount je menší než maxPets, požádejte uživatele, jestli chce zadat informace pro jiného domácího mazlíčka, a ujistěte se, že odpověď je buď y nebo n. Za blokem kódu while (anotherPet == "y" && petCount < maxPets) zkontrolujete hodnotu petCount. Pokud petCount je rovno maxPets, informujete uživatele, že žádné další domácí zvířata nelze přidat.
Poznámka:
Kód použitý k zadávání dat domácích mazlíčků se vyvíjí v dalším cvičení. Prozatím se petCount inkrementuje, jako by byla data zadávána a ukládána do pole ourAnimals. To vám umožní dokončit vývoj logiky kódu přidružené ke while smyčce.
Vytvořte prázdný řádek kódu uvnitř bloku
while (anotherPet == "y" && petCount < maxPets)kódu smyčky, kterou jste vytvořili v předchozím úkolu.Pro zvýšení
petCount, zadejte následující kód:// increment petCount (the array is zero-based, so we increment the counter after adding to the array) petCount = petCount + 1;Pokud chcete zkontrolovat, jestli
petCountje menší nežmaxPets, zadejte následující kód:// check maxPet limit if (petCount < maxPets) { }Do bloku kódu vytvořeného
ifpříkazu požádejte uživatele, jestli chce přidat další domácí mazlíčka, zadejte následující kód:// another pet? Console.WriteLine("Do you want to enter info for another pet (y/n)");Pod zprávu, kterou jste zadali, přečtěte odpověď uživatele a ujistěte se, že uživatel zadal "y" nebo "n", a poté zadejte následující kód:
do { readResult = Console.ReadLine(); if (readResult != null) { anotherPet = readResult.ToLower(); } } while (anotherPet != "y" && anotherPet != "n");Vyhledejte
breakpříkaz, který oddělujecase "2";odcase "3";ve vašemswitchpříkazu.Všimněte si příkazů
Console.WriteLine()aConsole.ReadLine()na konci našehocase "2";kódu.Tento kód zobrazí uživateli zprávu a pak aplikaci pozastaví.
Chcete-li uzavřít
Console.WriteLine()příkazy aConsole.ReadLine()příkazy doifpříkazu, aktualizujte kód následujícím způsobem:if (petCount >= maxPets) { Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); } break; case "3":Hodnota
petCountse zvýší uvnitř smyčkywhile. Je-lipetCountrovenmaxPets, žádné další domácí zvířata nelze přidat doourAnimalspole. Měli byste dát uživateli vědět, kdy k tomu dojde.Pokud chcete uživatele informovat, že společnost Contoso Pets dosáhla své kapacity, aktualizujte kód následujícím způsobem:
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":Projděte si kód ve smyčce
whilea zprávu uživatele, kterou jste vytvořili.Smyčka
while (anotherPet == "y" && petCount < maxPets)a kód, který zobrazuje zprávu uživatele, by měly vypadat jako následující kód: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(); }V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.
Opravte všechny chyby nebo upozornění sestavení, které se zobrazí před pokračováním.
Zkontroluj svou práci
V této úloze spustíte naši aplikaci z integrovaného terminálu a ověříte, že logika smyčky a větvení, které jste vytvořili, funguje podle očekávání.
V případě potřeby otevřete integrovaný panel terminálu editoru Visual Studio Code.
Na příkazovém řádku terminálu zadejte příkaz dotnet run.
Na příkazovém řádku terminálu zadejte 2.
Ověřte, že se zobrazují následující zprávy:
We currently have 4 pets that need homes. We can manage 4 more. Do you want to enter info for another pet (y/n)Na příkazovém řádku terminálu zadejte n
Ověřte, že váš kód ukončí smyčku pro zadávání nových mazlíčků při zadání "n".
Pokud logika kódu funguje podle očekávání, měla by se v terminálu zobrazit hlavní nabídka.
Pokud váš kód neokončí smyčku podle očekávání, stiskněte v terminálu ctrl +C a vynutíte zastavení provádění. Potřebujete procházet kód ručně a sledovat hodnoty proměnných výstupních kritérií. V případě potřeby aktualizujte kód, aby se zajistilo, že smyčku
whileukončíte, když uživatel zadá "n". Uložte změny, znovu sestavte program a projděte ověřovací test, abyste se k tomuto okamžiku vrátili.Na příkazovém řádku terminálu zadejte 2.
Znovu se zobrazí následující zprávy:
We currently have 4 pets that need homes. We can manage 4 more. Do you want to enter info for another pet (y/n)Na příkazovém řádku terminálu zadejte y.
Zvažte, jak
petCountse v kódu používá.Než budete moct kód ověřit, musíte porozumět své logice kódu.
V tomto případě logika kódu spoléhá na vztah mezi
petCountamaxPets. Víte, žemaxPetsje přiřazena hodnota8, ale co ?petCountNásledující položky vám pomůžou vyhodnotit logiku, kterou jste implementovali:Víte, že
petCountje4při vstupu do první iterace smyčkywhile.Víte, že se
petCountzvýší při každé iteraci smyčkywhile.Víte, že hodnota přiřazená
petCounta způsob, jakýmpetCountse zvýší, ovlivňuje způsob ukládání dat vourAnimalspoli. Následující položky vysvětlují vztah mezipetCountdaty uloženými vourAnimals:- Aplikace při vytváření ukázkových dat přidá do
ourAnimalspole čtyři domácí zvířata. - Aplikace ukládá nová data do pole
ourAnimals, když je hodnotapetCount4. Tohle není chyba. Kód dává smysl, když si vzpomenete, že prvky pole jsou založené na nule. NapříkladourAnimals[0,0]obsahuje ID domácího mazlíčka pro zvíře1aourAnimals[3,0]obsahuje ID domácího mazlíčka pro zvíře4. Z tohoto důvodu, kdyžpetCountje4, ukládáte data pro pátého domácího mazlíčka. - Aplikace uloží data domácích mazlíčků do pole, než se zvýší
petCount. - Aplikace zvýší
petCountpřed tím, než vyzve uživatele k přidání dalšího domácího mazlíčka. - Když aplikace poprvé zobrazí výzvu k zadání informací pro jiného domácího mazlíčka (y/n),
petCountje již nastavena na5hodnotu.
- Aplikace při vytváření ukázkových dat přidá do
Pokud uživatel zadá y na první výzvu Chcete zadat informace o dalším domácím mazlíčkovi (y/n), víte, že:
- Smyčka
while (anotherPet == "y" && petCount < maxPets)bude provádět iterace. Víte, že smyčka bude iterovat, protožeanotherPet == "y"apetCount < maxPets. - Hodnota přiřazená
petCountse zvýší (přiwhileiterování smyčky). - Hodnota přiřazená
petCountbude6(poté, co uživatel zadá y poprvé).
- Smyčka
Při dalším testování aplikace mějte na paměti tuto analýzu logiky kódu.
Všimněte si, že panel terminálu se aktualizuje se stejnou zprávou "další domácí mazlíček?", ale váš kód nezobrazuje aktualizovanou zprávu
petCount.Panel terminálu by teď měl zobrazit následující výstup:
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)Na příkazovém řádku terminálu zadejte y.
Když zadáte
ypodruhé,petCountzvýší se na7. TakžepetCountje stále menší nežmaxPetsNa příkazovém řádku terminálu zadejte y.
Když zadáte
ytřetí čas,petCountzvýší se na8. TakžepetCountje teď rovnomaxPetsOvěřte, že kód ukončí smyčku
while, když zadáte "y" potřetí.Panel terminálu by teď měl zobrazit následující výstup:
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.Pokud váš kód neokončí smyčku podle očekávání, projděte kód ručně a sledujte hodnoty proměnných výstupních kritérií. Aktualizujte kód, abyste zajistili ukončení smyčky, když
petCountdosáhne hodnoty rovnémaxPets. Pokračujte v odpovídání na "y", dokud nevíte, žepetCountje rovnamaxPets, který má výchozí hodnotu8.Na příkazovém řádku terminálu pokračujte ve spuštění aplikace stisknutím klávesy Enter.
Ukončete aplikaci a zavřete panel Terminálu.