Gyakorlat – Kód írása az összes miÁllatok tömb adatainak megjelenítéséhez
Ebben a gyakorlatban meg kell írnia a beágyazott hurokszerkezetet és a kiválasztási kódblokkot, amely az ourAnimals tömb információinak megjelenítésére szolgál. A gyakorlat során elvégzett részletes feladatok a következők:
- Külső hurok: hozza létre a külső hurkot, amely végigmegy az állatokon az ourAnimals tömbben.
- Adatellenőrzés: olyan kód írása, amely ellenőrzi a meglévő háziállatok adatait, és megjeleníti az állat azonosítóját, ha az adatok elérhetők.
- Belső hurok: hozzon létre egy belső hurkot, amely megjeleníti a kedvtelésből tartott állatok összes jellemzőjét a hozzárendelt adatokkal rendelkező állatok esetében.
- 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.
Hozzon létre egy ciklust, amely végigmegy az ourAnimals tömbön
Ebben a feladatban létrehozza azt a külső for hurkot, amelyet arra használunk, hogy iteráljunk a ourAnimals tömbben lévő állatokon. Vizsgáld meg a tömb méretei és a(z) for hurok paraméterei közötti kapcsolatot. Többdimenziós tömbök kezelésekor vegye figyelembe a for utasítások és a foreach utasítások használata közötti különbségeket is.
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.
Az
switch(menuSelection)kijelölési utasítás kódblokkjában keresse meg a következő kódsorokat.case "1": // List all of our current pet information Console.WriteLine("this app feature is coming soon - please check back to see progress."); Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Törölje a
Console.WriteLine()"hamarosan" üzenet megjelenítéséhez használt utasítást, és hagyjon üres kódsort a// List all of our current pet informationkód megjegyzéssora alatt.A visszajelzési üzenetre nincs szükség, mert
ourAnimalsmegjeleníti a tömb tartalmát. A többi menükijelölésnek megfelelő kód fejlesztése során ezek a visszajelzési üzenetek is frissülnek.Hagyja meg a következő üzenetet:
Press the Enter key to continue.A létrehozott üres kódsortól kezdve kezdjen el egy utasítást
foraz alábbiak szerint:for () { }Szánjon egy percet, hogy átgondolja, mit kell elérnie ezzel az
forállítással.Ne feledje, hogy egy
forutasítás három részből áll, amelyek vezérlik az iterációk megvalósítását: az inicializáló, a feltétel és az iterátor. Az inicializálóhoz, a feltételhez és az iterátorhoz rendelt értékek az utasítássalforelérni kívánt értékeken alapulnak.Ebben az esetben a
forciklust aourAnimalstömbön történő iterációra használják. Tudja, hogy a tömbök nulla alapú indexelést használnak, ami azt jelenti, hogy egynelemből álló tömb indexei0ésn-1között vannak. Szüksége van az inicializálóra, a feltételre és az iterátorra , hogy megfeleljen a tömb dimenzióinak. Ebben az esetben azt szeretné, hogy aforhurok0-nél kezdődjön, növekedjen1értékkel, ésmaxPets-1-nél érjen véget.A
ourAnimalstömb a következőképpen deklarálva van:string[,] ourAnimals = new string[maxPets, 6];. Tudod, hogy amaxPetsértéke8. Ebben a deklarációbanmaxPetsa tömb első dimenziójában lévő elemek számát adja meg, nem pedig a tömb elemeire hivatkozó nulla alapú indexszámot. Ezért, bármaxPets = 8, a tömbindexek csak0–tól7–ig terjednek.A ciklus vezérlőértékének
formegadásához frissítse a kódot az alábbiak szerint:for (int i = 0; i < maxPets; i++) { }Mint látható, az inicializáló
int i = 0;beállítása a nulla alapú tömbindexhez igazodik. Hasonlóképpen állítsa be a feltételt úgy, hogyi < maxPets;az igazodjon a tömb első dimenziójával. Végül, ha az iterátort úgy állítja be, hogyi++, az minden egyes iterációval1-val növeli a ciklusvezérlés értékét.Szánj egy percet arra, hogy megfontold a
forutasítás és aforeachutasítás közötti választást, amikor a mi állataink tömbön iterál.Az a cél, hogy iteráljunk végig az ourAnimals tömb állatain egyesével. Akkor miért ne használjunk
foreachciklust? Végtére is, tudja, hogy azforeachutasítás olyan esetekre lett kialakítva, amikor egy elemtömb minden elemén át szeretne iterálni.Ebben a helyzetben azért nem használsz
foreachciklust, mert aourAnimalstömb egy többdimenziós tömb. MivelourAnimalstöbbdimenziós sztringtömbről van szó, minden benneourAnimalslévő elem egy külön típusú sztringelem. Haforeachciklust használtálourAnimalsbejárására, akkor aforeachminden sztringet különálló elemként ismer fel a 48 sztringből álló listában (8 x 6 = 48). Azforeachutasítás nem dolgozná fel külön a két tömbdimenziót. Más szóval, aforeachhurkok nem ismerik fel8a karakterlánc elemek sorait, ahol minden sor tartalmaz egy oszlopnyi elemet6. Mivel egyszerre egy állattal szeretne dolgozni, és egyetlen iteráció során mind a hat állatjellemzőt feldolgozni, egyforeachutasítás nem a megfelelő választás.Ha azonban a
ourAnimalstömb olyan szaggatott tömb volt, amelyet szöveges tömbök tömbjeként konfiguráltak, akkor használhatja aforeachutasítást. Ebben az esetben először létrehozna egyforeachkülső hurkot, majd másodikként egyforeachbelső hurkot. A külső hurok végighaladna a cikcakkos tömb "karakterlánc tömb" elemein. A karaktersorozatok a kétdimenziós tömb *sorai*. A belső hurok a karakterlánc tömbökben található "string" elemeken iterál. A sztringtömbök sztringelemei a kétdimenziós tömb "oszlopai".Az alábbi kódminta a szaggatott tömb megközelítést mutatja be.
string[][] jaggedArray = new string[][] { new string[] { "one1", "two1", "three1", "four1", "five1", "six1" }, new string[] { "one2", "two2", "three2", "four2", "five2", "six2" }, new string[] { "one3", "two3", "three3", "four3", "five3", "six3" }, new string[] { "one4", "two4", "three4", "four4", "five4", "six4" }, new string[] { "one5", "two5", "three5", "four5", "five5", "six5" }, new string[] { "one6", "two6", "three6", "four6", "five6", "six6" }, new string[] { "one7", "two7", "three7", "four7", "five7", "six7" }, new string[] { "one8", "two8", "three8", "four8", "five8", "six8" } }; foreach (string[] array in jaggedArray) { foreach (string value in array) { Console.WriteLine(value); } Console.WriteLine(); }A Contoso Pets alkalmazás esetében valószínűleg egyszerűbb többdimenziós sztringtömböket és beágyazott
forhurkokat használni a szaggatott tömbök és beágyazottforeachhurkok helyett. Most, hogy láthatja, hogyan működnek az egyes lehetőségek, saját döntést hozhat a jövőbeli kódolási projektekben.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 vagy figyelmeztetéseket.
Ne feledje, hogy a buildelési hiba és a figyelmeztető üzenetek jelzik, hogy mi a probléma, és hol található. A problémák megoldásakor a legjobb, ha a kód elején előforduló problémákkal kezdjük, és onnan lefelé haladunk.
Zárja be a Terminál panelt.
Meglévő kisállat-adatok és megjelenítési eredmény ellenőrzése
Ebben a feladatban egy if utasítás használatával megkeresi az egyes kisállatokat a ourAnimals kiosztott kisállat-jellemzők adatait tartalmazó tömbben. Ha egy hozzárendelt adatokkal rendelkező kisállatot talál, megjelenik a petID. Ha nincs hozzárendelve adat, semmi sem jelenik meg. Futtatja a kódot, hogy ellenőrizze, vajon for és if utasítások megfelelően működnek-e.
Hozzon létre egy üres kódsort az utasításkódblokkban az
foralábbiak szerint:for (int i = 0; i < maxPets; i++) { }Ha olyan utasítást
ifszeretne létrehozni, amely ellenőrzi a kisállat-azonosító adatait, frissítse a kódot az alábbiak szerint:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { } }Szánjon egy percet, hogy átgondolja, mit értékel ez
ifaz állítás és miért.Először is vegye figyelembe a kifejezés bal oldalát:
ourAnimals[i, 0]. Figyelje meg, hogy a ciklusvezérlő változóia vizsgált állat megadására szolgál. Mint emlékezhet, a0in[i, 0]megfelel apetIDjellemzőnek. Mivel a tömb első dimenziója az állat "számának" felel meg, a kifejezés ezen oldala biztosítja, hogy a kód ellenőrizze a tömb minden egyes állatához hozzárendeltpetIDértéket.Másodszor vegye figyelembe az összehasonlítási operátor kiválasztását. Figyelje meg, hogy a nem egyenlő operátort
!=használja a rendszer. A kifejezést akkor értékeljük ki, amikor a petID-hez rendelt érték,true, NEM egyenlő az egyenlet jobb oldalán felsorolt értékkel,ourAnimals[i, 0].Harmadszor vegye figyelembe az egyenlet jobb oldalán lévő értéket. Figyelje meg, hogy a függvény statikus sztringértéket
"ID #: "használ. Ez a mintaadatok létrehozásakor hozzárendeltpetIDalapértelmezett érték. Ha a jellemzők egy állathoz vannak rendelve, azpetIDérték frissül, és NEM lesz egyenlő az alapértelmezett értékkel.Ez azt jelzi, hogy az utasítás kódblokkja
ifakkor lesz végrehajtva, ha az aktuális állat rendelkezik meghatározott jellemzőkkel.Megjegyzés:
Ez jó példa arra, hogy mikor
!=érdemes használni. Nem érdekli, hogy milyen értékhezpetIDvan hozzárendelve, amíg nem ez az alapértelmezett érték.Ha olyan metódust
Console.WriteLine()szeretne létrehozni, amely megjeleníti azpetIDifutasítás kódblokkját, frissítse a kódot az alábbiak szerint:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }Figyelje meg, hogy a metódus meghívásakor
WriteLine()egy tömbelem használható argumentumként.A Visual Studio Code File menüben válassza a Mentés lehetőséget.
Nyissa meg az Integrált terminál panelt, é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.
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.Ha a kód futásidejű hibát okoz, javítsa ki a hibákat, mentse a frissítéseket, és indítsa újra az alkalmazást.
A terminál parancssorában ellenőrizze, hogy az új kódlogika a várt módon működik-e, írja be az 1 értéket
A következő
petIDértékek jelennek meg:ID #: d1 ID #: d2 ID #: c3 ID #: c4 Press the Enter key to continue.Ezek az azonosítók megfelelnek az adatokhoz rendelt háziállatoknak.
Ha a kód eltérő kimenetet jelenít meg az 1. menü kiválasztásakor, tekintse át és frissítse a kódot. Ne feledje, hogy a frissítések elvégzése után mentenie kell a Program.cs fájlt.
Lépjen ki az alkalmazásból, majd zárja be a Terminál panelt.
A kedvtelésből tartott állatok összes jellemzőjének megjelenítése hozzárendelt adatokkal
Ebben a feladatban létrehoz egy hurkot for az if utasításkódblokkon belül, amely az aktuális kisállat összes jellemzőjének megjelenítésére szolgál.
A kódszerkesztőben keresse meg a következő kódsorokat a Program.cs fájlban:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }Az egyes kedvtelésből tartott állatok jellemzőin végighaladó hurok létrehozásához frissítse kódját az alábbiak szerint:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { } } }Figyelje meg, hogy most már van egy második
forhurok, amely "beágyazott" az elsőforhurok kódblokkjában. Mint tudja, a külső hurok végighalad aourAnimalstömbben lévő állatokon. A cél az, hogy a belső hurok végighaladjon az egyes állatok jellemzőin. Mivel az állatadatokat többdimenziós tömbben tárolják, az állatok jellemzői könnyen elérhetők lesznek.Szánjon egy percet a
forbeírt nyilatkozat áttekintésére.Figyelje meg, hogy a ciklusvezérlő változó neve
j. Hurkok beágyazásakor az egyik hagyományos módszerforhasználata a külső hurokban ésia belső hurokban. Az ilyen konvenciók követése megkönnyíti mások számára a kód olvasását.Mivel minden állathoz hat jellemzőt tárolnak, az inicializáló az
int j = 0;, és a feltétel.j < 6;Az inicializáló és a feltétel kombinációja megfelel a szükséges tömbindex-tartománynak.0-5Ha egy kisállat minden jellemzőjét külön sorban szeretné megjeleníteni, frissítse a kódot az alábbiak szerint:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }Szánjon egy percet a létrehozott beágyazott struktúra és a kód által előállított megjelenített kimenet figyelembevételére.
Vegye észre, hogy a konzolra írt érték,
ourAnimals[i, j], a külső és belsőforhurkok ciklusvezérlési változóit használja.A következő elemek mindegyikét ismeri:
- A tömb első dimenziója
ourAnimalsa különböző háziállatoknak felel meg. - A tömb második dimenziója
ourAnimalsaz egyes kisállatok jellemzőinek felel meg. - Az
ifutasítás megakadályozza, hogy a belső hurok fusson, amikor az aktuális kisállathoz nincs hozzárendelve kisállat-adat. - A belső hurok a külső hurok minden egyes iterációjára befejezi az összes iterációját.
Ezért tudja, hogy minden állat jellemzői a kívánt módon jelennek meg.
- A tömb első dimenziója
Ha a petID-üzenetet üresre
WriteLine()szeretné cserélni, frissítse a kódot az alábbiak szerint:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }Ez a végső frissítés megkönnyíti, hogy könnyedén megkülönböztethetők legyenek a háziállatok, amikor az eredmény a konzolon jelenik meg.
A Visual Studio Code File menüben válassza a Mentés lehetőséget.
Nyisson meg egy terminálpanelt, és hozza létre a programot.
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álról futtatja az alkalmazást, és ellenőrzi, hogy a for és if utasítások beágyazott kombinációja a várt eredményt adja-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 az 1 értéket
Győződjön meg arról, hogy a háziállatok adatai megjelennek annál a négy állatnál, amelynek adatai hozzá lettek rendelve.
ID #: d1 Species: dog Age: 2 Nickname: lola Physical description: medium sized cream colored female golden retriever weighing about 65 pounds. housebroken. Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses. ID #: d2 Species: dog Age: 9 Nickname: loki Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken. Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs. ID #: c3 Species: cat Age: 1 Nickname: Puss Physical description: small white female weighing about 8 pounds. litter box trained. Personality: friendly ID #: c4 Species: cat Age: ? Nickname: Physical description: Personality: Press the Enter key to continue.Megjegyzés:
Ha nem látja a várt eredményeket, győződjön meg arról, hogy mentette a frissített Program.cs fájlt. Ha nem látja a várt eredményeket, és nem tudja azonosítani a problémát, megvizsgálhatja a Program.cs kódot a Végleges mappában. A végleges mappa a telepítés során végrehajtott letöltés részeként szerepel. Javasoljuk, hogy az utolsó mappában lévő Program.cs fájl ellenőrzése előtt próbálja azonosítani és kijavítani a kód szintaxisával és logikával kapcsolatos problémáját.
Lépjen ki az alkalmazásból, majd zárja be a Terminál panelt.