Menu
Coddy logo textTech

Küme İçinde Eleman Kontrolü

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

Bir Set ile çalışırken, koleksiyonda belirli bir öğenin var olup olmadığını sık sık kontrol etmeniz gerekecektir. contains() yöntemi, bu kontrolü gerçekleştirmek için basit ve verimli bir yol sunar; öğe bulunursa true, bulunmazsa false döndürür.

Set ile contains() kullanmanın temel avantajlarından biri, olağanüstü performansıdır. Her bir öğenin tek tek kontrol edilmesi gerekebileceği bir List içinde arama yapmanın aksine, Set işlemleri hızlı aramalar için optimize edilmiştir; bu da contains() metodunu büyük koleksiyonlarda bile çok verimli hale getirir.

Set<String> ingredients = {'flour', 'sugar', 'eggs', 'butter'};

// Belirli malzemelerin mevcut olup olmadığını kontrol edin
bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

print(hasFlour);  // true
print(hasMilk);   // false

Bu yöntem; verileri doğrulamanız, ön koşulları kontrol etmeniz veya belirli bir koleksiyondaki üyeliğe dayalı olarak bilgileri filtrelemeniz gerektiğinde özellikle yararlıdır. Boole sonucu, yöntemi koşullu ifadelerde ve mantıksal işlemlerde kullanım için mükemmel kılar.

challenge icon

Görev

Kolay

Mutfak kilerinde belirli malzemelerin bulunup bulunmadığını kontrol ederek bir tarif doğrulama sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Tarif adını temsil eden bir dize girdisi okuyun
  2. Mevcut kiler malzemelerini temsil eden birden fazla dize girdisi okuyun (girdi, "pantry_done" aldığınızda sona erecektir)
  3. Tarif için gerekli malzemeleri temsil eden birden fazla dize girdisi okuyun (girdi, "recipe_done" aldığınızda sona erecektir)
  4. Mevcut kiler malzemeleriyle bir Set oluşturun
  5. Gerekli her malzemenin kilerde bulunup bulunmadığını kontrol etmek için contains() yöntemini kullanın
  6. Tarif doğrulama sonuçlarını aşağıda gösterilen tam biçimde yazdırın

Örneğin tarif adı "Chocolate Chip Cookies", kiler malzemeleri "flour", "sugar", "eggs", "butter", "vanilla" ve gerekli malzemeler "flour", "sugar", "chocolate chips", "butter" ise programınız şunu çıktılar:

Recipe: Chocolate Chip Cookies
Pantry ingredients: {flour, sugar, eggs, butter, vanilla}
Required ingredients: [flour, sugar, chocolate chips, butter]
Checking ingredient availability:
- flour: Available
- sugar: Available
- chocolate chips: Missing
- butter: Available
Missing ingredients: [chocolate chips]
Status: Cannot make recipe - missing 1 ingredient(s)

Tarif adı "Scrambled Eggs", kiler malzemeleri "eggs", "butter", "salt", "pepper" ve gerekli malzemeler "eggs", "butter", "salt" ise programınız şunu çıktılar:

Recipe: Scrambled Eggs
Pantry ingredients: {eggs, butter, salt, pepper}
Required ingredients: [eggs, butter, salt]
Checking ingredient availability:
- eggs: Available
- butter: Available
- salt: Available
Missing ingredients: []
Status: Ready to cook - all ingredients available

Tarif adı "Fruit Salad", kiler malzemeleri "apples", "bananas" ve gerekli malzemeler "apples", "oranges", "grapes", "honey" ise programınız şunu çıktılar:

Recipe: Fruit Salad
Pantry ingredients: {apples, bananas}
Required ingredients: [apples, oranges, grapes, honey]
Checking ingredient availability:
- apples: Available
- oranges: Missing
- grapes: Missing
- honey: Missing
Missing ingredients: [oranges, grapes, honey]
Status: Cannot make recipe - missing 3 ingredient(s)

Programınız, gerekli her malzemeyi kiler Set'ine karşı kontrol etmek için contains() yöntemini kullanmalıdır. Kontrol sırasını korumak için gerekli malzemeleri bir listede saklayın ve eksik malzemeleri ayrı bir listede toplayın. Tüm malzemeler mevcutsa durum olarak "Ready to cook - all ingredients available" gösterin. Herhangi bir malzeme eksikse, X eksik malzeme sayısı olmak üzere "Cannot make recipe - missing X ingredient(s)" gösterin.

Kendin dene

import 'dart:io';

void main() {
  // Tarif adını oku
  String? recipeName = stdin.readLineSync();
  
  // "pantry_done" gelene kadar kilerdeki malzemeleri oku
  Set<String> pantryIngredients = <String>{};
  String? pantryInput;
  while ((pantryInput = stdin.readLineSync()) != "pantry_done") {
    if (pantryInput != null) {
      pantryIngredients.add(pantryInput);
    }
  }
  
  // "recipe_done" gelene kadar gerekli malzemeleri oku
  List<String> requiredIngredients = <String>[];
  String? recipeInput;
  while ((recipeInput = stdin.readLineSync()) != "recipe_done") {
    if (recipeInput != null) {
      requiredIngredients.add(recipeInput);
    }
  }
  
  // TODO: Kodunuzu aşağıya yazın
  // Her bir gerekli malzemeyi kontrol etmek için pantryIngredients.contains() kullanın
  // Eksik malzemeleri saklamak için bir liste oluşturun
  // Mevcudiyeti kontrol edin ve sonuçları istenen formatta yazdırın
  
  // Sonuçları yazdır (kendi uygulamanızla değiştirin)
  print("Recipe: $recipeName");
  print("Pantry ingredients: $pantryIngredients");
  print("Required ingredients: $requiredIngredients");
}
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

Kendi başına pratik yap: Online Dart derleyicisi