Menu
Coddy logo textTech

'any' ile Koşul Kontrolü

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 13 / 65.

Bazen bir listedeki en az bir öğenin, her bir öğeyi incelemek zorunda kalmadan belirli bir koşulu karşılayıp karşılamadığını kontrol etmeniz gerekir. any() yöntemi, test koşulunuzu sağlayan ilk öğeyi bulur bulmaz true döndürerek bunu yapmanın verimli bir yolunu sunar.

any() yöntemi, her öğe için true veya false döndüren bir test fonksiyonu alır. Eğer herhangi bir öğe testi geçerse, any() anında true döndürür. Listenin tamamı kontrol edildikten sonra hiçbir öğe testi geçemezse, false döndürür.

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

// Herhangi bir ürünün fiyatının 100 dolardan fazla olup olmadığını kontrol edin
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

Bu yöntem, en az bir öğenin belirli kriterleri karşılayıp karşılamadığını bilmeniz gereken doğrulama senaryoları için özellikle yararlıdır. any() yöntemi, bir eşleşme bulur bulmaz kontrol etmeyi durdurur; bu da yalnızca bir şeyin var olup olmadığını bilmeniz gerektiğinde tüm listeyi manuel olarak döngüye almaktan daha verimli olmasını sağlar.

challenge icon

Görev

Kolay

Bir binadaki herhangi bir sensörün şüpheli etkinlik algılayıp algılamadığını kontrol ederek bir güvenlik sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Bina adını temsil eden bir dize (string) girdisi okuyun
  2. Farklı katlardan gelen sensör okumalarını temsil eden birden fazla tam sayı girdisi okuyun (girdi -1 değerini aldığınızda sona erecektir)
  3. Uyarı eşik değerini temsil eden bir tam sayı girdisi okuyun
  4. Herhangi bir sensör okumasının uyarı eşiğine eşit veya ondan büyük olup olmadığını kontrol etmek için any() metodunu kullanın
  5. Güvenlik izleme sonuçlarını tam olarak aşağıda gösterilen formatta yazdırın

Örneğin, bina adı "Office Tower", sensör okumaları 15, 23, 8, 45, 12 ve uyarı eşiği 40 ise programınızın çıktısı şöyle olmalıdır:

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

Eğer bina adı "Shopping Mall", sensör okumaları 18, 25, 12, 30 ve uyarı eşiği 50 ise programınızın çıktısı şöyle olmalıdır:

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

Eğer bina adı "Warehouse", sensör okumaları 75, 82 ve uyarı eşiği 70 ise programınızın çıktısı şöyle olmalıdır:

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

Programınız, herhangi bir sensör okumasının uyarı eşiğine eşit veya ondan büyük olup olmadığını kontrol etmek için any() metodunu kullanmalıdır. Herhangi bir sensör uyarıyı tetiklerse "Security breach detected - immediate response required", hiçbir sensör eşiği aşmazsa "All systems normal - no threats detected" mesajını görüntüleyin.

Kopya kağıdı

any() yöntemi, bir listedeki en az bir öğenin belirli bir koşulu karşılayıp karşılamadığını kontrol eder. Test koşulunu sağlayan ilk öğeyi bulur bulmaz true, hiçbir öğe testi geçemezse false değerini döndürür.

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

// Herhangi bir öğenin maliyetinin 100 dolardan fazla olup olmadığını kontrol edin
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem);  // true

any() yöntemi verimlidir çünkü bir eşleşme bulur bulmaz kontrol etmeyi durdurur; bu da onu yalnızca bir şeyin var olup olmadığını bilmeniz gereken doğrulama senaryoları için ideal kılar.

Kendin dene

import 'dart:io';

void main() {
  // Bina adını oku
  String? buildingName = stdin.readLineSync();
  
  // -1 ile karşılaşana kadar sensör okumalarını oku
  List<int> sensorReadings = [];
  while (true) {
    int reading = int.parse(stdin.readLineSync()!);
    if (reading == -1) {
      break;
    }
    sensorReadings.add(reading);
  }
  
  // Uyarı eşiğini oku
  int alertThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Kodunuzu aşağıya yazın
  // Herhangi bir sensör okumasının >= uyarı eşiği olup olmadığını kontrol etmek için any() metodunu kullanın
  
  // Sonuçları gerekli formatta yazdırın
  print('Building: $buildingName');
  print('Sensor readings: $sensorReadings');
  print('Alert threshold: $alertThreshold');
  print('Checking for readings >= $alertThreshold');
  // Uyarı tetiklenme sonucunu ve durum mesajını yazdırın
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler