Gyakorlat – Hurok létrehozása és tesztelése új kisállat-adatok megadásához

Befejezett

Ebben a gyakorlatban olyan kódot fejleszt, amely az új ourAnimals tömbadatok bemenetét vezérli. Kiszámítja a hurokvezérlő változók kezdeti értékeit, és összeállítja azt a hurkot, amely összegyűjti a felhasználó által megadott adatokat az állatok számára. A gyakorlat során elvégzett részletes feladatok a következők:

  1. A petCount kiszámítása: írjon olyan kódot, amely megszámolja az adatokkal rendelkező tömbben lévő ourAnimals háziállatok számát.
  2. Feltételes üzenetek: kód írása az üzenet kimenetének megjelenítéséhez, ha petCount kisebb, mint maxPets.
  3. Külső hurok: hozzon létre egy hurokstruktúrát, amely új ourAnimals tömbadatok beírásához lesz használva.
  4. Kilépési feltételek: olyan kód írása, amely kiértékeli az "enter new ourAnimals array data" ciklus kilépési feltételét.
  5. Ellenőrző teszt: az ebben a gyakorlatban kifejlesztett kód ellenőrző tesztjeinek elvégzése.

Fontos

A gyakorlat megkezdése előtt el kell végeznie az előző gyakorlatot ebben a modulban.

A háziállatok számának megszámlálása a MiAnimals tömbben

