Menu
Coddy logo textTech

Sprawdzanie warunków za pomocą 'any'

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 13 z 65.

Czasami trzeba sprawdzić, czy co najmniej jeden element na liście spełnia określony warunek, bez konieczności sprawdzania każdego elementu z osobna. Metoda any() pozwala zrobić to wydajnie, zwracając true, gdy tylko znajdzie pierwszy element spełniający warunek testowy.

Metoda any() przyjmuje funkcję testującą, która zwraca true lub false dla każdego elementu. Jeśli dowolny element przejdzie test, any() natychmiast zwraca true. Jeśli po sprawdzeniu całej listy żaden element nie przejdzie testu, zwraca false.

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

// Sprawdź, czy którykolwiek produkt kosztuje więcej niż $100
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Ta metoda jest szczególnie przydatna w przypadku walidacji, gdy musisz sprawdzić, czy co najmniej jeden element spełnia określone kryteria. Metoda any() przestaje sprawdzać, gdy tylko znajdzie dopasowanie, dzięki czemu jest wydajniejsza niż ręczne przechodzenie przez całą listę, gdy chcesz tylko sprawdzić, czy coś istnieje.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który zarządza systemem bezpieczeństwa, sprawdzając, czy którykolwiek czujnik w budynku wykrył podejrzaną aktywność. Twój program powinien:

  1. Odczytać tekstowe dane wejściowe reprezentujące nazwę budynku
  2. Odczytać wiele wartości całkowitych reprezentujących odczyty czujników z różnych pięter (wprowadzanie danych zakończy się po otrzymaniu -1)
  3. Odczytać wartość całkowitą reprezentującą próg alarmowy
  4. Użyć metody any(), aby sprawdzić, czy którykolwiek odczyt czujnika jest większy lub równy progowi alarmowemu
  5. Wyświetlić wyniki monitorowania bezpieczeństwa w dokładnym formacie pokazanym poniżej

Na przykład, jeśli nazwa budynku to "Office Tower", odczyty czujników to 15, 23, 8, 45, 12, a próg alarmowy wynosi 40, program powinien wyświetlić:

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

Jeśli nazwa budynku to "Shopping Mall", odczyty czujników to 18, 25, 12, 30, a próg alarmowy wynosi 50, program powinien wyświetlić:

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

Jeśli nazwa budynku to "Warehouse", odczyty czujników to 75, 82, a próg alarmowy wynosi 70, program powinien wyświetlić:

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

Twój program musi używać metody any(), aby sprawdzić, czy którykolwiek odczyt czujnika jest większy lub równy progowi alarmowemu. Wyświetl "Security breach detected - immediate response required", jeśli którykolwiek czujnik wywoła alarm, lub "All systems normal - no threats detected", jeśli żaden czujnik nie przekracza progu.

Spróbuj swoich sił

import 'dart:io';

void main() {
  // Wczytaj nazwę budynku
  String? buildingName = stdin.readLineSync();
  
  // Wczytuj odczyty czujników, aż pojawi się -1
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // Wczytaj próg alarmowy
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Napisz swój kod poniżej
  // Użyj metody any(), aby sprawdzić, czy którykolwiek odczyt czujnika jest >= progowi alarmowemu
  
  // Wyświetl wyniki w wymaganym formacie
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // Wyświetl informację o uruchomieniu alarmu oraz komunikat o stanie
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online