Exercice - Effectuer une activité de défi pour différencier les instructions d’itération do et while

Effectué

Les défis de programmation consolideront ce que vous avez appris et vous permettront de gagner en confiance avant de continuer.

Examiner la différence entre les itérations d’instruction do et while

Comme vous l’avez vu, C# prend en charge quatre types d’instructions d’itération : for, foreach, do-while et while. La documentation de référence sur le langage de Microsoft décrit ces instructions comme suit :

  • L’instruction for exécute son corps tandis qu’une expression booléenne spécifiée (la « condition ») prend la valeur true.
  • L’instruction foreach énumère les éléments d’une collection et exécute son corps pour chaque élément de la collection.
  • L’instruction do-while exécute de manière conditionnelle son corps une ou plusieurs fois.
  • L’instruction while exécute de manière conditionnelle son corps zéro ou plusieurs fois.

Les itérations for et foreach semblent présenter des différences claires, que ce soit entre elles ou avec les itérations do-while et while. Toutefois, les définitions des instructions do-while et while semblent assez similaires. Savoir quand choisir entre do-while et while semble plus arbitraire, et peut même être un peu déroutant. Certains projets de défi peuvent vous aider à faire clairement la différence.

Dans ce défi, vous allez obtenir les conditions applicables à trois projets de codage distincts. Pour chaque projet, vous devez implémenter un bloc de code d’itération à l’aide d’une instruction do-while ou while. Vous devez évaluer les conditions spécifiées afin de choisir entre les instructions do-while et while. Si votre premier choix ne vous donne pas les résultats escomptés, vous pouvez changer en cours de route.

Notes

Vous pouvez utiliser les conditions de votre projet de programmation pour vous aider à choisir entre les instructions do-while et while. Ce que vous savez ou ne savez pas sur l’expression booléenne qui sera évaluée peut parfois vous aider à choisir entre les instructions do-while et while. Dans cet exercice de défi, les conditions du projet incluent des informations qui seront utilisées pour construire l’expression booléenne.

Gérer les entrées utilisateur pendant ce test

Lorsque vous utilisez une Console.ReadLine()instruction pour obtenir une entrée utilisateur, il est courant d’utiliser une chaîne de type Nullable (désignée string?) pour la variable d’entrée, ensuite d’évaluer la valeur entrée par l’utilisateur. L’exemple de code suivant utilise une chaîne de type Nullable pour capturer l’entrée utilisateur. L’itération se poursuit alors que la valeur fournie par l’utilisateur est null :

string? readResult;
Console.WriteLine("Enter a string:");
do
{
    readResult = Console.ReadLine();
} while (readResult == null);

L’expression booléenne évaluée par l’instruction while peut être utilisée pour vérifier que l’entrée utilisateur répond à une exigence spécifiée. Par exemple, si une invite demande à l’utilisateur d’entrer une chaîne comprenant au moins trois caractères, le code suivant peut être utilisé :

string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
    readResult = Console.ReadLine();
    if (readResult != null)
    {
        if (readResult.Length >= 3)
        {
            validEntry = true;
        }
        else
        {
            Console.WriteLine("Your input is invalid, please try again.");
        }
    }
} while (validEntry == false);

Si vous souhaitez utiliser l’entrée Console.ReadLine() pour les valeurs numériques, vous devez convertir la valeur de chaîne en type numérique.

La méthode int.TryParse() peut être utilisée pour convertir une valeur de chaîne en entier. La méthode utilise deux paramètres, une chaîne à évaluer et le nom d’une variable entière à laquelle une valeur va être attribuée. La méthode retourne une valeur booléenne. L’exemple de code suivant montre comment utiliser la méthode int.TryParse() :

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

validNumber = int.TryParse(readResult, out numericValue);

Si la valeur de chaîne affectée à readResult est un entier valide, la valeur est attribuée à la variable entière nommée numericValue, tandis que true est affectée à la variable booléenne nommée validNumber. Si la valeur affectée à readResult ne représente pas un entier valide, la valeur validNumber est affectée à false. Par exemple, si readResult est égal à « 7 », la valeur 7 est affectée à numericValue.

Projet de programmation 1 : écrire du code qui valide l’entrée d’un entier

Voici les conditions que votre premier projet de programmation doit implémenter :

  • Votre solution doit inclure une itération do-while ou while.

  • Avant le bloc d’itération : votre solution doit utiliser une instruction Console.WriteLine() pour demander à l’utilisateur d’entrer une valeur entière comprise entre 5 et 10.

  • À l’intérieur du bloc d’itération :

    • Votre solution doit utiliser une instruction Console.ReadLine() pour obtenir l’entrée de l’utilisateur.
    • Votre solution doit vérifier que l’entrée est une représentation valide d’un entier.
    • Si la valeur entière n’est pas comprise entre 5 et 10, votre code doit utiliser une instruction Console.WriteLine() pour inviter l’utilisateur à entrer une valeur entière comprise entre 5 et 10.
    • Votre solution doit vérifier que la valeur entière est comprise entre 5 et 10 avant de quitter l’itération.
  • Sous (après) le bloc de code d’itération : votre solution doit utiliser une instruction Console.WriteLine() pour informer l’utilisateur que sa valeur d’entrée a été acceptée.

  1. Assurez-vous d’avoir un fichier Program.cs vide ouvert dans Visual Studio Code.

    Si nécessaire, ouvrez Visual Studio Code, puis effectuez les étapes suivantes pour préparer un fichier Program.cs dans l’Éditeur :

    1. Dans le menu Fichier, sélectionnez Ouvrir le dossier.

    2. Utilisez la boîte de dialogue Ouvrir le dossier pour accéder au dossier CsharpProjects et l’ouvrir.

    3. Dans le volet EXPLORATEUR de Visual Studio Code, sélectionnez Program.cs.

    4. Dans le menu Sélection de Visual Studio Code, sélectionnez Tout sélectionner, puis appuyez sur la touche Suppr.

  2. Écrivez le code qui implémente chaque condition pour le projet de code 1.

  3. Exécutez votre application et vérifiez que votre code valide l’entrée utilisateur en fonction des exigences spécifiées.

    Par exemple, quand vous exécutez votre application, elle doit rejeter les valeurs d’entrée « deux » et « 2 », mais elle doit accepter la valeur d’entrée « 7 ».

    Dans l’exemple décrit ci-dessus, la sortie de la console doit ressembler à ce qui suit :

    Enter an integer value between 5 and 10
    two
    Sorry, you entered an invalid number, please try again
    2
    You entered 2. Please enter a number between 5 and 10.
    7
    Your input value (7) has been accepted.
    

