Exercițiul - Scrieți codul pentru a afișa toate datele noastre matriceAnimals

Finalizat

În acest exercițiu, scrieți structura imbricată de buclare și blocul de cod de selecție utilizat pentru a afișa informațiile matricei NoastreAnimals. Activitățile detaliate pe care le efectuați în timpul acestui exercițiu sunt:

  1. Buclă exterioară: construiește bucla exterioară care iterează prin animalele din matricea NoastrăAnimale.
  2. Verificarea datelor: scrieți cod care verifică datele de companie existente și afișează ID-ul de companie dacă există date pentru un animal de companie.
  3. Buclă internă: construiți o buclă internă care afișează toate caracteristicile animalelor de companie pentru animale de companie cu date atribuite.
  4. Test de verificare: efectuați teste de verificare pentru codul pe care îl dezvoltați în acest exercițiu.

Important

Trebuie să finalizați exercițiul anterior din acest modul înainte de a începe acest exercițiu.

Construiți o buclă pentru a parcurge matricea noastrăAnimals

În această activitate, creați bucla exterioară for utilizată pentru a itera prin animalele din ourAnimals matrice. Examinați relația dintre dimensiunile matricei și parametrii buclei for . De asemenea, luați în considerare diferențele dintre utilizarea for instrucțiunilor și foreach instrucțiunilor atunci când lucrați cu matrice multidimensionale.

  1. Asigurați-vă că este deschis Visual Studio Code și că fișierul Program.cs este vizibil în Editor.

  2. În interiorul blocului de cod pentru instrucțiunea de switch(menuSelection) selecție, găsiți următoarele linii de cod:

    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. Ștergeți instrucțiunea Console.WriteLine() utilizată pentru a afișa mesajul "în curând" și lăsați o linie de cod necompletată sub linia de comentariu a // List all of our current pet information codului.

    Mesajul de feedback nu va fi necesar, deoarece veți afișa conținutul matricei ourAnimals . Pe măsură ce dezvoltați codul corespunzător celorlalte selecții de meniu, aceste mesaje de feedback vor fi actualizate și ele.

    Lăsați mesajul care spune Press the Enter key to continue.

  4. Începând cu linia de cod necompletată pe care ați creat-o, începeți o for instrucțiune după cum urmează:

    for ()
    {
    }
    
  5. Luați un minut pentru a lua în considerare ceea ce trebuie să realizați cu acest for angajament.

    Rețineți că o for instrucțiune are trei părți care controlează modul în care implementează iterații: inițializatorul,condiția pentru șiiterator. Valorile atribuite inițializatorului,pentru condiție și pentru iterator se bazează pe ceea ce trebuie să obțineți cu instrucțiunea for .

    În acest caz, bucla for este utilizată pentru a itera prin ourAnimals matrice. Știți că matricele sunt zero indexate, ceea ce înseamnă că o matrice cu n elemente este indexată de la la 0 la n-1. Aveți nevoie de inițializatorul pentrucondiție și ca iteratorul să se potrivească dimensiunilor matricei. În acest caz, doriți ca bucla for să înceapă de la 0, incrementare cu 1și să se termine la maxPets-1.

    Matricea este ourAnimals declarată după cum urmează: string[,] ourAnimals = new string[maxPets, 6];. Știți că valoarea atribuită maxPets este 8. În această declarație, maxPets specifică numărul de elemente din prima dimensiune a matricei, nu numărul indexului bazat pe zero pe care îl utilizați pentru a face referire la elementele din matrice. Prin urmare, deși maxPets = 8, zona de numere index matrice de la până la 07.

  6. Pentru a specifica valoarea controlului buclei for , actualizați codul după cum urmează:

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

    După cum puteți vedea, setarea pentru inițializator pentru a int i = 0; se alinia cu indexul matricei bazate pe zero. La fel, setarea condiției pentru a se i < maxPets; alinia cu prima dimensiune a matricei. În sfârșit, setarea pentru ca iteratoruli++ incrementeze valoarea 1 controlului buclei pentru fiecare iterație.

  7. Luați un minut pentru a lua în considerare alegerea dintre o for declarație și o foreach declarație atunci când iterați prin matricea noastrăAnimals.

    Scopul este de a itera prin fiecare animal din matricea NoastrăAnimale pe rând. Deci, de ce nu folosiți o buclă foreach ? La urma urmei, știți că instrucțiunea foreach este proiectată pentru cazuri atunci când doriți să iterați prin fiecare element dintr-o matrice de elemente.

    Motivul pentru care nu utilizați o foreach buclă în această situație este că matricea ourAnimals este multidimensională. Deoarece ourAnimals este o matrice de șiruri multidimensionale, fiecare element din interior ourAnimals este un element separat de tip șir. Dacă ați utilizat o foreach buclă de iterat prin ourAnimals, foreach fiecare șir ar recunoaște fiecare șir ca element separat într-o listă de 48 de elemente de șir (8 x 6 = 48). Instrucțiunea foreach nu ar procesa cele două dimensiuni matrice separat. Cu alte cuvinte, o foreach buclă nu va recunoaște 8 rândurile de elemente de șir, unde fiecare rând conține o coloană de 6 elemente. Deoarece doriți să lucrați cu un singur animal o dată și să procesați toate cele șase caracteristici ale animalelor în timpul unei singure iterații, o foreach declarație nu este alegerea potrivită.

    Cu toate acestea, dacă matricea ourAnimals a fost o matrice zimțată configurată ca matrice de șiruri, puteți utiliza o foreach instrucțiune. În acest caz, creați o foreach buclă exterioară și o secundă foreach pentru o buclă internă. Bucla exterioară s-ar itera prin elementele "matrice șir" din matricea zimțată. Matricele de șiruri sunt "rândurile" din matricea bidimensională. Bucla internă ar itera prin elementele "șir" conținute în matricele de șiruri. Elementele șir din matricele de șiruri sunt "coloanele" din matricea bidimensională.

    Următorul exemplu de cod demonstrează abordarea matricei zimțate.

    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();
    }
    

    Pentru aplicația Contoso Pets, probabil că este mai ușor să utilizați o matrice șir multidimensională și bucle imbricate for , nu o matrice foreach și bucle imbricate. Acum, că vedeți cum funcționează fiecare opțiune, puteți alege propria opțiune în proiectele de codificare viitoare.

  8. În meniul Fișier Visual Studio Code, selectați Salvare.

  9. Deschideți panoul Terminal integrat în Visual Studio Code și introduceți comanda Construiți programul.

    Pentru a deschide Terminalul de integrare din vizualizarea EXPLORER, faceți clic dreapta pe Starter, apoi selectați Deschidere în terminal integrat. De asemenea, puteți utiliza meniul Vizualizare sau Terminal pentru a deschide panoul Terminal integrat.

    Pentru a vă construi programul, introduceți dotnet build comanda din linia de comandă Terminal.

  10. Remediați orice erori de compilare sau avertismente pe care le vedeți raportate înainte de a continua.

    Rețineți că mesajele de eroare și avertizare de compilare vă spun care este problema și unde o puteți găsi. Atunci când rezolvați problemele, se recomandă să începeți cu problemele care apar în partea de sus a codului și să lucrați în jos.

  11. Închideți panoul Terminal.

Verificarea datelor de companie existente și afișarea rezultatului

În această activitate, utilizați o if instrucțiune pentru a găsi fiecare animal de companie din matricea ourAnimals care a fost atribuită datelor despre caracteristicile de companie. Atunci când se găsește un animal de companie cu date atribuite, afișați ID-ul de companie. Atunci când nu există date atribuite, nu se afișează nimic. Rulați codul pentru a verifica dacă for instrucțiunile dvs. și if cele funcționează corect.

  1. Creați o linie de cod necompletată în interiorul blocului de cod de instrucțiune for , după cum urmează:

    for (int i = 0; i < maxPets; i++)
    {
    
    }    
    
  2. Pentru a crea o if instrucțiune care verifică dacă există date despre ID-ul de companie, actualizați codul după cum urmează:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
        }
    }    
    
  3. Luați un minut pentru a lua în considerare ce evaluează acest if angajament și de ce.

    Mai întâi, luați în considerare partea stângă a expresiei: ourAnimals[i, 0]. Observați că variabila i de control a buclei este utilizată pentru a specifica animalul care este examinat. După cum este posibil să vă reamintiți, elementele 0 în [i, 0] corespund caracteristice petID . Deoarece prima dimensiune a matricei corespunde cu "numărul" animalului, această parte a expresiei asigură că codul verifică valoarea atribuită petID fiecărui animal din matrice.

    În al doilea rând, luați în considerare alegerea operatorului de comparație. Observați că operatorul nu este egal cu, !=este utilizat. Expresia se evaluează ca true oricând valoarea atribuită petID, ourAnimals[i, 0], NU este egală cu valoarea listată în partea dreaptă a ecuației.

    În al treilea rând, luați în considerare valoarea din partea dreaptă a ecuației. Observați că se utilizează o valoare de șir statică a "ID #: " . Aceasta este valoarea implicită atribuită petID atunci când se generează datele eșantion. Atunci când caracteristicile sunt atribuite unui animal, petID valoarea este actualizată și NU va fi egală cu valoarea implicită.

    Acest lucru vă spune că blocul de cod de if instrucțiune va fi executat atunci când animalul curent are caracteristicile definite.

    Notă

    Acesta este un exemplu bun pentru când != ar trebui utilizat. Nu vă pasă la ce valoare este atribuită petID atât timp cât nu este valoarea implicită.

  4. Pentru a crea o Console.WriteLine() metodă care să afișeze blocul petID de cod din if instrucțiune, actualizați codul după cum urmează:

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

    Observați că un element matrice poate fi utilizat ca argument atunci când apelați WriteLine() metoda.

  5. În meniul Fișier Visual Studio Code, selectați Salvare.

  6. Deschideți panoul Terminal integrat și introduceți comanda Construiți programul.

  7. Remediați orice erori de compilare sau avertismente pe care le vedeți raportate înainte de a continua.

  8. În linia de comandă Terminal, introduceți comanda pentru a rula programul.

    dotnet run Introduceți comanda în linia de comandă Terminal pentru a rula codul de program.

    Dacă codul generează o eroare la momentul rulării, remediați erorile, salvați actualizările și reporniți aplicația.

  9. În linia de comandă Terminal, pentru a verifica dacă noua logică de cod funcționează așa cum vă așteptați, introduceți 1

    Ar trebui să vedeți următoarele petID valori afișate:

    ID #: d1
    ID #: d2
    ID #: c3
    ID #: c4
    Press the Enter key to continue.
    

    Aceste ID-uri corespund animalelor de companie care au atribuit date.

    Dacă codul afișează ieșire diferită atunci când selectați opțiunea de meniu 1, revizuiți și actualizați codul. Rețineți că trebuie să salvați fișierul Program.cs după ce efectuați actualizări.

  10. Ieșiți din aplicație, apoi închideți panoul Terminal.

