Gyakorlat – Kód írása az összes miÁllatok tömb adatainak megjelenítéséhez

Befejezett

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:

  1. Külső hurok: hozza létre a külső hurkot, amely végigmegy az állatokon az ourAnimals tömbben.
  2. 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.
  3. 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.
  4. 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.

  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. 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;
    
  3. 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 information kód megjegyzéssora alatt.

    A visszajelzési üzenetre nincs szükség, mert ourAnimals megjelení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.

  4. A létrehozott üres kódsortól kezdve kezdjen el egy utasítást for az alábbiak szerint:

    for ()
    {
    }
    
  5. Szánjon egy percet, hogy átgondolja, mit kell elérnie ezzel az for állítással.

    Ne feledje, hogy egy for utasí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ással for elérni kívánt értékeken alapulnak.

    Ebben az esetben a for ciklust a ourAnimals tö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 egy n elemből álló tömb indexei 0 és n-1 kö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 a for hurok 0-nél kezdődjön, növekedjen 1 értékkel, és maxPets-1-nél érjen véget.

    A ourAnimals tömb a következőképpen deklarálva van: string[,] ourAnimals = new string[maxPets, 6];. Tudod, hogy a maxPets értéke 8. Ebben a deklarációban maxPets a 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ár maxPets = 8, a tömbindexek csak 0–tól 7–ig terjednek.

  6. A ciklus vezérlőértékének for megadá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, hogy i < maxPets; az igazodjon a tömb első dimenziójával. Végül, ha az iterátort úgy állítja be, hogy i++, az minden egyes iterációval 1-val növeli a ciklusvezérlés értékét.

  7. Szánj egy percet arra, hogy megfontold a for utasítás és a foreach utasí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 foreach ciklust? Végtére is, tudja, hogy az foreach utasí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 foreach ciklust, mert a ourAnimals tömb egy többdimenziós tömb. Mivel ourAnimals többdimenziós sztringtömbről van szó, minden benne ourAnimals lévő elem egy külön típusú sztringelem. Ha foreach ciklust használtál ourAnimals bejárására, akkor a foreach minden sztringet különálló elemként ismer fel a 48 sztringből álló listában (8 x 6 = 48). Az foreach utasítás nem dolgozná fel külön a két tömbdimenziót. Más szóval, a foreach hurkok nem ismerik fel 8 a karakterlánc elemek sorait, ahol minden sor tartalmaz egy oszlopnyi elemet 6. Mivel egyszerre egy állattal szeretne dolgozni, és egyetlen iteráció során mind a hat állatjellemzőt feldolgozni, egy foreach utasítás nem a megfelelő választás.

    Ha azonban a ourAnimals tömb olyan szaggatott tömb volt, amelyet szöveges tömbök tömbjeként konfiguráltak, akkor használhatja a foreach utasítást. Ebben az esetben először létrehozna egy foreach külső hurkot, majd másodikként egy foreach belső 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 for hurkokat használni a szaggatott tömbök és beágyazott foreach hurkok 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.

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

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

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

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

  1. Hozzon létre egy üres kódsort az utasításkódblokkban az for alábbiak szerint:

    for (int i = 0; i < maxPets; i++)
    {
    
    }    
    
  2. Ha olyan utasítást if szeretne 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 #: ")
        {
        }
    }    
    
  3. Szánjon egy percet, hogy átgondolja, mit értékel ez if az á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ó i a vizsgált állat megadására szolgál. Mint emlékezhet, a 0 in [i, 0] megfelel a petID jellemző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árendelt petID é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árendelt petID alapértelmezett érték. Ha a jellemzők egy állathoz vannak rendelve, az petID érték frissül, és NEM lesz egyenlő az alapértelmezett értékkel.

    Ez azt jelzi, hogy az utasítás kódblokkja if akkor 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ékhez petID van hozzárendelve, amíg nem ez az alapértelmezett érték.

  4. Ha olyan metódust Console.WriteLine() szeretne létrehozni, amely megjeleníti az petIDif utasí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.

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

  6. Nyissa meg az Integrált terminál panelt, és írja be a parancsot a program létrehozásához.

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

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

    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.

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

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

  1. 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]);
        }
    }    
    
  2. 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 for hurok, amely "beágyazott" az első for hurok kódblokkjában. Mint tudja, a külső hurok végighalad a ourAnimals tö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.

  3. Szánjon egy percet a for beírt nyilatkozat áttekintésére.

    Figyelje meg, hogy a ciklusvezérlő változó neve j. Hurkok beágyazásakor az egyik hagyományos módszer for használata a külső hurokban és i a 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ó azint 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 - 5

  4. Ha 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]);
            }
        }
    }    
    
  5. 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ő for hurkok ciklusvezérlési változóit használja.

    A következő elemek mindegyikét ismeri:

    • A tömb első dimenziója ourAnimals a különböző háziállatoknak felel meg.
    • A tömb második dimenziója ourAnimals az egyes kisállatok jellemzőinek felel meg.
    • Az if utasí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.

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

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

  8. Nyisson meg egy terminálpanelt, és hozza létre a programot.

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

  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 az 1 értéket

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

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