Übung: Auswerten eines Ausdrucks
- 11 Minuten
Die Entscheidungslogik wird verwendet, um alternative Pfade durch Ihren Code zu erstellen, wobei die Entscheidung, welchem Pfad zu folgen ist, auf der Grundlage der Auswertung eines Ausdrucks getroffen wird. Sie könnten beispielsweise Code schreiben, der basierend auf einer Benutzereingabe einen von zwei Pfaden ausführt. Wenn der*die Benutzer*in den Buchstaben „a“ eingibt, führt Ihr Code einen Codeblock aus. Wenn er*sie den Buchstaben „b“ eingibt, führt Ihr Code einen anderen Codeblock aus. In diesem Beispiel steuern Sie den Ausführungspfad basierend auf dem Wert, der einer Zeichenfolge zugewiesen ist. Ihr Code wählt einen Ausführungspfad auf der Grundlage eines Ausdrucks, der Art der Auswertung dieses Ausdrucks und der zugrunde liegenden Logik, die zum Definieren der Pfade verwendet wird.
Zunächst sollten wir untersuchen, wie ein Ausdruck erstellt und ausgewertet wird.
Was ist ein Ausdruck?
Ein Ausdruck ist eine beliebige Kombination von Werten (Literale oder Variablen), Operatoren und Methoden, die einen einzelnen Wert zurückgeben. Eine Anweisung ist ein kompletter Anweisungscode in C#, und Anweisungen bestehen aus einem oder mehreren Ausdrücken. Die folgende if-Anweisung enthält beispielsweise einen einzelnen Ausdruck, der einen einzigen Wert zurückgibt:
if (myName == "Luiz")
Sie haben vielleicht angenommen, dass der Wert, der von einem Ausdruck zurückgegeben wird, eine Zahl oder eine Zeichenfolge ist. Es stimmt, dass Anwendungsentwickler*innen verschiedene Arten von Ausdrücken für unterschiedliche Zwecke verwenden. In diesem Fall verwenden Sie beim Entwickeln einer if-Auswahlanweisung einen Ausdruck, der entweder true oder falsezurückgibt. Entwickler*innen bezeichnen diesen Ausdruckstyp als booleschen Ausdruck. Wenn Ihr Code einen booleschen Ausdruck enthält, ist der Rückgabewert immer ein einzelner true- oder false-Wert.
Boolesche Ausdrücke sind wichtig, da Ihr Code diese Ausdrücke verwenden kann, um zu entscheiden, welcher Codeblock ausgeführt werden soll.
Es gibt viele verschiedene Arten von Operatoren, die Sie in einem booleschen Ausdruck verwenden können. Die obige Anweisung verwendet beispielsweise den Gleichheitsoperator if, um zu überprüfen, ob eine Zeichenfolgenvariable einem bestimmten Wert zugewiesen ist. Der von Ihnen ausgewählte Operator hängt von den verfügbaren Codepfaden, den den Pfaden zugeordneten Bedingungen und der zugrunde liegenden Anwendungslogik ab.
Auswerten von Gleichheit und Ungleichheit
Eine der häufigsten Codeauswertungen ist eine Überprüfung, ob zwei Werte gleich sind. Wenn Sie auf Gleichheit überprüfen, platzieren Sie den Gleichheitsoperator == zwischen den beiden zu überprüfenden Werten. Wenn die Werte auf beiden Seiten des Gleichheitsoperators gleich sind, gibt der Ausdruck true zurück. Andernfalls gibt er false zurück.
Umgekehrt müssen Sie möglicherweise auch überprüfen, ob zwei Werte nicht gleich sind. Um auf Ungleichheit zu überprüfen, verwenden Sie den Ungleichheitsoperator != zwischen den beiden Werten.
Sie fragen sich vielleicht, warum Sie sowohl Gleichheits- als auch Ungleichheitsoperatoren benötigen. Der Grund wird klarer, wenn Sie lernen, wie Sie Verzweigungsanweisungen erstellen, und beginnen, echten Code zu schreiben. Zwei Operatoren, die entgegengesetzte Aufgaben ausführen, ermöglichen es Ihnen, sich exakter auszudrücken und kompakteren Code zu schreiben.
Jetzt ist es an der Zeit, Ihre Programmierumgebung vorzubereiten und mit dem Schreiben von Code zu beginnen, der boolesche Ausdrücke auswertet.
Vorbereiten Ihrer Programmierumgebung
Dieses Modul enthält praktische Aktivitäten, die Sie durch den Prozess der Erstellung und Ausführung von Demonstrationscode führen. Es wird empfohlen, diese Aktivitäten mit Visual Studio Code als Entwicklungsumgebung durchzuführen. Die Verwendung von Visual Studio Code für diese Aktivitäten vereinfacht das Schreiben und Ausführen von Code in einer Entwicklerumgebung, die von Expert*innen weltweit verwendet wird.
Öffnen Sie Visual Studio Code.
Sie können das Windows-Startmenü (oder eine entsprechende Ressource für ein anderes Betriebssystem) verwenden, um Visual Studio Code zu öffnen.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Navigieren Sie im Dialogfeld Ordner öffnen zum Windows-Ordner „Desktop“.
Wenn Sie Codeprojekte in der Regel in einem anderen Ordner speichern, können Sie stattdessen auch diesen verwenden. Für diese Übung sollten Sie einen Speicherort haben, den Sie leicht finden und sich gut merken können.
Klicken Sie im Dialogfeld Ordner öffnen auf Ordner auswählen.
Wenn ein Sicherheitsdialogfeld angezeigt wird, in dem Sie gefragt werden, ob Sie den Autor*innen vertrauen, wählen Sie Ja aus.
Klicken Sie im Visual Studio Code-Menü Terminal die Option Neues Terminal aus.
Beachten Sie, dass eine Eingabeaufforderung im Panel „Terminal“ den Ordnerpfad für den aktuellen Ordner anzeigt. Beispiel:
C:\Users\someuser\Desktop>Hinweis
Wenn Sie auf Ihrem eigenen PC und nicht in einer Sandbox oder gehosteten Umgebung arbeiten und schon andere Microsoft Learn-Module in dieser C#-Reihe absolviert haben, haben Sie vielleicht bereits einen Projektordner für Codebeispiele erstellt. In diesem Fall können Sie den nächsten Schritt überspringen, der zum Erstellen einer Konsolen-App im Ordner „TestProject“ verwendet wird.
Geben Sie an der Terminal-Eingabeaufforderung zum Erstellen einer neuen Konsolenanwendung in einem angegebenen Ordner die folgende Eingabeaufforderung ein:
dotnet new console -o ./CsharpProjects/TestProjectDieser .NET-CLI-Befehl verwendet eine .NET-Programmvorlage, um ein neues C#-Konsolenanwendungsprojekt am angegebenen Ordnerspeicherort zu erstellen. Der Befehl erstellt die Ordner „CsharpProjects“ und „TestProject“ für Sie und verwendet „TestProject“ als Namen für Ihre
.csproj-Datei.Wenn eine Meldung angezeigt wird, die Besagt, dass die Dateien bereits vorhanden sind, fahren Sie mit den nächsten Schritten fort. Sie werden die vorhandenen Projektdateien wiederverwenden.
Erweitern Sie in der EXPLORER-Ansicht den Ordner "CsharpProjects ".
Sie sollten den Ordner "TestProject " und zwei Dateien sehen, eine C#-Programmdatei mit dem Namen Program.cs und eine C#-Projektdatei namens TestProject.csproj.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Wählen Sie im Dialogfeld "Ordner öffnen " den Ordner "CsharpProjects " und dann " Ordner auswählen" aus.
Erweitern Sie in der EXPLORER-Ansicht den Ordner "TestProject", und wählen Sie dann Program.cs aus.
Löschen Sie die vorhandenen Codezeilen.
Sie verwenden dieses C#-Konsolenprojekt zum Erstellen und Ausführen von Codebeispielen im Rahmen dieses Moduls.
Schließen Sie das Panel „Terminal“.
Verwenden des Gleichheitsoperators
Stellen Sie sicher, dass Visual Studio Code geöffnet ist und „Program.cs“ im Editor-Bereich angezeigt wird.
Hinweis
„Program.cs“ sollte leer sein. Wenn dies nicht der Fall ist, wählen Sie alle Codezeilen aus, und löschen Sie sie.
Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
Console.WriteLine("a" == "a"); Console.WriteLine("a" == "A"); Console.WriteLine(1 == 2); string myValue = "a"; Console.WriteLine(myValue == "a");Wählen Sie im Visual Studio Code-Menü Datei die Option Speichern aus.
Die Datei „Program.cs“ muss vor dem Erstellen oder Ausführen des Codes gespeichert werden.
Klicken Sie im Panel „Explorer“ mit der rechten Maustaste auf TestProject, und klicken Sie dann auf In integriertem Terminal öffnen, um ein Terminal am Speicherort des TestProject-Ordners zu öffnen.
Ein Terminalbereich wird geöffnet. Der Terminalbereich sollte eine Eingabeaufforderung enthalten, die anzeigt, dass das Terminal am Speicherort Ihres Ordners „TestProject“ geöffnet ist.
Geben Sie an der Eingabeaufforderung des Terminals den Befehl dotnet run ein, und drücken Sie dann die EINGABETASTE.
Hinweis
Wenn die Meldung „Es wurde kein ausführbares Projekt gefunden“ angezeigt wird, stellen Sie sicher, dass in der Eingabeaufforderung des Terminals der erwartete Speicherort des Ordners „TestProject“ angezeigt wird. Beispiel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Die folgende Ausgabe sollte angezeigt werden.
True False False True
Verbessern der Überprüfung auf die Gleichheit von Zeichenfolgen mithilfe der integrierten Hilfsmethoden einer Zeichenfolge
Sie sind möglicherweise überrascht, dass die Zeile Console.WriteLine("a" == "A");false ausgibt. Beim Vergleichen von Zeichenfolgen wird die Groß-/Kleinschreibung berücksichtigt.
Schauen Sie sich auf die folgende Codezeile an:
Console.WriteLine("a" == "a ");
Hier haben Sie am Ende der Zeichenfolge ein Leerzeichen hinzugefügt. Dieser Ausdruck gibt auch false aus.
In einigen Fällen kann ein Leerzeichen vor oder nach dem Text durchaus akzeptabel sein. Wenn jedoch auch eine nicht exakte Entsprechung akzeptiert werden soll, können Sie die Daten zuerst „bereinigen“. Beim „Bereinigen“ von Daten werden bestimmte Vorgänge ausgeführt, bevor ein Vergleich auf Gleichheit erfolgt.
Betrachten Sie zum Beispiel den Fall, dass Sie Benutzereingaben innerhalb einer Schleife sammeln. Nach der Eingabe jedes Wertes kann dem*der Benutzer*in eine Eingabeaufforderung angezeigt werden, um zu ermitteln, ob er*sie fortfahren möchte (z. B. Do you want to continue (Y/N)?). Wenn der*die Benutzer*in fortfahren möchte, gibt er wahrscheinlich entweder y oder Y ein. Sie möchten, dass Ihr Code beide Werte gleich interpretiert, auch wenn y nicht gleich Y ist.
Bevor Sie zwei Zeichenfolgenwerte auf Gleichheit überprüfen, insbesondere wenn ein oder beide Werte von einem*einer Benutzer*in eingegeben wurden, sollten Sie Folgendes tun:
- Stellen Sie mit der Hilfsmethode
ToUpper()oderToLower()sicher, dass alle Zeichenfolgenwerte komplett in Großbuchstaben oder komplett in Kleinbuchstaben angegeben sind. - Entfernen Sie alle führenden oder nachfolgenden Leerzeichen mithilfe der Hilfsmethode
Trim()aus den Zeichenfolgenwerten.
Sie können die vorherige Überprüfung auf Gleichheit noch verbessern, indem Sie diese beiden Hilfsmethoden für beide Werte wie in der folgenden Codeauflistung verketten:
Ersetzen Sie den Code im Visual Studio Code-Editor durch den folgenden Code:
string value1 = " a"; string value2 = "A "; Console.WriteLine(value1.Trim().ToLower() == value2.Trim().ToLower());Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Beachten Sie, dass dieses Mal True ausgegeben wird, wenn Sie den Code ausgeben.
Verwenden des Ungleichheitsoperators
Verwenden Sie den Zeilenkommentaroperator
//, um den gesamten Code aus dem vorherigen Schritt auszukommentieren.Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
Console.WriteLine("a" != "a"); Console.WriteLine("a" != "A"); Console.WriteLine(1 != 2); string myValue = "a"; Console.WriteLine(myValue != "a");Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.
Die folgende Ausgabe sollte angezeigt werden.
False True True False
Wie zu erwarten, ist das Ergebnis bei Verwendung des Ungleichheitsoperators das Gegenteil von dem, was Sie bei Verwendung des Gleichheitsoperators gesehen haben. Dies bedeutet, dass Ihr Code auch in die entgegengesetzte Richtung gebrancht wird, was genau das sein kann, was Sie möchten.
Auswerten von Vergleichen
Wenn Sie mit numerischen Datentypen arbeiten, sollten Sie vielleicht ermitteln, ob ein Wert größer oder kleiner als ein anderer Wert ist. Verwenden Sie die folgenden Operatoren, um diese Arten von Vergleichen auszuführen:
- Größer als
> - Kleiner als
< - Größer als oder gleich
>= - Kleiner als oder gleich
<=
Natürlich funktionieren die ==- und !=-Operatoren, die Sie zum Vergleichen von Zeichenfolgenwerten oben verwendet haben, auch beim Vergleichen numerischer Datentypen.
Verwenden von Vergleichsoperatoren
Verwenden Sie den Zeilenkommentaroperator
//, um den gesamten Code aus der vorherigen Aufgabe auszukommentieren.Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
Console.WriteLine(1 > 2); Console.WriteLine(1 < 2); Console.WriteLine(1 >= 1); Console.WriteLine(1 <= 1);Speichern Sie Ihre Codedatei, und verwenden Sie dann Visual Studio Code, um Ihren Code zu erstellen und auszuführen.
Die folgende Ausgabe sollte angezeigt werden:
False True True True
Methoden, die einen booleschen Wert zurückgeben
Einige Methoden geben einen booleschen Wert zurück (true oder false). In der folgenden Übung verwenden Sie eine integrierte Methode für die String-Klasse, um zu bestimmen, ob eine größere Zeichenfolge ein bestimmtes Wort oder einen Ausdruck enthält, das bzw. der für Ihre Anwendung von Bedeutung ist.
Hinweis
Einige Datentypen verfügen über Methoden, die hilfreiche Hilfsprogrammtasks ausführen. Der String-Datentyp enthält viele dieser Methoden. Viele davon geben einen booleschen Wert zurück, beispielweise Contains(), StartsWith() und EndsWith(). Weitere Informationen hierzu finden Sie im Microsoft Learn-Modul „Bearbeiten von alphanumerischen Daten mithilfe von Methoden der String-Klasse in C#“.
Verwenden einer Methode, die einen booleschen Wert zurückgibt
Verwenden Sie den Zeilenkommentaroperator
//, um den gesamten Code aus dem vorherigen Schritt auszukommentieren.Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(pangram.Contains("fox")); Console.WriteLine(pangram.Contains("cow"));Speichern Sie Ihre Codedatei, und verwenden Sie dann Visual Studio Code, um Ihren Code zu erstellen und auszuführen.
Die folgende Ausgabe sollte angezeigt werden.
True False
Was ist eine logische Negation?
Der Begriff „Logische Negation“ bezieht sich auf den unären Negationsoperator !. Manchmal wird der Operator auch als „NOT-Operator“ bezeichnet. Wenn Sie den !-Operator vor einem bedingten Ausdruck (oder einem beliebigen Code, der mit true oder false ausgewertet wird) platzieren, erzwingt er, dass Ihr Code die Auswertung des Operanden umkehrt. Wenn die logische Negation angewendet wird, erzeugt true die Auswertung, wenn der Operand als false ausgewertet wird, und false, wenn der Operand als true ausgewertet wird.
Anhand des folgenden Beispiels können Sie die Verbindung zwischen diesen Ideen erkennen. Die folgenden beiden Codezeilen erzeugen das gleiche Ergebnis. Die zweite Zeile ist kompakter.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Verwenden des logischen Negationsoperators
Verwenden Sie den Zeilenkommentaroperator
//, um den gesamten Code aus dem vorherigen Schritt auszukommentieren.Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
string pangram = "The quick brown fox jumps over the lazy dog."; Console.WriteLine(!pangram.Contains("fox")); Console.WriteLine(!pangram.Contains("cow"));Speichern Sie Ihre Codedatei, und verwenden Sie dann Visual Studio Code, um Ihren Code zu erstellen und auszuführen.
Die folgende Ausgabe sollte angezeigt werden.
False True
Ungleichheitsoperator im Vergleich zur logischen Negation
Der Ungleichheitsoperator != enthält ein ! Zeichen, sollte aber nicht mit der logischen Negation verwechselt werden. Der Ungleichheitsoperator gibt true zurück, wenn die Operanden nicht gleich sind, und gibt false zurück, wenn die Operanden gleich sind. Für die Operanden der integrierten Typen erzeugt der Ausdruck x != y dasselbe Ergebnis wie der Ausdruck !(x == y) (ein Beispiel für die logische Negation).
Im folgenden Codebeispiel wird die Verwendung des !=-Operators veranschaulicht:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Zusammenfassung
Im folgenden finden Sie die wichtigsten Erkenntnisse zum Auswerten von booleschen Ausdrücken:
- Es gibt viele verschiedene Arten von Ausdrücken, die entweder zu
trueoderfalseausgewertet werden. - Werten Sie die Gleichheit mit dem
==-Operator aus. - Zum Auswerten der Gleichheit von Zeichenfolgen müssen Sie die Möglichkeit berücksichtigen, dass sich die Groß-/Kleinschreibung der Zeichenfolgen unterscheidet und dass führende oder nachfolgende Leerzeichen vorhanden sind. Verwenden Sie je nach Situation die Hilfsmethoden
ToLower()oderToUpper()und die HilfsmethodeTrim(), um die Wahrscheinlichkeit zu verbessern, dass zwei Zeichenfolgen gleich sind. - Werten Sie die Ungleichheit mit dem
!=-Operator aus. - Werten Sie „größer als“, „kleiner als“ und Vergleiche mit den Vergleichsoperatoren
>,<,>=und<=aus. - Wenn eine Methode einen booleschen Wert zurückgibt, kann dieser als boolescher Ausdruck verwendet werden.
- Verwenden Sie den logischen Negationsoperator
!, um das Gegenteil eines angegebenen Ausdrucks auszuwerten.