Exercice - Générer et tester une boucle pour entrer de nouvelles données d’animal de compagnie

Effectué

Dans cet exercice, vous développez du code qui contrôle l’entrée de nouvelles ourAnimals données de tableau. Vous calculez les valeurs initiales de vos variables de contrôle de boucle et construisez la boucle qui collecte les données spécifiées par l’utilisateur pour les animaux. Les tâches détaillées que vous effectuez pendant cet exercice sont les suivantes :

  1. Calculer petCount : écrivez du code qui compte le nombre d’animaux de compagnie dans le ourAnimals tableau qui ont attribué des données.
  2. Messages conditionnels : écrivez du code pour afficher la sortie du message lorsque petCount est inférieur à maxPets.
  3. Boucle externe : créez une structure de boucle qui sera utilisée pour entrer de nouvelles ourAnimals données de tableau.
  4. Critères de sortie : écrivez du code qui évalue la condition de sortie pour la boucle « Entrer de nouvelles données de tableau OurAnimals ».
  5. 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.

Compter le nombre d’animaux de compagnie dans le tableau ourAnimals

Dans cette tâche, vous établissez les critères de sortie de votre boucle de saisie de données et vous créez une for boucle qui peut être utilisée pour compter le nombre d’animaux de compagnie dans ourAnimals qui ont des données assignées.

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

  2. Recherchez l’instruction switch(menuSelection), puis trouvez la ligne de code case "2":.

  3. Recherchez l’instruction Console.WriteLine() qui affiche le message « bientôt disponible », puis remplacez-le par une ligne de code vide.

  4. Sur la ligne de code vide que vous avez créée, pour déclarer les variables anotherPet et petCount, entrez le code suivant :

    string anotherPet = "y";
    int petCount = 0;
    

    Ces deux variables contrôlent l’itération d’une while boucle utilisée pour entrer de nouvelles données d’animal de compagnie. Vous initialisez les deux variables dans le cadre de la déclaration.

    • anotherPet est initialisé avec une valeur y avant le début de la boucle while. Il recevra une valeur attribuée par l'utilisateur, soit y, soit n à l'intérieur de la boucle while.

    • petCount représente le nombre d’animaux avec des caractéristiques d’animal de compagnie attribuées. Elle se verra attribuer une valeur calculée en dehors de votre while boucle et elle sera incrémentée à 1 à l'intérieur de la while boucle à chaque ajout d’un nouvel animal au tableau ourAnimals.

    Important

    L’étendue de vos variables doit toujours être aussi étroite que possible. Dans l’application Contoso Pets, vous pouvez définir petCount au niveau de l’application au lieu de définir le bloc de code case "2":. La plus grande étendue vous permet d’accéder petCount à partir de n’importe où dans l’application. Si petCount a été étendu au niveau de l'application, vous pouvez lui attribuer une valeur lorsque vous créez les exemples de données et gérer par programmation sa valeur tout au long du reste de l'application. Par exemple, lorsque vous trouvez une maison pour un animal de compagnie et que vous retirez l’animal de la ourAnimals matrice, vous pouvez réduire petCount par 1. La question est : à quel niveau devez-vous étendre une variable lorsque vous ne savez pas si elle sera utilisée dans d’autres parties de votre application ? Dans ce cas, il est tentant d’étendre petCount au niveau de l’application même si vous ne l’utilisez pas ailleurs. Après tout, délimiter petCount au niveau de l’application garantit qu’elle est disponible si vous décidez de l’utiliser ailleurs. Vous pouvez peut-être également étendre d’autres variables au niveau de l’application. De cette façon, vos variables sont toujours visibles et accessibles. Pourquoi ne pas étendre les variables au niveau de l’application quand vous pensez qu’elles peuvent être utilisées ultérieurement dans l’application ? Définir la portée des variables à un niveau supérieur au nécessaire peut entraîner des problèmes. L’étendue élevée augmente les besoins en ressources de votre application et peut exposer votre application à des risques de sécurité inutiles. À mesure que vos applications augmentent et sont plus complexes, elles nécessitent davantage de ressources. Les téléphones et les ordinateurs allouent de la mémoire pour ces ressources au moment où elles sont dans leur portée. À mesure que vos applications deviennent plus « réelles », elles deviennent plus accessibles. Les applications sont souvent accessibles à partir du cloud ou d’autres applications. Pour aggraver ces problèmes, les applications sont souvent laissées tourner lorsqu’elles ne sont pas utilisées. Il est important de garder les exigences de ressources d’une application sous contrôle et l’empreinte de sécurité aussi petite que possible. Bien que les systèmes d’exploitation actuels fassent un excellent travail de gestion des ressources et de sécurisation des applications, il est toujours recommandé de garder vos variables étendues au niveau où elles sont réellement nécessaires. Dans votre application Contoso Pets, si vous décidez d’utiliser petCount plus largement dans l’application, vous pouvez mettre à jour votre code pour qu’il s’applique petCountà un niveau supérieur. N’oubliez pas de garder vos variables délimitées aussi étroitement que possible et d’augmenter leur étendue uniquement lorsqu’elles deviennent nécessaires.

  5. Sur la ligne de code juste en dessous de vos déclarations de variables, pour créer une boucle qui itère à travers les animaux dans le tableau d'animaux ourAnimals, entrez le code suivant :

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

    Ce code doit être familier. Vous utiliserez cette for boucle chaque fois que vous effectuez une itération dans le ourAnimals tableau.

  6. Dans le bloc de code de notre for boucle, pour vérifier si les données des caractéristiques des animaux ont été affectées à un animal, entrez le code suivant :

    if (ourAnimals[i, 0] != "ID #: ")
    {
    }
    

    Là encore, ce code doit être familier. Vous utiliserez cette if instruction chaque fois que vous vérifiez si des caractéristiques d’animal ont été attribuées.

  7. Dans le bloc de code du if que vous avez créé, pour incrémenter petCount de 1, entrez le code suivant :

    petCount += 1;
    
  8. Prenez une minute pour examiner votre boucle terminée for .

    Votre boucle terminée for doit ressembler au code suivant :

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

    Ce code effectue une boucle à travers le tableau ourAnimals en vérifiant les données assignées. Lorsqu’il trouve un animal avec des données attribuées, il incrémente petCounter.

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

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

  11. Corrigez les erreurs de build que vous voyez signalées avant de continuer.

    Remarque

    Pour l'instant, vous pouvez ignorer le message d'avertissement concernant anotherPet qui est attribué mais jamais utilisé. Vous allez ajouter du code qui utilise anotherPet plus loin dans cet exercice.

    Si vous avez des erreurs de compilation, n'oubliez pas que les messages d'erreur et d'avertissement liés à la compilation vous indiquent quel est le problème et où vous pouvez le trouver. Si vous mettez à jour votre code, n’oubliez pas d’enregistrer vos modifications avant de reconstruire.

  12. Fermez le panneau du Terminal.

