Menu
Coddy logo textTech

Bedingungen prüfen mit 'any'

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 13 von 65.

Manchmal müssen Sie prüfen, ob mindestens ein Element in einer Liste eine bestimmte Bedingung erfüllt, ohne jedes einzelne Element untersuchen zu müssen. Die Methode any() bietet eine effiziente Möglichkeit hierfür, indem sie true zurückgibt, sobald sie das erste Element findet, das Ihre Testbedingung erfüllt.

Die Methode any() nimmt eine Testfunktion entgegen, die für jedes Element true oder false zurückgibt. Wenn ein Element den Test besteht, gibt any() sofort true zurück. Wenn nach der Überprüfung der gesamten Liste kein Element den Test besteht, gibt sie false zurück.

List<double> prices = [15.99, 45.50, 120.00, 8.75];

// Prüfen, ob ein Artikel mehr als 100 $ kostet
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Diese Methode ist besonders nützlich für Validierungsszenarien, in denen Sie wissen müssen, ob mindestens ein Element bestimmte Kriterien erfüllt. Die Methode any() beendet die Prüfung, sobald sie eine Übereinstimmung findet, was sie effizienter macht als das manuelle Durchlaufen der gesamten Liste, wenn Sie nur wissen müssen, ob etwas existiert.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das ein Sicherheitssystem verwaltet, indem es prüft, ob ein Sensor in einem Gebäude verdächtige Aktivitäten erkannt hat. Ihr Programm sollte:

  1. Einen String-Input einlesen, der den Gebäudenamen darstellt
  2. Mehrere Ganzzahl-Inputs einlesen, die Sensormesswerte von verschiedenen Etagen darstellen (die Eingabe endet, wenn Sie -1 erhalten)
  3. Einen Ganzzahl-Input einlesen, der den Schwellenwert für den Alarm darstellt
  4. Die Methode any() verwenden, um zu prüfen, ob ein Sensormesswert größer oder gleich dem Alarmschwellenwert ist
  5. Die Ergebnisse der Sicherheitsüberwachung in dem unten gezeigten exakten Format ausgeben

Wenn zum Beispiel der Gebäudename "Office Tower" ist, die Sensormesswerte 15, 23, 8, 45, 12 sind und der Alarmschwellenwert 40 ist, sollte Ihr Programm Folgendes ausgeben:

Building: Office Tower
Sensor readings: [15, 23, 8, 45, 12]
Alert threshold: 40
Checking for readings >= 40
Alert triggered: true
Status: Security breach detected - immediate response required

Wenn der Gebäudename "Shopping Mall" ist, die Sensormesswerte 18, 25, 12, 30 sind und der Alarmschwellenwert 50 ist, sollte Ihr Programm Folgendes ausgeben:

Building: Shopping Mall
Sensor readings: [18, 25, 12, 30]
Alert threshold: 50
Checking for readings >= 50
Alert triggered: false
Status: All systems normal - no threats detected

Wenn der Gebäudename "Warehouse" ist, die Sensormesswerte 75, 82 sind und der Alarmschwellenwert 70 ist, sollte Ihr Programm Folgendes ausgeben:

Building: Warehouse
Sensor readings: [75, 82]
Alert threshold: 70
Checking for readings >= 70
Alert triggered: true
Status: Security breach detected - immediate response required

Ihr Programm muss die Methode any() verwenden, um zu prüfen, ob ein Sensormesswert größer oder gleich dem Alarmschwellenwert ist. Zeigen Sie "Security breach detected - immediate response required" an, wenn ein Sensor den Alarm auslöst, oder "All systems normal - no threats detected", wenn kein Sensor den Schwellenwert überschreitet.

Spickzettel

Die Methode any() prüft, ob mindestens ein Element in einer Liste eine bestimmte Bedingung erfüllt. Sie gibt true zurück, sobald sie das erste Element findet, das die Testbedingung erfüllt, oder false, wenn kein Element den Test besteht.

List<double> prices = [15.99, 45.50, 120.00, 8.75];

// Prüfen, ob ein Artikel mehr als 100 $ kostet
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Die Methode any() ist effizient, da sie die Prüfung abbricht, sobald sie eine Übereinstimmung findet. Dies macht sie ideal für Validierungsszenarien, in denen man nur wissen muss, ob etwas existiert.

Probier es selbst

import 'dart:io';

void main() {
  // Gebäudenamen lesen
  String? buildingName = stdin.readLineSync();
  
  // Sensormesswerte lesen, bis -1 eingegeben wird
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // Alarmschwellenwert lesen
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Schreiben Sie Ihren Code unten
  // Verwenden Sie die any()-Methode, um zu prüfen, ob ein Sensormesswert >= Alarmschwellenwert ist
  
  // Ergebnisse im erforderlichen Format ausgeben
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // Ergebnis des ausgelösten Alarms und Statusmeldung ausgeben
}
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 Logik & Ablauf