Ebben a feladatban meg kell határoznia az adatbeviteli hurok kilépési feltételeit, és létrehoz egy hurkot for , amely a hozzárendelt adatokkal ourAnimals rendelkező háziállatok számának megszámlálására használható.

  1. Győződjön meg arról, hogy a Visual Studio Code meg van nyitva, és hogy a Program.cs fájl látható legyen a Szerkesztőben.

  2. Keresse meg az utasítást switch(menuSelection) , majd keresse meg a kódsort case "2": .

  3. Keresse meg a Console.WriteLine() "hamarosan" üzenetet megjelenítő utasítást, majd cserélje le egy üres kódsorra.

  4. Az üres kódsoron, amelyet létrehozott, írja be a következő kódot a anotherPet és petCount változók deklarálásához:

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

    Ez a két változó szabályozza az új kisállat-adatok bevitelére használt hurok ismétlését while. Mindkét változót inicializálja a deklaráció részeként.

    • A anotherPety értékkel kerül inicializálásra a while ciklus kezdete előtt. Egy felhasználó által hozzárendelt értéket kap, vagy y vagy n a while cikluson belül.

    • petCount a hozzárendelt kisállat-jellemzőkkel rendelkező állatok számát jelöli. A cikluson kívül while hozzá lesz rendelve egy számított érték, és minden alkalommal, amikor új állatot adnak hozzá a 1 tömbhöz, a while cikluson belül növekszik ourAnimals.

    Fontos

    A változók hatókörének mindig a lehető legszűkebbnek kell lennie. A Contoso Pets alkalmazásban petCount hatókörét az alkalmazás szintjén határozhatja meg, nem pedig a kódblokk case "2": szintjén. A nagyobb hatókör lehetővé teszi, hogy bárhonnan hozzáférhessen petCount az alkalmazáshoz. Ha petCount az alkalmazás szintjén hatókörrel rendelkezik, hozzárendelhet egy értéket, amikor létrehozza a mintaadatokat, és programozott módon kezeli annak értékét az alkalmazás hátralévő részében. Ha például talál egy otthont egy kisállatnak, és eltávolítja a kisállatot a ourAnimals tömbből, csökkentheti a petCount értékét 1 összeggel. A kérdés az, hogy milyen szinten kell hatókörbe helyeznie egy változót, ha nem biztos abban, hogy az alkalmazás más részeiben is használni fogja? Ebben az esetben csábító az alkalmazás szintjén hatókört használni petCount, még akkor is, ha máshol nem használja. Végül is az alkalmazás szintjén történő hatókörkezelés petCount biztosítja, hogy elérhető legyen, ha úgy dönt, hogy máshol használja. Lehet, hogy más változókat is hatókörbe vehet az alkalmazás szintjén. Így a változók mindig hatókörben és elérhetőek. Akkor miért nem hatókörváltozók az alkalmazás szintjén, ha úgy gondolja, hogy az alkalmazás későbbi részében is használhatók lesznek? A változók szükségesnél magasabb szintű hatókörkezelése problémákhoz vezethet. A megemelt hatókör növeli az alkalmazás erőforrás-követelményeit, és szükségtelen biztonsági kockázatoknak teheti ki az alkalmazást. Ahogy az alkalmazások egyre nagyobbak és összetettebbek lesznek, több erőforrásra van szükségük. A telefonok és a számítógépek memóriát foglalnak le ezekhez az erőforrásokhoz, amikor hatókörben vannak. Ahogy az alkalmazások egyre "valósabbá" válnak, akadálymentesebbé válnak. Az alkalmazások gyakran elérhetők a felhőből vagy más alkalmazásokból. Ezeket a problémákat tovább rontja, hogy az alkalmazások gyakran futva maradnak, amikor nem használják őket. Fontos, hogy az alkalmazás erőforráskövetelményei és a biztonsági lábnyom a lehető legkisebb legyen. Bár a mai operációs rendszerek nagyszerűen kezelik az erőforrásokat és biztonságossá teszik az alkalmazásokat, továbbra is ajánlott a változók hatókörét arra a szintre korlátozni, ahol ténylegesen szükség van rájuk. A Contoso Pets alkalmazásban, ha úgy dönt, hogy az alkalmazáson belül szélesebb körben használja a petCount-t, akkor magasabb szintű hatókörre frissítheti a kódot a petCount-el. Ne feledje, hogy a változók hatóköre a lehető legszűkebb legyen, és csak akkor növelje a hatókörüket, amikor szükségessé válik.

  5. A változódeklarációk alatti kódsoron egy olyan hurkot hozhat létre, amely végighalad a ourAnimals tömb állatain, írja be a következő kódot:

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

    Ennek a kódnak ismerősnek kell lennie. Ezt a for hurkot minden alkalommal használni fogja, amikor végighalad a ourAnimals tömbön.

  6. A kódblokkunkban for hurokban írja be a következő kódot, hogy ellenőrizze, hozzárendelték-e a háziállat jellemzőinek adatainak egy állathoz.

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

    Ennek a kódnak ismét ismerősnek kell lennie. Ezt az if utasítást minden alkalommal használod, amikor ellenőrzöd, hogy a háziállat jellemzői ki vannak-e rendelve.

  7. A létrehozott if kódblokkba, hogy 1-gyel növelje petCount, írja be a következő kódot:

    petCount += 1;
    
  8. Szánjon egy percet a befejezett for ciklus megvizsgálására.

    A befejezett for ciklusnak a következő kódhoz hasonlóan kell kinéznie:

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

    Ez a kód végigmegy a ourAnimals tömbön, hogy ellenőrizze a hozzárendelt adatokat. Amikor egy hozzárendelt adatokkal rendelkező állatot talál, növeli a petCounter értékét.

  9. A Visual Studio Code File menüben válassza a Mentés lehetőséget.

  10. Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.

    Ha az Explorer nézetből szeretné megnyitni az Integrálandó terminált, kattintson a jobb gombbal a Starter elemre, majd válassza a Megnyitás az integrált terminálban lehetőséget. A Nézet vagy a Terminál menü használatával is megnyithatja az Integrált terminál panelt.

    A program létrehozásához írja be a parancsot a dotnet build terminál parancssorából.

  11. Javítsa ki a folytatás előtt jelentett buildelési hibákat.

    Megjegyzés:

    Egyelőre figyelmen kívül hagyhatja a anotherPet hozzárendeléséről szóló, de soha nem használt figyelmeztető üzenetet. A gyakorlat végén hozzáad olyan kódot, amely a anotherPet-t használja.

    Ha bármilyen buildelési hibát tapasztal, ne feledje, hogy a Build hiba és a figyelmeztető üzenetek jelzik, hogy mi a probléma, és hol találja. Ha frissíti a kódot, ne felejtse el menteni a módosításokat az újraépítés előtt.

  12. Zárja be a Terminál panelt.

Üzenetkimenet megjelenítése, ha a petCount értéke kisebb, mint a maxPets

Ebben a feladatban ellenőrzi, hogy kisebb-e petCount , mint maxPets és ha igen, megjelenik egy üzenet a felhasználó számára.

  1. A létrehozott for hurok alatti üres kódsorban adja meg a következő kódot, hogy ellenőrizze, kisebb-e petCount mint maxPets:

    if (petCount < maxPets)
    {
    }
    
  2. Az utasítás kódblokkjába írja be a if következő kódot, hogy üzenetet jelenítsen meg a felhasználónak:

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

    Az alkalmazás felhasználói meg szeretnék adni a kedvtelésből tartott állatok jellemzőit. Ez az üzenet fontos kontextust biztosít.

  3. Szánjon egy percet case "2": kódágának áttekintésére az switch utasításban.

    Ekkor a case "2": kódágnak a következő kódhoz hasonlóan kell kinéznie:

    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. A Visual Studio Code File menüben válassza a Mentés lehetőséget.

  5. Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.

  6. Javítsa ki a folytatás előtt jelentett buildelési hibákat.

    Ismét figyelmen kívül hagyhatja a anotherPet figyelmeztető üzenetet, amely hozzárendelésre került, de soha nem került használatra. A következő feladatban elkezdi létrehozni azt a while hurkot, amely egy vagy több háziállat adatainak megadására szolgál. A while ciklushoz létrehozott kifejezés használni fogja a anotherPet, és ez a figyelmeztető üzenet majd eltűnik.

    Ne feledje, hogy a figyelmeztető üzenetek olyan dolgok, amelyek miatt aggódnia kell, de nem fogják megakadályozni a program futtatását.

  7. A terminál parancssorában adja meg a parancsot a program futtatásához.

    Adja meg a dotnet run parancsot a terminál parancssorában a programkód futtatásához.

    Mindaddig, amíg a kód nem generál futásidejű hibát, az alkalmazás főmenüjének most meg kell jelennie a Terminál panelen.

  8. A Terminál parancssorában adja meg a 2 értéket

    Ez az érték a kódágnak case "2": felel meg.

  9. Ellenőrizze, hogy az alábbi üzenet megjelenik-e a terminálban.

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

    Ha nem jelenik meg a várt üzenet, tekintse át a kódot a probléma azonosításához és javításához. Mentse a módosításokat, építse újra és futtassa újra az alkalmazást. A folytatás előtt győződjön meg arról, hogy a kód a várt módon működik.

  10. A terminál parancssorában nyomja le az Enter billentyűt az alkalmazás futtatásának folytatásához.

  11. Lépjen ki az alkalmazásból, majd zárja be a Terminál panelt.

Hozzon létre egy hurokstruktúrát, amely az ourAnimals tömbadatok megadásához lesz felhasználva.

Ebben a feladatban létrehoz egy while hurkot, amely addig iterál, amíg a anotherPet egyenlő y-vel és a petCount kisebb, mint maxPets.

  1. A kódszerkesztőben hozzon létre egy üres kódsort a if (petCount < maxPets) kódblokk alatt.

  2. Az új while hurok létrehozásának megkezdéséhez írja be a következő kódot:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. A Visual Studio Code File menüben válassza a Mentés lehetőséget.

  4. Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.

  5. Vegye észre, hogy a továbbiakban nem kap figyelmeztetést arról, hogy a anotherPet nincs használatban.

    Ha buildelési hibák vagy figyelmeztetések jelentek meg, a folytatás előtt javítsa ki a problémákat.

Ellenőrizze az új háziállatok hurok kilépési feltételét

Ebben a feladatban a while (anotherPet == "y" && petCount < maxPets) kódblokkot kell frissítenie. Az új kód növeli petCount, majd ellenőrzi, hogy petCount kisebb-e maxPets. Ha petCount kisebb, mint maxPets, kérdezze meg a felhasználót, hogy meg szeretné-e adni egy másik kisállat adatait, és győződjön meg arról, hogy a válasz y vagy n legyen. A while (anotherPet == "y" && petCount < maxPets) kódblokk után ellenőrizze a petCount értékét. Ha petCount megegyezik maxPets-val, értesítse a felhasználót arról, hogy nem lehet több háziállatot hozzáadni.

Megjegyzés:

A kedvtelésből tartott állatok adatainak megadására használt kódot a következő gyakorlatban fejlesztik ki. Egyelőre a petCount növekszik, mintha adatokat vinnének be és mentenének a ourAnimals tömbbe. Ez lehetővé teszi, hogy befejezze a while hurokkal társított kódlogika fejlesztését.

  1. Hozzon létre egy üres kódsort az while (anotherPet == "y" && petCount < maxPets) előző feladatban létrehozott ciklus kódblokkjában.

  2. Az petCount növeléséhez írja be a következő kódot:

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. Annak ellenőrzéséhez, hogy a petCount kisebb-e, mint maxPets, írja be a következő kódot:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. A létrehozott utasítás kódblokkjába if írja be a következő kódot, hogy megkérdezze a felhasználót, hogy szeretne-e újabb kisállatot hozzáadni:

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. WriteLine() A beírt üzenet alatt, a felhasználói válasz elolvasásához és annak ellenőrzéséhez, hogy a felhasználó az "y" vagy az "n" szöveget adta-e meg, írja be a következő kódot:

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. Keresse meg az break utasításban azt a case "2"; utasítást, amely elválasztja a case "3"; elemet a switch elemtől.

  7. Figyelje meg a Console.WriteLine() és Console.ReadLine() utasításokat a case "2"; kódunk végén.

    Ez a kód egy üzenetet jelenít meg a felhasználónak, majd szünetelteti az alkalmazást.

  8. A Console.WriteLine() és Console.ReadLine() utasításokat egy if utasításba ágyazva, frissítse a kódot az alábbiak szerint:

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

    A(z) petCount értéke a while cikluson belül növekszik. Ha petCount egyenlő maxPets, akkor a tömbhöz ourAnimals nem lehet több háziállatot hozzáadni. Értesítenie kell a felhasználót, amikor ez megtörténik.

  9. Ha tájékoztatni szeretné a felhasználót arról, hogy a Contoso Pets elérte a kapacitását, frissítse a kódot az alábbiak szerint:

    
        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. Szánjon egy percet arra, hogy áttekintse a ciklus while kódját és az ön által létrehozott felhasználói üzenetet.

    A while (anotherPet == "y" && petCount < maxPets) felhasználói üzenetet megjelenítő ciklusnak és kódnak a következő kódhoz hasonlóan kell kinéznie:

    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. A Visual Studio Code File menüben válassza a Mentés lehetőséget.

  12. Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.

  13. Javítsa ki a folytatás előtt jelentett buildelési hibákat vagy figyelmeztetéseket.

Ellenőrizd a munkádat

