Cvičení – sestavení a otestování smyčky pro zadávání nových dat domácích mazlíčků

Dokončeno

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:

  1. Výpočet petCount: napište kód, který spočítá počet domácích zvířat v ourAnimals poli, které mají přiřazená data.
  2. Podmíněné zprávy: Napsání kódu pro zobrazení výstupu zprávy, pokud petCount je menší než maxPets.
  3. Vnější cyklus: Postavte strukturu cyklu, která se použije pro zadávání nových ourAnimals dat pole.
  4. Kritéria ukončení: Napište kód, který vyhodnocuje podmínku ukončení pro cyklus smyčky "zadejte data nového pole ourAnimals".
  5. 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.

  1. Ujistěte se, že je visual Studio Code otevřený a že je váš soubor Program.cs viditelný v Editoru.

  2. Vyhledejte příkaz switch(menuSelection) a najděte řádek kódu case "2":.

  3. Console.WriteLine() Vyhledejte příkaz, který zobrazí zprávu "připravujeme", a pak ji nahraďte prázdným řádkem kódu.

  4. Na prázdný řádek kódu, který jste vytvořili, deklarujte anotherPet a petCount proměnné zadejte následující kód:

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

    Tyto dvě proměnné řídí iteraci while smyč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.

    • anotherPet inicializuje se hodnotou y před začátkem smyčky while . Obdrží uživatelem přiřazenou hodnotu, buď y nebo n, uvnitř smyčky while.

    • petCount př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ši while smyčku a uvnitř 1 smyčky se zvýší o while při každém přidání nového zvířete do pole ourAnimals.

    Důležité

    Rozsah proměnných by měl být vždy co nejužší. V aplikaci Contoso Pets byste mohli vymezit petCount na úrovni aplikace, nikoli v rámci bloku case "2": kódu. Větší rozsah by vám umožnil přístup petCount odkudkoli v aplikaci. Pokud petCount byl 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 ho ourAnimals z pole, můžete snížit petCount o 1. 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 obor petCount na úrovni aplikace, i když ho nepoužíváte nikde jinde. Určení rozsahu petCount na ú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žívat petCount obecněji v rámci aplikace, můžete kód aktualizovat tak, aby byl obor petCountna 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.

  5. 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 for smyčku použijete při každé iteraci pole ourAnimals .

  6. Uvnitř bloku kódu naší for smyč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 if příkaz použijete pokaždé, když zkontrolujete, jestli byly přiřazeny vlastnosti domácích mazlíčků.

  7. Do bloku if kódu, který jste vytvořili, zadejte následující kód, který chcete zvýšit petCount o 1:

    petCount += 1;
    
  8. Udělejte si chvilku na prozkoumání dokončené for smyčky.

    Dokončená for smyč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 ourAnimals a kontrolovat přiřazení dat. Když najde zvíře s přiřazenými daty, se zvýší petCounter.

  9. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  10. 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 build příkaz z příkazového řádku terminálu.

  11. 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 anotherPet byl přiřazen, ale nikdy použit. Přidáte kód, který se použije anotherPet pozdě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.

  12. 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.

  1. Na prázdný řádek kódu pod smyčkou for , kterou jste vytvořili, chcete-li zjistit, zda petCount je menší než maxPets, zadejte následující kód:

    if (petCount < maxPets)
    {
    }
    
  2. Pokud chcete uživateli zobrazit zprávu, zadejte do bloku if kó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.

  3. Věnujte chvíli prohlédnutí větve kódu vašeho case "2": příkazu switch.

    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;
    
  4. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  5. Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.

  6. Opravte všechny chyby sestavení, které se zobrazí před pokračováním.

    Můžete znovu ignorovat varovnou zprávu o anotherPet přiřazeném, ale nikdy nepoužitém. V dalším úkolu začnete vytvářet smyčku while , 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čku while, použije anotherPet a 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.

  7. Na příkazovém řádku terminálu zadejte příkaz pro spuštění programu.

    dotnet run Zadá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.

  8. Na příkazovém řádku terminálu zadejte 2.

    Tato hodnota odpovídá vaší case "2": větvi kódu.

  9. 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í.

  10. Na příkazovém řádku terminálu pokračujte ve spuštění aplikace stisknutím klávesy Enter.

  11. 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.

  1. V Editoru kódu vytvořte pod blokem if (petCount < maxPets) kódu prázdný řádek kódu.

  2. Pokud chcete zahájit proces vytváření nové while smyčky, zadejte následující kód:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  4. Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.

  5. Všimněte si, že už nezobrazuje zprávu Upozornění o tom, že anotherPet není 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.

  1. 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.

  2. 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;
    
  3. Pokud chcete zkontrolovat, jestli petCount je menší než maxPets, zadejte následující kód:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. Do bloku kódu vytvořeného if pří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)");
    
  5. 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");
    
  6. Vyhledejte break příkaz, který odděluje case "2"; od case "3"; ve vašem switch příkazu.

  7. Všimněte si příkazů Console.WriteLine() a Console.ReadLine() na konci našeho case "2"; kódu.

    Tento kód zobrazí uživateli zprávu a pak aplikaci pozastaví.

  8. Chcete-li uzavřít Console.WriteLine() příkazy a Console.ReadLine() příkazy do if pří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 petCount se zvýší uvnitř smyčky while . Je-li petCount roven maxPets, žádné další domácí zvířata nelze přidat do ourAnimals pole. Měli byste dát uživateli vědět, kdy k tomu dojde.

  9. 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":
    
  10. Projděte si kód ve smyčce while a 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();
    }
    
  11. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  12. Otevřete integrovaný panel terminálu v editoru Visual Studio Code a zadejte příkaz k sestavení programu.

  13. 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í.

  1. V případě potřeby otevřete integrovaný panel terminálu editoru Visual Studio Code.

  2. Na příkazovém řádku terminálu zadejte příkaz dotnet run.

  3. Na příkazovém řádku terminálu zadejte 2.

  4. 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)
    
  5. Na příkazovém řádku terminálu zadejte n

  6. 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 while ukončí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.

  7. 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)
    
  8. Na příkazovém řádku terminálu zadejte y.

  9. Zvažte, jak petCount se 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 petCount a maxPets. Víte, že maxPets je přiřazena hodnota 8, ale co ?petCount Následující položky vám pomůžou vyhodnotit logiku, kterou jste implementovali:

    • Víte, že petCount je 4 při vstupu do první iterace smyčky while.

    • Víte, že se petCount zvýší při každé iteraci smyčky while.

    • Víte, že hodnota přiřazená petCount a způsob, jakým petCount se zvýší, ovlivňuje způsob ukládání dat v ourAnimals poli. Následující položky vysvětlují vztah mezi petCount daty uloženými v ourAnimals:

      • Aplikace při vytváření ukázkových dat přidá do ourAnimals pole čtyři domácí zvířata.
      • Aplikace ukládá nová data do poleourAnimals, když je hodnota petCount4. Tohle není chyba. Kód dává smysl, když si vzpomenete, že prvky pole jsou založené na nule. Například ourAnimals[0,0] obsahuje ID domácího mazlíčka pro zvíře 1 a ourAnimals[3,0] obsahuje ID domácího mazlíčka pro zvíře 4. Z tohoto důvodu, když petCount je 4, 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ýší petCount př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), petCount je již nastavena na 5 hodnotu.
    • 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že anotherPet == "y" a petCount < maxPets.
      • Hodnota přiřazená petCount se zvýší (při while iterování smyčky).
      • Hodnota přiřazená petCount bude 6 (poté, co uživatel zadá y poprvé).

    Při dalším testování aplikace mějte na paměti tuto analýzu logiky kódu.

  10. 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)
    
  11. Na příkazovém řádku terminálu zadejte y.

    Když zadáte y podruhé, petCount zvýší se na 7. Takže petCount je stále menší než maxPets

  12. Na příkazovém řádku terminálu zadejte y.

    Když zadáte y třetí čas, petCount zvýší se na 8. Takže petCount je teď rovno maxPets

  13. Ověř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ž petCount dosáhne hodnoty rovné maxPets. Pokračujte v odpovídání na "y", dokud nevíte, že petCount je rovna maxPets, který má výchozí hodnotu 8.

  14. Na příkazovém řádku terminálu pokračujte ve spuštění aplikace stisknutím klávesy Enter.

  15. Ukončete aplikaci a zavřete panel Terminálu.