Afficher la sortie du message lorsque petCount est inférieur à maxPets

Dans cette tâche, vous vérifiez si petCount est inférieur à maxPets et, si tel est le cas, vous affichez un message pour l'utilisateur.

  1. Sur une ligne de code vide sous la boucle for que vous avez créée, pour vérifier si petCount est inférieur à maxPets, entrez le code suivant :

    if (petCount < maxPets)
    {
    }
    
  2. Dans le bloc de code de l’instruction if , pour afficher un message à l’utilisateur, entrez le code suivant :

    Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
    

    Les utilisateurs d’applications sont sur le point d’entrer des caractéristiques d’animal de compagnie. Ce message fournit un contexte important.

  3. Prenez une minute pour passer en revue la case "2": branche de code de votre switch instruction.

    À ce stade, votre case "2": branche de code doit ressembler au code suivant :

    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;
    
  4. Dans le menu Fichier de Visual Studio Code, sélectionnez Enregistrer.

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

  6. Corrigez les erreurs de build que vous voyez signalées avant de continuer.

    Là encore, vous pouvez ignorer le message d’avertissement concernant anotherPet qui est affecté mais jamais utilisé. Dans la tâche suivante, vous allez commencer à créer la while boucle utilisée pour entrer les données d’un ou plusieurs animaux domestiques. L’expression que vous créez pour la while boucle utilise anotherPet et ce message d’avertissement disparaît.

    N’oubliez pas que les messages d’avertissement sont des éléments dont vous devez vous soucier, mais ils ne vous empêcheront pas d’exécuter votre programme.

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

    Tant que votre code ne génère pas d’erreur d’exécution, le menu principal de l’application doit maintenant s’afficher dans le panneau Terminal.

  8. À l’invite de commandes terminal, entrez 2

    Cette valeur correspond à votre case "2": branche de code.

  9. Vérifiez que le message suivant s’affiche dans le terminal.

    We currently have 4 pets that need homes. We can manage 4 more.
    Press the Enter key to continue.
    

    Si vous ne voyez pas le message attendu affiché, passez en revue votre code pour identifier et résoudre le problème. Enregistrez vos modifications, régénérez et réexécutez l’application. Assurez-vous que le code fonctionne comme prévu avant de continuer.

  10. À l’invite de commandes terminal, appuyez sur Entrée pour continuer à exécuter votre application.

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