Ebben a feladatban az integrált terminálból futtatja az alkalmazást, és ellenőrzi, hogy a létrehozott hurok- és elágaztatási logika a várt módon működik-e.

  1. Szükség esetén nyissa meg a Visual Studio Code integrált terminálpaneljét.

  2. A Terminál parancssorában adja meg a dotnet run parancsot

  3. A Terminál parancssorában adja meg a 2 értéket

  4. Ellenőrizze, hogy a következő üzeneteket látja-e:

    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. A Terminál parancssorában adja meg az n

  6. Ellenőrizze, hogy a kód kilép-e az új háziállatok beírásához szükséges ciklusból az "n" beírásakor.

    Ha a programlogika a várt módon működik, meg kell jelennie a terminálban a főmenünek.

    Ha a kód nem lép ki a hurokból, amikor várható, nyomja le a Ctrl + C billentyűkombinációt a terminálban a végrehajtás leállításához. Kézzel kell végiglépnie a kódon, és nyomon kell követnie a kilépési kritériumok változóinak értékeit. Szükség esetén frissítse a kódot, hogy biztosan kilépjen a while hurokból, amikor a felhasználó beírja az "n" értéket. Mentse a módosításokat, építse újra a programot, és futtassa végig az ellenőrzési tesztet, hogy visszatérjen erre a pontra.

  7. A Terminál parancssorában adja meg a 2 értéket

    Ismét a következő üzenetek jelennek meg:

    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. A terminál parancssorában adja meg az y értéket

  9. Szánjon egy percet, hogy átgondolja petCount a kódban való használat módját.

    A kód érvényesítéséhez ismernie kell a kód logikáját.

    Ebben az esetben a kódlogika a petCount és maxPets közötti kapcsolatra támaszkodik. Tudod, hogy az maxPets értéke a 8-hez van hozzárendelve, de mi a helyzet a petCount-vel? Az alábbi elemek segítenek kiértékelni a megvalósított logikát:

    • Tudja, hogy petCount4, amikor belép a while hurok első iterációjába.

    • Tudja, hogy a petCount megnövekszik minden alkalommal, amikor a while ciklus iterál.

    • Tudja, hogy a petCount érték hozzárendelése és a petCount növelésének módja befolyásolja, hogyan tárolódnak az adatok a ourAnimals tömbben. A következő elemek ismertetik a petCount kapcsolatát a ourAnimals-ben tárolt adatokkal:

      • Az alkalmazás négy háziállatot ad hozzá a ourAnimals tömbhöz a mintaadatok létrehozásakor.
      • Az alkalmazás akkor tárolja az új adatokat a ourAnimals tömbben, ha a petCount értéke 4. Ez nem hiba. A kódnak akkor van értelme, ha felidézi, hogy a tömbelemek nulla alapúak. Például tartalmazza az állat ourAnimals[0,0] kisállat-azonosítóját, 1 és ourAnimals[3,0] tartalmazza az állat 4kisállat-azonosítóját. Ezért mikor petCount4 tárol adatokat az ötödik kisállat számára.
      • Az alkalmazás a kisállat-adatokat a tömbbe tárolja, mielőtt megnöveli.
      • Az alkalmazás megnöveli petCount mielőtt felszólítja a felhasználót, hogy adjon hozzá egy másik kisállatot.
      • Amikor az alkalmazás megjeleníti a Szeretne megadni információt egy másik háziállatról (i/n) felszólítást először, petCount már be van állítva 5.
    • Ha a felhasználó az első Meg szeretné adni információkat egy másik kisállatról (y/n) kérdésnél y-t ír be, tudja, hogy:

      • A while (anotherPet == "y" && petCount < maxPets) hurok iterál. Biztosan tudod, hogy a hurok iterálni fog, mert anotherPet == "y" és petCount < maxPets.
      • A hozzárendelt petCount érték növekszik (amikor a while hurok iterál).
      • A petCount értéke 6 lesz (miután a felhasználó először beírja az y-t).

    Az alkalmazás tesztelése során tartsa szem előtt a kódlogika elemzését.

  10. Figyelje meg, hogy a terminálpanel ugyanazzal a "másik kisállat?" üzenettel frissül, de a kód nem jelenít meg frissített petCountüzenetet.

    A Terminál panelen a következő kimenetnek kell megjelennie:

    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. A terminál parancssorában adja meg az y értéket

    Amikor második alkalommal ad meg y , petCount a függvény a következőre 7növekszik: . Így petCount még mindig kevesebb, mint maxPets

  12. A terminál parancssorában adja meg az y értéket

    Amikor harmadik alkalommal adja meg a y, a petCount8-ra nő. Így petCount most már egyenlő maxPets

  13. Ellenőrizze, hogy a kód kilép-e a while ciklusból, amikor harmadszor is beírja azt, hogy y.

    A Terminál panelen a következő kimenetnek kell megjelennie:

    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.
    

    Ha a kód nem lép ki a ciklusból, amikor várható, lépjen végig manuálisan a kódján, és kövesse nyomon a kilépési feltétel változóinak értékeit. Frissítse a kódot, hogy biztosan kilépjen a hurokból, amikor petCount eléri a maxPetsmegfelelő értéket. Mindig válaszoljon az "y"-ra, amíg nem tudja, hogy petCount ez egyenlő maxPets, amelynek alapértelmezett értéke 8.

  14. A terminál parancssorában nyomja le az Enter billentyűt az alkalmazás futtatásának folytatásához.

  15. Lépjen ki az alkalmazásból, majd zárja be a Terminál panelt.