Gyakorlat – Hurok létrehozása és tesztelése új kisállat-adatok megadásához
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:
- A petCount kiszámítása: írjon olyan kódot, amely megszámolja az adatokkal rendelkező tömbben lévő
ourAnimalsháziállatok számát. - Feltételes üzenetek: kód írása az üzenet kimenetének megjelenítéséhez, ha
petCountkisebb, mintmaxPets. - Külső hurok: hozzon létre egy hurokstruktúrát, amely új
ourAnimalstömbadatok beírásához lesz használva. - 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.
- 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ó.
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.
Keresse meg az utasítást
switch(menuSelection), majd keresse meg a kódsortcase "2":.Keresse meg a
Console.WriteLine()"hamarosan" üzenetet megjelenítő utasítást, majd cserélje le egy üres kódsorra.Az üres kódsoron, amelyet létrehozott, írja be a következő kódot a
anotherPetéspetCountvá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 awhileciklus kezdete előtt. Egy felhasználó által hozzárendelt értéket kap, vagyyvagynawhilecikluson belül.petCounta hozzárendelt kisállat-jellemzőkkel rendelkező állatok számát jelöli. A cikluson kívülwhilehozzá lesz rendelve egy számított érték, és minden alkalommal, amikor új állatot adnak hozzá a1tömbhöz, awhilecikluson belül növekszikourAnimals.
Fontos
A változók hatókörének mindig a lehető legszűkebbnek kell lennie. A Contoso Pets alkalmazásban
petCounthatókörét az alkalmazás szintjén határozhatja meg, nem pedig a kódblokkcase "2":szintjén. A nagyobb hatókör lehetővé teszi, hogy bárhonnan hozzáférhessenpetCountaz alkalmazáshoz. HapetCountaz 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 aourAnimalstömbből, csökkentheti apetCountértékét1ö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álnipetCount, 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éspetCountbiztosí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 apetCount-t, akkor magasabb szintű hatókörre frissítheti a kódot apetCount-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.A változódeklarációk alatti kódsoron egy olyan hurkot hozhat létre, amely végighalad a
ourAnimalstö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
forhurkot minden alkalommal használni fogja, amikor végighalad aourAnimalstömbön.A kódblokkunkban
forhurokban í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
ifutasítást minden alkalommal használod, amikor ellenőrzöd, hogy a háziállat jellemzői ki vannak-e rendelve.A létrehozott
ifkódblokkba, hogy 1-gyel növeljepetCount, írja be a következő kódot:petCount += 1;Szánjon egy percet a befejezett
forciklus megvizsgálására.A befejezett
forciklusnak 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
ourAnimalstömbön, hogy ellenőrizze a hozzárendelt adatokat. Amikor egy hozzárendelt adatokkal rendelkező állatot talál, növeli apetCounterértékét.A Visual Studio Code File menüben válassza a Mentés lehetőséget.
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 buildterminál parancssorából.Javítsa ki a folytatás előtt jelentett buildelési hibákat.
Megjegyzés:
Egyelőre figyelmen kívül hagyhatja a
anotherPethozzárendeléséről szóló, de soha nem használt figyelmeztető üzenetet. A gyakorlat végén hozzáad olyan kódot, amely aanotherPet-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.
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.
A létrehozott
forhurok alatti üres kódsorban adja meg a következő kódot, hogy ellenőrizze, kisebb-epetCountmintmaxPets:if (petCount < maxPets) { }Az utasítás kódblokkjába írja be a
ifkö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.
Szánjon egy percet
case "2":kódágának áttekintésére azswitchutasí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;A Visual Studio Code File menüben válassza a Mentés lehetőséget.
Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.
Javítsa ki a folytatás előtt jelentett buildelési hibákat.
Ismét figyelmen kívül hagyhatja a
anotherPetfigyelmeztető üzenetet, amely hozzárendelésre került, de soha nem került használatra. A következő feladatban elkezdi létrehozni azt awhilehurkot, amely egy vagy több háziállat adatainak megadására szolgál. Awhileciklushoz létrehozott kifejezés használni fogja aanotherPet, é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.
A terminál parancssorában adja meg a parancsot a program futtatásához.
Adja meg a
dotnet runparancsot 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.
A Terminál parancssorában adja meg a 2 értéket
Ez az érték a kódágnak
case "2":felel meg.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.
A terminál parancssorában nyomja le az Enter billentyűt az alkalmazás futtatásának folytatásához.
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.
A kódszerkesztőben hozzon létre egy üres kódsort a
if (petCount < maxPets)kódblokk alatt.Az új
whilehurok létrehozásának megkezdéséhez írja be a következő kódot:while (anotherPet == "y" && petCount < maxPets) { }A Visual Studio Code File menüben válassza a Mentés lehetőséget.
Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.
Vegye észre, hogy a továbbiakban nem kap figyelmeztetést arról, hogy a
anotherPetnincs 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.
Hozzon létre egy üres kódsort az
while (anotherPet == "y" && petCount < maxPets)előző feladatban létrehozott ciklus kódblokkjában.Az
petCountnö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;Annak ellenőrzéséhez, hogy a
petCountkisebb-e, mintmaxPets, írja be a következő kódot:// check maxPet limit if (petCount < maxPets) { }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)");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");Keresse meg az
breakutasításban azt acase "2";utasítást, amely elválasztja acase "3";elemet aswitchelemtől.Figyelje meg a
Console.WriteLine()ésConsole.ReadLine()utasításokat acase "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.
A
Console.WriteLine()ésConsole.ReadLine()utasításokat egyifutasí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 awhilecikluson belül növekszik. HapetCountegyenlőmaxPets, akkor a tömbhözourAnimalsnem lehet több háziállatot hozzáadni. Értesítenie kell a felhasználót, amikor ez megtörténik.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":Szánjon egy percet arra, hogy áttekintse a ciklus
whilekó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(); }A Visual Studio Code File menüben válassza a Mentés lehetőséget.
Nyissa meg az Integrált terminál panelt a Visual Studio Code-ban, és írja be a parancsot a program létrehozásához.
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.
Szükség esetén nyissa meg a Visual Studio Code integrált terminálpaneljét.
A Terminál parancssorában adja meg a dotnet run parancsot
A Terminál parancssorában adja meg a 2 értéket
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)A Terminál parancssorában adja meg az n
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
whilehurokbó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.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)A terminál parancssorában adja meg az y értéket
Szánjon egy percet, hogy átgondolja
petCounta 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ésmaxPetsközötti kapcsolatra támaszkodik. Tudod, hogy azmaxPetsértéke a8-hez van hozzárendelve, de mi a helyzet apetCount-vel? Az alábbi elemek segítenek kiértékelni a megvalósított logikát:Tudja, hogy
petCount4, amikor belép awhilehurok első iterációjába.Tudja, hogy a
petCountmegnövekszik minden alkalommal, amikor awhileciklus iterál.Tudja, hogy a
petCountérték hozzárendelése és apetCountnövelésének módja befolyásolja, hogyan tárolódnak az adatok aourAnimalstömbben. A következő elemek ismertetik apetCountkapcsolatát aourAnimals-ben tárolt adatokkal:- Az alkalmazás négy háziállatot ad hozzá a
ourAnimalstömbhöz a mintaadatok létrehozásakor. - Az alkalmazás akkor tárolja az új adatokat a
ourAnimalstömbben, ha apetCountértéke4. Ez nem hiba. A kódnak akkor van értelme, ha felidézi, hogy a tömbelemek nulla alapúak. Például tartalmazza az állatourAnimals[0,0]kisállat-azonosítóját,1ésourAnimals[3,0]tartalmazza az állat4kisállat-azonosítóját. Ezért mikorpetCount4tá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
petCountmielő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,
petCountmár be van állítva5.
- Az alkalmazás négy háziállatot ad hozzá a
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, mertanotherPet == "y"éspetCount < maxPets. - A hozzárendelt
petCountérték növekszik (amikor awhilehurok iterál). - A
petCountértéke6lesz (miután a felhasználó először beírja az y-t).
- A
Az alkalmazás tesztelése során tartsa szem előtt a kódlogika elemzését.
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)A terminál parancssorában adja meg az y értéket
Amikor második alkalommal ad meg
y,petCounta függvény a következőre7növekszik: . ÍgypetCountmég mindig kevesebb, mintmaxPetsA terminál parancssorában adja meg az y értéket
Amikor harmadik alkalommal adja meg a
y, apetCount8-ra nő. ÍgypetCountmost már egyenlőmaxPetsEllenőrizze, hogy a kód kilép-e a
whileciklusbó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
petCounteléri amaxPetsmegfelelő értéket. Mindig válaszoljon az "y"-ra, amíg nem tudja, hogypetCountez egyenlőmaxPets, amelynek alapértelmezett értéke8.A terminál parancssorában nyomja le az Enter billentyűt az alkalmazás futtatásának folytatásához.
Lépjen ki az alkalmazásból, majd zárja be a Terminál panelt.