Créer une structure de boucle qui sera utilisée pour entrer de nouvelles données dans notre tableau d'animaux.

Dans cette tâche, vous créez une while boucle qui continue d'itérer tant que anotherPet est égal(e) à y et que petCount est inférieur(e) à maxPets.

  1. Dans l’Éditeur de code, créez une ligne de code vide sous votre if (petCount < maxPets) bloc de code.

  2. Pour commencer le processus de création de votre nouvelle while boucle, entrez le code suivant :

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. Dans le menu Fichier de Visual Studio Code, sélectionnez Enregistrer.

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

  5. Notez que vous ne recevez plus le message d'avertissement concernant le non-usage de anotherPet.

    Si des erreurs de build ou des avertissements ont été signalés, corrigez les problèmes avant de continuer.

Vérifier la condition de sortie pour la boucle des nouveaux animaux

Dans cette tâche, vous mettez à jour le bloc de while (anotherPet == "y" && petCount < maxPets) code. Le nouveau code incrémente petCount puis vérifie si petCount est inférieur à maxPets. Si petCount est inférieur à maxPets, vous demandez à l'Utilisateur s'il souhaite entrer des informations pour un autre animal de compagnie, et assurez-vous que la réponse soit y soit n. Après le bloc de while (anotherPet == "y" && petCount < maxPets) code, vous vérifiez la valeur de petCount. Si petCount c’est égal à maxPets, vous informez l’utilisateur qu’aucun animal de compagnie ne peut plus être ajouté.

Remarque

Le code utilisé pour entrer des données d’animal de compagnie est développé dans l’exercice suivant. Pour l’instant, petCount est incrémenté comme si des données étaient entrées et enregistrées dans le ourAnimals tableau. Cela vous permet de terminer le développement de la logique de code associée à la while boucle.

  1. Créez une ligne de code vide à l’intérieur du bloc de code de la while (anotherPet == "y" && petCount < maxPets) boucle que vous avez créée dans la tâche précédente.

  2. Pour incrémenter petCount, entrez le code suivant :

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. Pour vérifier si petCount est inférieur à maxPets, entrez le code suivant :

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. Dans le bloc de code de l’instruction if que vous avez créée, pour demander à l’utilisateur s’il souhaite ajouter un autre animal de compagnie, entrez le code suivant :

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. Sous le WriteLine() message que vous avez entré, pour lire la réponse de l’utilisateur et vérifier que l’utilisateur a entré « y » ou « n », entrez le code suivant :

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. Recherchez l’instruction break qui sépare case "2"; de case "3"; dans votre instruction switch.

  7. Notez les instructions Console.WriteLine() et Console.ReadLine() à la fin de notre code case "2";.

    Ce code affiche un message à l’utilisateur, puis suspend l’application.

  8. Pour placer les instructions Console.WriteLine() et Console.ReadLine() dans une instruction if, mettez à jour votre code comme suit :

    
    if (petCount >= maxPets)
    {
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
    break;
    
    case "3":
    

    La valeur de petCount est incrémentée dans la boucle while. Si petCount c’est égal à maxPets, aucun animal de compagnie ne peut être ajouté au ourAnimals tableau. Vous devez informer l’utilisateur quand cela se produit.

  9. Pour informer l’utilisateur que Contoso Pets a atteint sa capacité, mettez à jour votre code comme suit :

    
        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":
    
  10. Prenez une minute pour passer en revue le code dans votre while boucle et le message utilisateur que vous avez créé.

    Votre while (anotherPet == "y" && petCount < maxPets) boucle et votre code qui affiche le message utilisateur doivent ressembler au code suivant :

    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();
    }
    
  11. Dans le menu Fichier de Visual Studio Code, sélectionnez Enregistrer.

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

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

Vérifier votre travail

Dans cette tâche, vous exécutez notre application à partir du terminal intégré et vérifiez que la logique de bouclage et de branchement que vous avez créée fonctionne comme prévu.

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

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

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

  4. Vérifiez que les messages suivants s’affichent :

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  5. À l’invite de commande du terminal, entrez n

  6. Vérifiez que votre code quitte la boucle permettant d’entrer de nouveaux animaux quand vous avez entré « n ».

    Si votre logique de code fonctionne comme prévu, vous devez voir le menu principal affiché dans le terminal.

    Si votre code ne quitte pas la boucle lorsque prévu, appuyez sur Ctrl + C dans le terminal pour forcer l’exécution à arrêter. Vous devez parcourir votre code manuellement et suivre les valeurs des variables de critères de sortie. Mettez à jour votre code si nécessaire pour vous assurer que vous quittez la while boucle lorsque l’utilisateur entre « n ». Enregistrez vos modifications, régénérez votre programme et exécutez le test de vérification pour revenir à ce stade.

  7. À l’invite de commandes terminal, entrez 2

    Une fois de plus, les messages suivants s’affichent :

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  8. À l’invite de commandes terminal, entrez y

  9. Prenez une minute pour considérer l'utilisation de petCount dans votre code.

    Vous devez comprendre votre logique de code avant de pouvoir valider votre code.

    Dans ce cas, votre logique de code repose sur la relation entre petCount et maxPets. Vous savez que maxPets est assigné à une valeur de 8, mais qu’en est-il de petCount ? Les éléments suivants permettent d’évaluer la logique que vous avez implémentée :

    • Vous savez que petCount c’est 4 quand vous entrez la première itération de la while boucle.

    • Vous savez que petCount est incrémenté à chaque fois que la boucle while itère.

    • Vous savez que la valeur attribuée à petCount et la manière dont petCount est incrémenté affectent le stockage des données dans le tableau ourAnimals. Les éléments suivants expliquent la relation entre petCount les données stockées dans ourAnimals:

      • L’application ajoute quatre animaux de compagnie au ourAnimals tableau lorsqu’elle crée les exemples de données.
      • L'application stocke de nouvelles données dans le tableau ourAnimals lorsque la valeur de petCount est 4. Ce n’est pas un bogue. Le code est judicieux lorsque vous rappelez que les éléments de tableau sont de base zéro. Par exemple, ourAnimals[0,0] contient l’ID de l’animal 1 et ourAnimals[3,0] contient l’ID de l’animal 4. Par conséquent, lorsque petCount4 vous stockez des données pour le cinquième animal de compagnie.
      • L’application stocke les données d’animaux dans le tableau avant l'incrémentation de petCount.
      • L’application incrémente petCount avant de demander à l’utilisateur s’il souhaite ajouter un autre animal.
      • Lorsque l’application affiche l’invite Voulez-vous entrer des informations pour un autre animal (o/n) pour la première fois, petCount est déjà réglé sur 5.
    • Si l'utilisateur saisit y lorsqu'on lui demande pour la première fois « Voulez-vous entrer des informations pour un autre animal (y/n) », vous savez que :

      • La while (anotherPet == "y" && petCount < maxPets) boucle effectue une itération. Vous savez que la boucle itérera parce que anotherPet == "y" et petCount < maxPets.
      • La valeur affectée à petCount sera incrémentée (à chaque itération de la boucle while).
      • La valeur affectée sera petCount6 (après que l’utilisateur entre y la première fois).

    Gardez à l’esprit cette analyse de la logique de code lorsque vous continuez à tester l’application.

  10. Notez que le panneau Terminal est mis à jour avec le même message « un autre animal de compagnie ? », mais votre code n’affiche pas de mise à jour petCount.

    Le panneau Terminal doit maintenant afficher la sortie suivante :

    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)
    
  11. À l’invite de commandes terminal, entrez y

    Lorsque vous entrez y une deuxième fois, petCount est incrémenté à 7. Donc petCount , c’est encore moins que maxPets

  12. À l’invite de commandes terminal, entrez y

    Lorsque vous entrez y une troisième fois, petCount est incrémenté à 8. Donc petCount est maintenant égal à maxPets

  13. Vérifiez que votre code quitte la while boucle lorsque vous entrez y la troisième fois.

    Le panneau Terminal doit maintenant afficher la sortie suivante :

    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.
    

    Si votre code ne quitte pas la boucle lorsque prévu, parcourez votre code manuellement et tracez les valeurs des variables de critères de sortie. Mettez à jour votre code pour vous assurer que vous quittez la boucle lorsqu’elle petCount atteint une valeur égale à maxPets. Continuez à répondre à « y » jusqu’à ce que vous sachiez que c’est petCount égal à maxPets, qui a une valeur par défaut de 8.

  14. À l’invite de commandes terminal, appuyez sur Entrée pour continuer à exécuter votre application.

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