Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التحقق من الشروط باستخدام 'any'

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 13 من 65.

أحياناً تحتاج إلى التحقق مما إذا كان عنصر واحد على الأقل في قائمة ما يستوفي شرطاً معيناً، دون الحاجة إلى فحص كل عنصر على حدة. توفر الطريقة any() وسيلة فعالة للقيام بذلك من خلال إرجاع true بمجرد العثور على أول عنصر يستوفي شرط الاختبار الخاص بك.

تأخذ الطريقة any() دالة اختبار تُرجع true أو false لكل عنصر. إذا اجتاز أي عنصر الاختبار، فإن any() تُرجع true فوراً. وإذا لم يجتز أي عنصر الاختبار بعد فحص القائمة بأكملها، فإنها تُرجع false.

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

// التحقق مما إذا كان أي عنصر يكلف أكثر من 100 دولار
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // صحيح

هذه الطريقة مفيدة بشكل خاص لسيناريوهات التحقق حيث تحتاج إلى معرفة ما إذا كان عنصر واحد على الأقل يستوفي معايير معينة. تتوقف الطريقة any() عن التحقق بمجرد العثور على تطابق، مما يجعلها أكثر كفاءة من التكرار يدويًا عبر القائمة بأكملها عندما تحتاج فقط إلى معرفة ما إذا كان هناك شيء موجود.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظاماً أمنياً من خلال التحقق مما إذا كان أي مستشعر في المبنى قد اكتشف نشاطاً مشبوهاً. يجب على برنامجك القيام بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم المبنى
  2. قراءة مدخلات صحيحة (integer) متعددة تمثل قراءات المستشعرات من طوابق مختلفة (ينتهي الإدخال عند استلام القيمة -1)
  3. قراءة مدخل صحيح (integer) يمثل قيمة عتبة التنبيه (alert threshold)
  4. استخدام التابع any() للتحقق مما إذا كانت أي قراءة للمستشعر أكبر من أو تساوي عتبة التنبيه
  5. طباعة نتائج المراقبة الأمنية بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم المبنى "Office Tower"، وقراءات المستشعرات هي 15، 23، 8، 45، 12، وعتبة التنبيه هي 40، فيجب أن يخرج برنامجك ما يلي:

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

إذا كان اسم المبنى "Shopping Mall"، وقراءات المستشعرات هي 18، 25، 12، 30، وعتبة التنبيه هي 50، فيجب أن يخرج برنامجك ما يلي:

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

إذا كان اسم المبنى "Warehouse"، وقراءات المستشعرات هي 75، 82، وعتبة التنبيه هي 70، فيجب أن يخرج برنامجك ما يلي:

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

يجب أن يستخدم برنامجك التابع any() للتحقق مما إذا كانت أي قراءة للمستشعر أكبر من أو تساوي عتبة التنبيه. اعرض "Security breach detected - immediate response required" إذا قام أي مستشعر بتفعيل التنبيه، أو "All systems normal - no threats detected" إذا لم تتجاوز أي مستشعرات العتبة.

ورقة مرجعية

تتحقق طريقة any() مما إذا كان عنصر واحد على الأقل في القائمة يستوفي شرطًا محددًا. وهي تعيد القيمة true بمجرد العثور على العنصر الأول الذي يستوفي شرط الاختبار، أو false إذا لم تجتز أي عناصر الاختبار.

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

// التحقق مما إذا كان أي عنصر يكلف أكثر من 100 دولار
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

تُعد طريقة any() فعالة لأنها تتوقف عن التحقق بمجرد العثور على تطابق، مما يجعلها مثالية لسيناريوهات التحقق من الصحة حيث تحتاج فقط إلى معرفة ما إذا كان هناك شيء موجود أم لا.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم المبنى
  String? buildingName = stdin.readLineSync();
  
  // قراءة قراءات المستشعر حتى يتم مواجهة -1
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // قراءة حد التنبيه
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: اكتب الكود الخاص بك أدناه
  // استخدم الطريقة any() للتحقق مما إذا كانت أي قراءة للمستشعر >= حد التنبيه
  
  // طباعة النتائج بالتنسيق المطلوب
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // طباعة نتيجة تفعيل التنبيه ورسالة الحالة
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow