Exercice - Écrire du code pour afficher les données du tableau ourAnimals

Effectué

Dans cet exercice, vous écrivez la structure de boucle imbriquée et le bloc de code de sélection utilisés pour afficher les informations du tableau ourAnimals. Les tâches détaillées que vous effectuez pendant cet exercice sont les suivantes :

  1. Boucle externe : créer la boucle externe qui itère à travers les animaux dans le tableau ourAnimals.
  2. Vérification des données : écrivez du code qui vérifie les données d’animaux de compagnie existantes et affiche l’ID d’animal si des données existent pour un animal de compagnie.
  3. Boucle interne : créez une boucle interne qui affiche toutes les caractéristiques des animaux de compagnie avec les données attribuées.
  4. Test de vérification : effectuez des tests de vérification pour le code que vous développez dans cet exercice.

Important

Vous devez effectuer l’exercice précédent dans ce module avant de commencer cet exercice.

Créer une boucle pour itérer dans le tableau ourAnimals

Dans cette tâche, vous créez la boucle externe for utilisée pour parcourir les animaux dans le tableau ourAnimals. Vous examinez la relation entre les dimensions de votre tableau et les paramètres de votre for boucle. Vous considérez également les différences entre l’utilisation d’instructions for et d’instructions foreach lors du travail avec des tableaux multidimensionnels.

  1. Vérifiez que Visual Studio Code est ouvert et que votre fichier Program.cs est visible dans l’éditeur.

  2. Dans le bloc de code de l’instruction switch(menuSelection) de sélection, recherchez les lignes de code suivantes :

    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. Supprimez l’instruction Console.WriteLine() utilisée pour afficher le message « bientôt disponible » et laissez une ligne de code vide sous la ligne de commentaire de // List all of our current pet information code.

    Le message de commentaires n’est pas nécessaire, car vous affichez le contenu du ourAnimals tableau. Lorsque vous développez le code correspondant aux autres sélections de menu, ces messages de commentaires seront également mis à jour.

    Laissez le message qui indique Press the Enter key to continue.

  4. À partir de la ligne de code vide que vous avez créée, commencez une for instruction comme suit :

    for ()
    {
    }
    
  5. Prenez une minute pour prendre en compte ce que vous devez réaliser avec cette for déclaration.

    Rappelez-vous qu’une for instruction comporte trois parties qui contrôlent la façon dont elle implémente des itérations : l’initialiseur ; la condition et l’itérateur. Les valeurs affectées à l’initialiseur, pour la condition et pour l’itérateur sont basées sur ce que vous devez obtenir avec l’instruction for .

    Dans ce cas, la for boucle est utilisée pour itérer dans le ourAnimals tableau. Vous savez que les tableaux sont indexés zéro, ce qui signifie qu’un tableau avec n des éléments est indexé à partir de 0n-1. Vous avez besoin de l'initialiseur, de la condition et de l’itérateur pour que cela corresponde aux dimensions du tableau. Dans ce cas, vous souhaitez que la for boucle commence à 0, incrémente par 1et se termine à maxPets-1.

    Votre ourAnimals tableau est déclaré comme suit : string[,] ourAnimals = new string[maxPets, 6];. Vous savez que la valeur affectée maxPets est 8. Dans cette déclaration, maxPets spécifie le nombre d’éléments dans la première dimension du tableau, et non le numéro d’index de base zéro que vous utilisez pour référencer des éléments dans le tableau. Par conséquent, bien que maxPets = 8les numéros d’index de tableau varient de 0 à 7.

  6. Pour spécifier la valeur de contrôle de votre for boucle, mettez à jour votre code comme suit :

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

    Comme vous pouvez le voir, définir l’initialiseur sur int i = 0; s’aligne sur l’index commençant à zéro du tableau. De même, la définition de la condition à i < maxPets; s'aligne sur la première dimension du tableau. Enfin, définir l’itérateur sur i++ va incrémenter la valeur de votre contrôle de boucle de 1 pour chaque itération.

  7. Prenez le temps de considérer le choix entre une instruction for et une instruction foreach lors de l’itération dans le tableau ourAnimals.

    L’objectif est d’itérer sur chaque animal du tableau ourAnimals un par un. Pourquoi ne pas utiliser une foreach boucle ? Après tout, vous savez que l’instruction foreach est conçue pour les cas où vous souhaitez effectuer une itération dans chaque élément d’un tableau d’éléments.

    La raison pour laquelle vous n’utilisez pas de foreach boucle dans cette situation est parce que le ourAnimals tableau est un tableau multidimensionnel. "Donné qu’il s’agit d’un tableau de chaînes multidimensionnel, chaque élément contenu dans ourAnimals est un élément distinct de type chaîne." Si vous avez utilisé une foreach boucle pour itérer à travers ourAnimals, le foreach reconnaîtrait chaque chaîne de caractères comme un élément distinct dans une liste de 48 chaînes de caractères (8 x 6 = 48). L’instruction foreach ne traiterait pas séparément les deux dimensions du tableau. En d’autres termes, une boucle foreach ne va pas reconnaître 8 lignes d’éléments de type chaîne, où chaque ligne contient une colonne de 6 éléments. Étant donné que vous souhaitez travailler avec un animal à la fois et traiter les six caractéristiques animales pendant une seule itération, une foreach instruction n’est pas le bon choix.

    Cependant, si le tableau ourAnimals était un tableau irrégulier configuré comme tableau de tableaux de chaînes, vous pourriez utiliser une instruction foreach. Dans ce cas, vous allez créer une foreach boucle externe et une seconde foreach pour une boucle interne. La boucle externe va itérer à travers les éléments du « tableau de chaînes » dans le tableau irrégulier. Les tableaux de chaînes sont les « lignes » dans le tableau à deux dimensions. La boucle interne va itérer à travers les éléments « chaîne » contenus dans le tableau de chaînes. Les éléments de chaîne dans les tableaux de chaînes sont les « colonnes » dans le tableau à deux dimensions.

    L’exemple de code suivant montre l’approche pour ce tableau irrégulier.

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

    Pour l’application Contoso Pets, il est probablement plus facile d’utiliser un tableau de chaînes multidimensionnel et des boucles imbriquées for plutôt qu’un tableau en jaquet et des boucles imbriquées foreach . Maintenant que vous voyez comment chaque option fonctionne, vous pouvez faire votre propre choix dans les futurs projets de codage.

  8. Dans le menu Fichier Visual Studio Code, sélectionnez Enregistrer.

  9. Ouvrez le panneau Terminal intégré dans Visual Studio Code et entrez la commande pour générer votre programme.

    Pour ouvrir le terminal d’intégration à partir de l’affichage Explorateur, cliquez avec le bouton droit sur Starter, puis sélectionnez Ouvrir dans le terminal intégré. Vous pouvez également utiliser le menu Affichage ou Terminal pour ouvrir le panneau Terminal intégré.

    Pour générer votre programme, entrez la commande dotnet build depuis le terminal.

  10. Corrigez les erreurs de build ou les avertissements signalés avant de continuer.

    Rappelez-vous que les messages d’erreur et d’avertissement de la build vous indiquent quel est le problème et où vous pouvez le trouver. Lors de la résolution des problèmes, il est préférable de commencer par les problèmes qui se produisent en haut de votre code et de descendre.

  11. Fermez le panneau du Terminal.

Rechercher les données d’animaux de compagnie existantes et afficher le résultat

Dans cette tâche, vous utilisez une if instruction pour rechercher chaque animal de compagnie dans le ourAnimals tableau qui a été affecté aux données des caractéristiques de l’animal. Lorsqu’un animal de compagnie avec des données attribuées est trouvé, vous affichez le petID. Quand aucune donnée n’est attribuée, rien n’est affiché. Vous exécutez le code pour vérifier que vos instructions for et if fonctionnent correctement.

  1. Créez une ligne de code vide à l’intérieur de votre for bloc de code d’instruction comme suit :

    for (int i = 0; i < maxPets; i++)
    {
    
    }    
    
  2. Pour créer une if instruction qui vérifie les données d’ID d’animal de compagnie, mettez à jour votre code comme suit :

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
        }
    }    
    
  3. Prenez une minute pour prendre en compte ce que cette if déclaration évalue et pourquoi.

    Tout d’abord, considérez le côté gauche de l’expression : ourAnimals[i, 0]. Notez que la variable i de contrôle de boucle est utilisée pour spécifier l’animal examiné. Comme vous vous en souvenez peut-être, l’élément 0 dans [i, 0] correspond à la caractéristique petID. Étant donné que la première dimension du tableau correspond au « nombre » de l’animal, ce côté de l’expression garantit que votre code vérifie la valeur affectée à petID chaque animal du tableau.

    Ensuite, considérez le choix de l’opérateur de comparaison. Notez que l’opérateur non égal != est utilisé. L’expression évalue comme true chaque fois que la valeur affectée à petID, ourAnimals[i, 0]n’est PAS égale à la valeur répertoriée sur le côté droit de l’équation.

    Troisièmement, considérez la valeur sur le côté droit de l’équation. Notez qu'une valeur de chaîne statique est utilisée avec "ID #: ". Il s’agit de la valeur par défaut affectée à petID lorsque l’exemple de données est généré. Lorsque les caractéristiques sont affectées à un animal, la petID valeur est mise à jour et n’est PAS égale à la valeur par défaut.

    Cela vous indique que le bloc de code de l’instruction if sera exécuté lorsque l’animal actuel a des caractéristiques définies.

    Remarque

    Il s’agit d’un bon exemple pour quand != doit être utilisé. Vous ne vous souciez pas de la valeur attribuée à petID tant qu'elle n'est pas la valeur par défaut.

  4. Pour créer une Console.WriteLine() méthode qui affiche le petID à l'intérieur du bloc de code de l'instruction if, mettez à jour votre code comme suit :

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

    Notez qu’un élément de tableau peut être utilisé comme argument lors de l’appel de la WriteLine() méthode.

  5. Dans le menu Fichier Visual Studio Code, sélectionnez Enregistrer.

  6. Ouvrez le panneau Terminal intégré et entrez la commande pour générer votre programme.

  7. Corrigez les erreurs de build ou les avertissements signalés avant de continuer.

  8. À l’invite de commandes du terminal, entrez la commande pour exécuter votre programme.

    Entrez la dotnet run commande à l’invite de commandes terminal pour exécuter votre code de programme.

    Si votre code génère une erreur d’exécution, corrigez les erreurs, enregistrez vos mises à jour et redémarrez l’application.

  9. À l’invite de commandes terminal, pour vérifier que votre nouvelle logique de code fonctionne comme prévu, entrez 1

    Les valeurs suivantes petID doivent s’afficher :

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

    Ces ID correspondent aux animaux de compagnie qui ont attribué des données.

    Si votre code affiche une sortie différente lorsque vous sélectionnez l’option de menu 1, passez en revue et mettez à jour votre code. N’oubliez pas que vous devez enregistrer votre fichier Program.cs après avoir effectué des mises à jour.

  10. Quittez l’application, puis fermez le panneau Terminal.

Afficher toutes les caractéristiques des animaux de compagnie avec des données attribuées

Dans cette tâche, vous créez une boucle for à l’intérieur du bloc de code de l’instruction if qui est utilisée pour afficher toutes les caractéristiques de l’animal considéré.

  1. Dans l’Éditeur de code, recherchez les lignes de code suivantes dans votre fichier Program.cs :

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    
  2. Pour créer la for boucle qui itérera à travers les caractéristiques de chaque animal de compagnie, mettez à jour votre code comme suit :

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

    Notez que vous disposez maintenant d’une deuxième for boucle « imbriquée » dans le bloc de code de la première for boucle. Comme vous le savez, la boucle externe itère dans les animaux du tableau ourAnimals. L’intention est que la boucle interne itère à travers les caractéristiques de chaque animal. Étant donné que les données animales sont stockées dans un tableau multidimensionnel, il sera facile d’accéder aux caractéristiques animales.

  3. Prenez une minute pour passer en revue l’instruction for que vous avez entrée.

    Notez que la variable de contrôle de boucle est nommée j. Lorsque vous imbriquez des boucles for, une approche conventionnelle consiste à utiliser i dans la boucle externe et j dans la boucle interne. Les conventions comme celles-ci facilitent la lecture de votre code par d’autres utilisateurs.

    Étant donné que six caractéristiques sont stockées pour chaque animal, l’initialiseur est int j = 0; et la condition est j < 6;. Cette combinaison d’initialiseur et de condition correspond à la plage d’index de tableau dont vous avez besoin. 0 - 5

  4. Pour afficher chaque caractéristique d’un animal sur une ligne distincte, mettez à jour votre code comme suit :

    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. Prenez une minute pour prendre en compte la structure imbriquée que vous avez créée et la sortie affichée que votre code produira.

    Notez que la valeur écrite dans la console, ourAnimals[i, j]utilise les variables de contrôle de boucle à partir des boucles externes et internes for .

    Vous connaissez chacun des éléments suivants :

    • La première dimension du ourAnimals tableau correspond aux différents animaux domestiques.
    • La deuxième dimension du ourAnimals tableau correspond aux caractéristiques de chaque animal de compagnie.
    • L’instruction if empêche l’exécution de la boucle interne quand aucune donnée n’est affectée à l’animal considéré.
    • La boucle interne termine toutes ses itérations pour chaque itération de la boucle externe.

    Par conséquent, vous savez que les caractéristiques de chaque animal seront affichées comme prévu.

  6. Pour remplacer le message petID par un message vide WriteLine(), mettez à jour votre code comme suit :

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

    Cette dernière mise à jour permet de mieux voir la séparation entre les animaux quand votre sortie est affichée sur la console.

  7. Dans le menu Fichier Visual Studio Code, sélectionnez Enregistrer.

  8. Ouvrez un volet Terminal et générez le programme.

  9. Corrigez les erreurs de build ou les avertissements signalés avant de continuer.

Vérifier votre travail

Dans cette tâche, vous exécutez votre application à partir du terminal intégré et vérifiez que votre combinaison imbriquée d’instructions for et if produit le résultat attendu.

  1. Si nécessaire, ouvrez le panneau Terminal intégré de Visual Studio Code.

  2. À l’invite de commandes terminal, entrez dotnet run

  3. À l’invite de commandes terminal, entrez 1

  4. Vérifiez que les données des animaux de compagnie sont affichées pour les quatre animaux de compagnie auxquels des données ont été attribuées.

    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.
    

    Remarque

    Si vous ne voyez pas les résultats attendus affichés, vérifiez que vous avez enregistré votre fichier Program.cs mis à jour. Si vous ne voyez pas les résultats attendus et que vous ne pouvez pas identifier le problème, vous pouvez examiner le code Program.cs dans le dossier Final. Le dossier final est inclus dans le cadre du téléchargement que vous avez effectué lors de l’installation. Nous vous recommandons de passer du temps à essayer d’identifier et de résoudre le problème de syntaxe et de logique dans votre code avant de vérifier le fichier Program.cs dans le dossier Final.

  5. Quittez l’application, puis fermez le panneau Terminal.