Projet de programmation 2 : écrire du code qui valide l’entrée d’une chaîne

Voici les conditions que votre deuxième projet de programmation doit implémenter :

  • Votre solution doit inclure une itération do-while ou while.

  • Avant le bloc d’itération : votre solution doit utiliser une instruction Console.WriteLine() pour demander à l’utilisateur d’entrer l’un des trois noms de rôle suivants : Administrator, Manager ou User.

  • À l’intérieur du bloc d’itération :

    • Votre solution doit utiliser une instruction Console.ReadLine() pour obtenir l’entrée de l’utilisateur.
    • Votre solution doit vérifier que la valeur entrée correspond à l’une des trois options de rôle.
    • Votre solution doit utiliser la méthode Trim() sur la valeur d’entrée pour ignorer les espaces de début et de fin.
    • Votre solution doit utiliser la méthode ToLower() sur la valeur d’entrée pour ignorer la casse.
    • Si la valeur entrée ne correspond pas à l’une des options de rôle, votre code doit utiliser une instruction Console.WriteLine() pour inviter l’utilisateur à fournir une entrée valide.
  • Sous (après) le bloc de code d’itération : votre solution doit utiliser une instruction Console.WriteLine() pour informer l’utilisateur que sa valeur d’entrée a été acceptée.

  1. Commenter tout le code dans le panneau Visual Studio Code Editor

    1. Sélectionner toutes les lignes de code dans l’éditeur de code
    2. Dans le menu Edition, sélectionnez Activer/désactiver le commentaire de bloc.
  2. Écrivez le code qui implémente chaque condition pour le projet de code 2.

  3. Exécutez votre application et vérifiez que votre code valide l’entrée utilisateur en fonction des exigences spécifiées.

    Par exemple, quand vous exécutez votre application, elle doit rejeter la valeur d’entrée « Admin », mais accepter la valeur d’entrée « administrator ».

    La sortie de la console pour cet exemple doit ressembler à ce qui suit :

    Enter your role name (Administrator, Manager, or User)
    Admin
    The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User)
       Administrator
    Your input value (Administrator) has been accepted.
    

Projet de code 3 – Écrire du code qui traite le contenu d’un tableau de chaînes

Voici les conditions que votre troisième projet de programmation doit implémenter :

  • Votre solution doit utiliser le tableau de chaînes suivant pour représenter l’entrée de votre logique de programmation :

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • Votre solution doit déclarer une variable entière nommée periodLocation qui peut être utilisée pour contenir l’emplacement du caractère point dans une chaîne.

  • Votre solution doit inclure une boucle foreach ou for externe qui peut être utilisée pour traiter chaque élément de chaîne dans le tableau. La variable de chaîne que vous allez traiter dans les boucles doit être nommée myString.

  • Dans la boucle externe, votre solution doit utiliser la méthode IndexOf() de la classe String pour obtenir l’emplacement du premier caractère point dans la variable myString. L’appel de méthode doit ressembler à ceci : myString.IndexOf("."). S’il n’existe aucun point dans la chaîne, la valeur -1 est retournée.

  • Votre solution doit inclure une boucle do-while ou while interne qui peut être utilisée pour traiter la variable myString.

  • Dans la boucle interne, votre solution doit extraire et afficher (écrire dans la console) chaque phrase contenue dans chacune des chaînes traitées.

  • Dans la boucle interne, votre solution ne doit pas afficher le caractère point.

  • Dans la boucle interne, votre solution doit utiliser les méthodes Remove(), Substring() et TrimStart() pour traiter les informations de chaîne.

  1. Commenter tout le code dans le panneau Visual Studio Code Editor

    1. Sélectionner toutes les lignes de code dans l’éditeur de code
    2. Dans le menu Edition, sélectionnez Activer/désactiver le commentaire de bloc.
  2. Écrivez le code qui implémente chaque condition mentionnée pour le projet de code 3.

  3. Exécutez votre application et vérifiez que votre sortie répond aux exigences.

    Si la logique de votre code fonctionne correctement, votre sortie doit ressembler à ce qui suit :

    I like pizza
    I like roast chicken
    I like salad
    I like all three of the menu choices
    

Si vous êtes bloqué et que vous avez besoin de jeter un œil à la solution, ou même si vous avez réussi, continuez pour voir les projets de solution à ce défi.