Menu
Coddy logo textTech

Verificare condizioni con 'any'

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 13 di 65.

A volte devi verificare se almeno un elemento di un elenco soddisfa una condizione specifica, senza dover esaminare ogni singolo elemento. Il metodo any() offre un modo efficiente per farlo, restituendo true non appena trova il primo elemento che soddisfa la condizione di test.

Il metodo any() accetta una funzione di test che restituisce true o false per ogni elemento. Se un elemento qualsiasi supera il test, any() restituisce immediatamente true. Se nessun elemento supera il test dopo aver controllato l'intero elenco, restituisce false.

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

// Controlla se un articolo costa più di $100
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Questo metodo è particolarmente utile negli scenari di convalida in cui devi sapere se almeno un elemento soddisfa determinati criteri. Il metodo any() interrompe i controlli non appena trova una corrispondenza, risultando più efficiente che scorrere manualmente l’intero elenco quando devi solo sapere se qualcosa esiste.

challenge icon

Sfida

Facile

Crea un programma che gestisca un sistema di sicurezza controllando se un sensore in un edificio ha rilevato attività sospette. Il programma deve:

  1. Leggere una stringa di input che rappresenta il nome dell'edificio
  2. Leggere più input interi che rappresentano le letture dei sensori dei diversi piani (l'input terminerà quando riceverai -1)
  3. Leggere un input intero che rappresenta il valore della soglia di allarme
  4. Usare il metodo any() per verificare se una lettura di un sensore è maggiore o uguale alla soglia di allarme
  5. Stampare i risultati del monitoraggio di sicurezza nel formato esatto mostrato qui sotto

Ad esempio, se il nome dell'edificio è "Office Tower", le letture dei sensori sono 15, 23, 8, 45, 12 e la soglia di allarme è 40, il programma dovrebbe stampare:

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

Se il nome dell'edificio è "Shopping Mall", le letture dei sensori sono 18, 25, 12, 30 e la soglia di allarme è 50, il programma dovrebbe stampare:

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

Se il nome dell'edificio è "Warehouse", le letture dei sensori sono 75, 82 e la soglia di allarme è 70, il programma dovrebbe stampare:

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

Il programma deve usare il metodo any() per verificare se una lettura di un sensore è maggiore o uguale alla soglia di allarme. Visualizza "Security breach detected - immediate response required" se un sensore attiva l'allarme, oppure "All systems normal - no threats detected" se nessun sensore supera la soglia.

Provalo tu

import 'dart:io';

void main() {
  // Leggi il nome dell'edificio
  String? buildingName = stdin.readLineSync();
  
  // Leggi le letture dei sensori finché non viene incontrato -1
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // Leggi la soglia di allerta
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Scrivi il tuo codice qui sotto
  // Usa il metodo any() per verificare se una lettura dei sensori è >= alla soglia di allerta
  
  // Stampa i risultati nel formato richiesto
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // Stampa il risultato dell'attivazione dell'allerta e il messaggio di stato
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online