Afișarea tuturor caracteristicilor de companie pentru animale de companie cu date atribuite

În această activitate, creați o for buclă în interiorul blocului de cod de if instrucțiune utilizat pentru a afișa toate caracteristicile animalelor de companie curente.

  1. În Editorul de cod, găsiți următoarele linii de cod în fișierul Program.cs:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    
  2. Pentru a crea bucla for care se va itera prin caracteristicile fiecărui animal de companie, actualizați codul după cum urmează:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
            for (int j = 0; j < 6; j++)
            {
            }
        }
    }    
    

    Observați că acum aveți o a doua for buclă care este "imbricată" în interiorul blocului de cod al primei for bucle. După cum știți, bucla exterioară iterează prin animalele din ourAnimals matrice. Intenția este ca bucla interioară să itereze prin caracteristicile fiecărui animal. Deoarece datele despre animale sunt stocate într-o matrice multidimensională, acestea vor fi ușor de accesat caracteristicile animalelor.

  3. Citiți un minut pentru a revizui declarația for pe care ați introdus-o.

    Observați că variabila de control buclă se numește j. Atunci când imbricați for bucle, o abordare convențională este să o utilizați i în bucla exterioară și j în bucla interioară. Urmărirea convențiilor ca aceasta simplifică citirea codului de către alte persoane.

    Deoarece sunt stocate șase caracteristici pentru fiecare animal, inițializatorulint j = 0; este și condiția este j < 6;. Această combinație de inițializator și condiție se potrivește cu zona indexului matricei de care aveți nevoie, 0 - 5.

  4. Pentru a afișa fiecare caracteristică a unui animal de companie pe o linie separată, actualizați codul după cum urmează:

    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. Aveți nevoie de un minut pentru a lua în considerare structura imbricată pe care ați creat-o și rezultatul afișat pe care îl va produce codul.

    Observați că valoarea scrisă pe consolă, ourAnimals[i, j]utilizează variabilele de control al buclelor, atât din buclele exterioare, cât și din cele interioare for .

    Știți fiecare dintre următoarele elemente:

    • Prima dimensiune a matricei ourAnimals corespunde diferitelor animale de companie.
    • A doua dimensiune a matricei ourAnimals corespunde caracteristicilor fiecărui animal de companie.
    • Instrucțiunea if împiedică rularea buclei interne atunci când nu există date despre animale de companie atribuite animalelor de companie curente.
    • Bucla internă finalizează toate iterările sale pentru fiecare iterație a buclei exterioare.

    Prin urmare, știți că caracteristicile fiecărui animal vor fi afișate așa cum se intenționează.

  6. Pentru a înlocui mesajul petID cu un cod necompletat WriteLine(), actualizați codul după cum urmează:

    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]);
            }
        }
    }    
    

    Această actualizare finală vă ajută să vedeți separarea între animale de companie atunci când ieșirea este afișată pe consolă.

  7. În meniul Fișier Visual Studio Code, selectați Salvare.

  8. Deschideți un panou terminal și construiți programul.

  9. Remediați orice erori de compilare sau avertismente pe care le vedeți raportate înainte de a continua.

Verificați-vă lucrul

În această activitate, rulați aplicația de la Terminalul integrat și verificați dacă combinația imbricată de for instrucțiuni și if generează rezultatul așteptat.

  1. Dacă este necesar, deschideți panoul Terminal integrat visual Studio Code.

  2. În linia de comandă Terminal, introduceți run dotnet

  3. În linia de comandă Terminal, introduceți 1

  4. Verificați dacă se afișează datele despre animale de companie pentru cei patru animale de companie cărora li s-au atribuit date.

    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.
    

    Notă

    Dacă nu vedeți rezultatele așteptate afișate, asigurați-vă că ați salvat fișierul Program.cs actualizat. Dacă nu vedeți rezultatele așteptate și nu puteți identifica problema, puteți examina codul Program.cs din folderul Final. Folderul Final este inclus ca parte a descărcării pe care ați finalizat-o în timpul instalării. Vă recomandăm să petreceți timp încercând să identificați și să remediați problema de sintaxă și logică din cod înainte de a verifica fișierul Program.cs din folderul Final.

  5. Ieșiți din aplicație, apoi închideți panoul Terminal.