Menu
Coddy logo textTech

Logische Operatoren Teil 3

Teil des Abschnitts Grundlagen der C#-Journey von Coddy — Lektion 24 von 69.

Beim Prüfen mehrerer Bedingungen hört der Computer mit der Prüfung auf, sobald er das Endergebnis kennt (dies wird als Kurzschlussauswertung bezeichnet).

Zum Beispiel:

int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;

Hier ist x gleich 0, daher wird y / x > 2 nicht ausgewertet. Wenn wir die Reihenfolge umkehren würden:

bool result = y / x > 2 && x != 0;

Dies wird zu einem Fehler führen, da y durch 0 geteilt wird, was in der Mathematik unzulässig ist.

Diese Technik wird verwendet, um die Auswertung logischer Ausdrücke zu optimieren. Zum Beispiel:

int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);

In diesem Beispiel werden b < 2 und d < 10 nicht ausgewertet, da a > 0 und c < -5 beide falsch sind.

challenge icon

Aufgabe

Anfänger

Lassen Sie uns ein Programm erstellen, um zu entscheiden, ob es ein guter Tag für die Energieerzeugung durch Solarmodule ist

Initialisieren Sie diese Variablen:

  • isSunny mit dem Wert true
  • windSpeed mit dem Wert 5.4
  • temperature mit dem Wert 23
  • solarPanelOutput mit dem Wert 9
  • isCloudy mit dem Wert false

Erstellen Sie einen logischen Ausdruck, der ALLE diese Bedingungen prüft:

  • Es ist sonnig
  • Die Windgeschwindigkeit ist geringer als 10
  • Die Leistung der Solarmodule ist geringer als 15
  • Die Temperatur liegt über 20 ODER es gibt keine Wolken

Spickzettel

Kurzschlussauswertung (Short-circuit evaluation) bedeutet, dass der Computer aufhört, Bedingungen zu prüfen, sobald er das Endergebnis kennt.

Bei && (UND) wird die zweite Bedingung nicht mehr ausgewertet, wenn die erste Bedingung falsch ist:

int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2; // y / x > 2 wird nicht ausgewertet

Bei || (ODER) wird die zweite Bedingung nicht mehr ausgewertet, wenn die erste Bedingung wahr ist:

bool result = (a > 0 && b < 2) || (c < -5 && d < 10);
// Wenn a > 0 falsch ist, wird b < 2 nicht ausgewertet
// Wenn der erste Teil falsch ist, aber c < -5 ebenfalls falsch ist, wird d < 10 nicht ausgewertet

Diese Optimierung verhindert unnötige Berechnungen und kann Fehler wie eine Division durch Null vermeiden.

Probier es selbst

using System;

public class Program {
    public static void Main(string[] args) {
        // Variablen initialisieren
        
        
        // Der vollständige logische Ausdruck
        bool result = 
        
        // Die unten stehenden Zeilen nicht löschen
        Console.WriteLine("Checking conditions for solar energy production...");
        Console.WriteLine("1. Is it sunny? " + isSunny);
        Console.WriteLine("2. Is wind speed safe? " + (windSpeed < 10));
        Console.WriteLine("3. Can panels produce more? " + (solarPanelOutput < 15));
        Console.WriteLine("4. Is temperature good OR no clouds? " + (temperature > 20 || !isCloudy));
        Console.WriteLine("\nFinal result - Good day for solar energy production: " + result);
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen