Menu
Coddy logo textTech

Vérifier des conditions avec 'any'

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 13 sur 65.

Parfois, vous devez vérifier si au moins un élément d'une liste remplit une condition spécifique, sans avoir à examiner chaque élément. La méthode any() offre un moyen efficace de le faire en renvoyant true dès qu'elle trouve le premier élément qui satisfait votre condition de test.

La méthode any() prend une fonction de test qui renvoie true ou false pour chaque élément. Si un élément réussit le test, any() renvoie immédiatement true. Si aucun élément ne réussit le test après avoir vérifié toute la liste, elle renvoie false.

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

// Vérifier si un article coûte plus de 100 $
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Cette méthode est particulièrement utile pour les scénarios de validation où vous devez savoir si au moins un élément répond à certains critères. La méthode any() arrête la vérification dès qu'elle trouve une correspondance, ce qui la rend plus efficace que de parcourir manuellement toute la liste lorsque vous avez seulement besoin de savoir si quelque chose existe.

challenge icon

Défi

Facile

Créez un programme qui gère un système de sécurité en vérifiant si un capteur dans un bâtiment a détecté une activité suspecte. Votre programme doit :

  1. Lire une chaîne de caractères en entrée représentant le nom du bâtiment
  2. Lire plusieurs entiers en entrée représentant les relevés des capteurs de différents étages (la saisie se termine lorsque vous recevez -1)
  3. Lire un entier en entrée représentant la valeur du seuil d'alerte
  4. Utiliser la méthode any() pour vérifier si un relevé de capteur est supérieur ou égal au seuil d'alerte
  5. Afficher les résultats de la surveillance de sécurité dans le format exact indiqué ci-dessous

Par exemple, si le nom du bâtiment est "Office Tower", que les relevés des capteurs sont 15, 23, 8, 45, 12, et que le seuil d'alerte est 40, votre programme doit afficher :

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

Si le nom du bâtiment est "Shopping Mall", que les relevés des capteurs sont 18, 25, 12, 30, et que le seuil d'alerte est 50, votre programme doit afficher :

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

Si le nom du bâtiment est "Warehouse", que les relevés des capteurs sont 75, 82, et que le seuil d'alerte est 70, votre programme doit afficher :

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

Votre programme doit utiliser la méthode any() pour vérifier si un relevé de capteur est supérieur ou égal au seuil d'alerte. Affichez "Security breach detected - immediate response required" si un capteur déclenche l'alerte, ou "All systems normal - no threats detected" si aucun capteur ne dépasse le seuil.

Aide-mémoire

La méthode any() vérifie si au moins un élément d'une liste remplit une condition spécifique. Elle renvoie true dès qu'elle trouve le premier élément qui satisfait la condition de test, ou false si aucun élément ne réussit le test.

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

// Check if any item costs more than $100
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

La méthode any() est efficace car elle arrête la vérification dès qu'elle trouve une correspondance, ce qui la rend idéale pour les scénarios de validation où vous avez seulement besoin de savoir si quelque chose existe.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom du bâtiment
  String? buildingName = stdin.readLineSync();
  
  // Lire les relevés des capteurs jusqu'à ce que -1 soit rencontré
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // Lire le seuil d'alerte
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Écrivez votre code ci-dessous
  // Utilisez la méthode any() pour vérifier si un relevé de capteur est >= au seuil d'alerte
  
  // Afficher les résultats au format requis
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // Afficher le résultat du déclenchement de l'alerte et le message de statut
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux