Exercice - Évaluer une expression
- 11 minutes
Une logique de décision permet d’établir plusieurs chemins dans votre code. La décision quant au chemin à suivre est basée sur l’évaluation d’une expression. Par exemple, vous pouvez écrire un code qui exécute l'un des deux chemins d'accès en fonction de l'entrée utilisateur. Si l’utilisateur entre la lettre « a », votre code exécute un bloc de code. S’il entre la lettre « b », votre code exécute un autre bloc de code. Dans cet exemple, vous contrôlez le chemin d’exécution en fonction de la valeur affectée à une chaîne. Votre code sélectionne un chemin d’exécution en fonction d’une expression, de l’évaluation de cette expression et de la logique sous-jacente utilisée pour définir les chemins.
Un bon point de départ consiste à examiner comment construire et comment évaluer une expression.
Qu’est-ce qu’une expression ?
Une expression est n’importe quelle combinaison de valeurs (littéral ou variable), d’opérateurs et de méthodes qui retournent une valeur unique. Une instruction est une instruction complète en C#, et les instructions comprennent une ou plusieurs expressions. Par exemple, l’if suivante contient une expression qui retourne une valeur unique :
if (myName == "Luiz")
Vous avez peut-être pensé que la valeur renvoyée par une expression serait un nombre ou une chaîne de caractères. Il est vrai que les développeurs d’applications utilisent différents types d’expressions à des fins différentes. Dans ce cas, quand vous développez une instruction de sélection if, vous utilisez une expression qui retourne true ou false. Les développeurs appellent ce type d’expression une « expression booléenne ». Quand votre code inclut une expression booléenne, la valeur de retour est toujours une valeur true ou false unique.
Les expressions booléennes sont importantes, car votre code peut les utiliser pour décider du bloc de code à exécuter.
Il existe de nombreux types différents d’opérateurs que vous pouvez utiliser dans une expression booléenne. Par exemple, l’instruction if ci-dessus utilise l’opérateur == d’égalité pour vérifier si une variable de chaîne est affectée à une valeur particulière. L’opérateur que vous choisissez dépend des chemins de code disponibles, des conditions associées aux chemins et de la logique d’application sous-jacente.
Évaluation de l’égalité et de l’inégalité
L’une des évaluations de code les plus courantes consiste à vérifier si deux valeurs sont égales. Pour effectuer une vérification d’égalité, vous placez l’opérateur d’égalité == entre les deux valeurs à vérifier. Si les deux valeurs situées de chaque côté de l’opérateur d’égalité sont équivalentes, l’expression retourne true. Dans le cas contraire, elle retourne false.
Inversement, vous pourriez également avoir besoin de vérifier si deux valeurs ne sont pas égales. Pour effectuer une vérification d’inégalité, vous utilisez l’opérateur d’inégalité != entre les deux valeurs.
Vous vous demandez peut-être pourquoi vous avez besoin d'opérateurs d'égalité et d'inégalité. La raison vous semblera plus claire à mesure que vous découvrirez comment créer des instructions de branchement et commencerez à écrire du vrai code. Deux opérateurs qui effectuent des tâches opposées vous permettent d’être plus expressif et compact.
Le moment est venu de préparer votre environnement de programmation et de commencer à écrire du code qui évalue des expressions booléennes.
Préparer votre environnement de programmation
Ce module comprend des activités pratiques qui vous guident tout au long du processus de création et d’exécution du code de démonstration. Nous vous encourageons à effectuer ces activités à l’aide de Visual Studio Code comme environnement de développement. L’utilisation de Visual Studio Code pour ces activités vous permet d’être plus à l’aise dans l’écriture et l’exécution de code dans un environnement de développement qui est utilisé par les professionnels du monde entier.
Ouvrez Visual Studio Code.
Vous pouvez utiliser le menu Démarrer de Windows (ou une ressource équivalente pour un autre système d’exploitation) pour ouvrir Visual Studio Code.
Dans Visual Studio Code, dans le menu Fichier, sélectionnez Ouvrir un dossier.
Dans la boîte de dialogue Ouvrir un dossier, accédez au dossier Bureau Windows.
Si vous conservez vos projets de code dans un autre dossier, vous pouvez utiliser cet emplacement à la place. Pour cette formation, l’important est d’avoir un emplacement facile à localiser et à mémoriser.
Dans la boîte de dialogue Ouvrir un dossier, sélectionnez Sélectionner un dossier.
Si une boîte de dialogue de sécurité vous demande si vous faites confiance aux auteurs, sélectionnez Oui.
Dans le menu Terminal de Visual Studio Code, sélectionnez Nouveau terminal.
Notez qu’une invite de commandes dans le panneau Terminal affiche le chemin du dossier actif. Par exemple :
C:\Users\someuser\Desktop>Remarque
Si vous travaillez sur votre propre PC plutôt que dans un bac à sable ou un environnement hébergé et que vous avez terminé d’autres modules Microsoft Learn dans cette série C#, vous avez peut-être déjà créé un dossier de projet pour les exemples de code. Si c’est le cas, vous pouvez passer à l’étape suivante, qui est utilisée pour créer une application console dans le dossier TestProject.
À l’invite de commandes terminal, pour créer une application console dans un dossier spécifié, entrez l’invite suivante :
dotnet new console -o ./CsharpProjects/TestProjectCette commande CLI .NET utilise un modèle de programme .NET pour créer un projet d’application console C# à l’emplacement du dossier spécifié. La commande crée les dossiers CsharpProjects et TestProject automatiquement, et utilise TestProject comme nom pour votre fichier
.csproj.Si un message s’affiche pour vous indiquer que les fichiers existent déjà, passez aux étapes suivantes. Vous allez réutiliser les fichiers projet existants.
Dans l’affichage EXPLORATEUR, développez le dossier CsharpProjects .
Vous devez voir le dossier TestProject et deux fichiers, un fichier de programme C# nommé Program.cs et un fichier projet C# nommé TestProject.csproj.
Dans Visual Studio Code, dans le menu Fichier, sélectionnez Ouvrir un dossier.
Dans la boîte de dialogue Ouvrir un dossier , sélectionnez le dossier CsharpProjects , puis sélectionnez Sélectionner un dossier.
Dans l’affichage EXPLORATEUR, développez le dossier TestProject, puis sélectionnez Program.cs.
Supprimez les lignes de code existantes.
Vous allez utiliser ce projet de console C# pour créer, générer et exécuter des exemples de code au cours de ce module.
Fermez le panneau Terminal.
Utiliser l’opérateur d’égalité
Vérifiez que Visual Studio Code est ouvert et que Program.cs est affiché dans le panneau d’édition.
Remarque
Program.cs doit être vide. Si ce n’est pas le cas, sélectionnez toutes les lignes de code et supprimez-les.
Tapez le code suivant dans l’Éditeur Visual Studio Code.
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");Dans le menu Fichier de Visual Studio Code, sélectionnez Enregistrer.
Le fichier Program.cs doit être enregistré avant de générer ou d’exécuter le code.
Dans le panneau EXPLORATEUR, pour ouvrir un terminal à l’emplacement de votre dossier TestProject, cliquez avec le bouton droit sur TestProject, puis sélectionnez Ouvrir dans le terminal intégré.
Un panneau Terminal s’ouvre. Le Terminal doit inclure une invite de commandes indiquant qu’il est ouvert à l’emplacement de votre dossier TestProject.
À l’invite de commandes du Terminal, pour exécuter votre code, tapez dotnet run, puis appuyez sur Entrée.
Remarque
Si vous voyez le message « Impossible de trouver un projet à exécuter », vérifiez que l’invite de commandes du Terminal affiche l’emplacement attendu du dossier TestProject. Par exemple :
C:\Users\someuser\Desktop\csharpprojects\TestProject>Vous devez voir la sortie suivante.
True False False True
Améliorer la vérification de l’égalité des chaînes à l’aide des méthodes d’assistance intégrées de la chaîne
Vous pourriez être surpris que la ligne Console.WriteLine("a" == "A"); génère false. Quand vous comparez des chaînes, la casse est importante.
Prenez également en compte la ligne de code suivante :
Console.WriteLine("a" == "a ");
Ici, vous avez ajouté un espace à la fin de la chaîne. Cette expression génère également false.
Dans certains cas, le fait d’avoir un espace avant ou après le texte est parfaitement acceptable. Toutefois, si vous devez accepter une correspondance qui n’est pas exacte, vous pouvez d’abord « transformer » les données. La « transformation » des données consiste à effectuer un nettoyage avant de réaliser une comparaison d’égalité.
Par exemple, examinons le cas où vous collectez des entrées utilisateur à l’intérieur d’une boucle. Une fois chaque valeur entrée, vous pouvez fournir à l’utilisateur une invite pour déterminer s’il souhaite continuer, par exemple Do you want to continue (Y/N)?. Si l’utilisateur souhaite continuer, il entrera probablement y ou Y. Vous voulez que votre code interprète les deux valeurs de la même manière, même si y n’est pas équivalent à Y.
Avant de vérifier l’égalité de deux valeurs de chaîne, en particulier quand une valeur ou les deux sont entrées par un utilisateur, vous devez :
- Vous assurer que les deux chaînes sont en majuscules ou en minuscules en utilisant la méthode d’assistance
ToUpper()ouToLower()sur n’importe quelle valeur de chaîne. - Supprimer les espaces vides de début ou de fin en utilisant la méthode d’assistance
Trim()sur n’importe quelle valeur de chaîne.
Vous pouvez améliorer la vérification d’égalité précédente en effectuant un chaînage de ces deux méthodes d’assistance sur les deux valeurs, comme indiqué dans la liste de codes suivante :
Remplacez le code dans l’Éditeur Visual Studio Code par le code suivant :
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code.
Quand vous exécutez le code cette fois-ci, il génère True.
Utiliser l’opérateur d’inégalité
Utilisez l’opérateur de commentaire de ligne
//pour commenter tout le code de l’étape précédente.Tapez le code suivant dans l’Éditeur Visual Studio Code.
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code.
Vous devez voir la sortie suivante.
False True True False
Comme vous pouvez vous y attendre, le résultat obtenu avec l’opérateur d’inégalité est le contraire du résultat obtenu avec l’opérateur d’égalité. Cela signifie également que votre code optera pour la branche opposée, ce qui peut être exactement ce que vous souhaitez.
Comparaisons d’évaluation
Lorsque vous travaillez avec des types de données numériques, vous pouvez vouloir déterminer si une valeur est plus grande ou plus petite qu'une autre valeur. Utilisez les opérateurs suivants pour effectuer ces types de comparaisons :
- Supérieur à
> - Inférieur à
< - Supérieur ou égal à
>= - Inférieur ou égal à
<=
Naturellement, les opérateurs == et != que vous avez utilisés pour comparer les valeurs de chaîne ci-dessus fonctionnent également lors de la comparaison de types de données numériques.
Utiliser les opérateurs de comparaison
Utilisez l’opérateur de commentaire de ligne
//pour commenter tout le code de la tâche précédente.Tapez le code suivant dans l’Éditeur Visual Studio Code.
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour générer et exécuter votre code.
La sortie suivante s’affiche :
False True True True
Méthodes qui retournent une valeur booléenne
Certaines méthodes retournent une valeur booléenne (true ou false). Dans l’exercice suivant, vous allez utiliser une méthode intégrée de la classe String pour déterminer si une chaîne plus grande contient ou non un mot ou une phrase spécifique présentant un intérêt pour votre application.
Remarque
Certains types de données ont des méthodes qui effectuent des tâches utilitaires utiles. Le type de données String en a beaucoup. Plusieurs retournent une valeur booléenne, notamment Contains(), StartsWith() et EndsWith(). Pour plus d’informations à leur sujet, consultez le module Microsoft Learn « Manipuler des données alphanumériques à l’aide de méthodes de la classe String en C# ».
Utiliser une méthode qui retourne un booléen
Utilisez l’opérateur de commentaire de ligne
//pour commenter tout le code de l’étape précédente.Tapez le code suivant dans l’Éditeur Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour générer et exécuter votre code.
Vous devez voir la sortie suivante.
True False
Qu’est-ce que la négation logique ?
Le terme « négation logique » fait référence à l'opérateur de négation unaire !. Certaines personnes appellent cet opérateur l’opérateur « not ». Lorsque vous placez l'opérateur ! avant une expression conditionnelle (ou tout code évalué à true ou false), il force votre code à inverser son évaluation de l'opérande. Lorsque la négation logique est appliquée, l'évaluation produit true si l'opérande est évalué à false et false si l'opérande est évalué à true.
L'exemple suivant peut vous aider à comprendre le lien entre ces idées. Les deux lignes de code suivantes produisent le même résultat. La deuxième ligne est plus compacte.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Utiliser l’opérateur de négation logique
Utilisez l’opérateur de commentaire de ligne
//pour commenter tout le code de l’étape précédente.Tapez le code suivant dans l’Éditeur Visual Studio Code.
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour générer et exécuter votre code.
Vous devez voir la sortie suivante.
False True
Opérateur d'inégalité et négation logique
L'opérateur d'inégalité != comprend un caractère !, auquel il ne faut pas confondre la négation logique. L'opérateur d'inégalité renvoie true si ses opérandes ne sont pas égaux et renvoie false si les opérandes sont égaux. Pour les opérandes des types intégrés, l'expression x != y produit le même résultat que l'expression !(x == y) (un exemple de négation logique).
L'exemple de code suivant illustre l'utilisation de l'opérateur != :
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Récapitulatif
Voici les éléments importants que vous avez appris au sujet de l’évaluation des expressions booléennes jusqu’à présent :
- Il existe de nombreux types d’expressions dont l’évaluation a pour résultat
trueoufalse. - Évaluez l’égalité à l’aide de l’opérateur
==. - Quand vous évaluez l’égalité de chaînes, vous devez envisager la possibilité que les chaînes aient des casses différentes et des espaces de début ou de fin. Selon votre situation, utilisez les méthodes d’assistance
ToLower()ouToUpper()et la méthode d’assistanceTrim()pour améliorer la probabilité que deux chaînes soient égales. - Évaluez l’inégalité à l’aide de l’opérateur
!=. - Évaluez les opérations de supériorité, d’infériorité et autres opérations similaires à l’aide d’opérateurs de comparaison tels que
>,<,>=et<=. - Si une méthode retourne une valeur booléenne, elle peut être utilisée en tant qu’expression booléenne.
- Utilisez l’opérateur de négation logique
!pour évaluer l’inverse d’une expression donnée.