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 (string) girdisi okuyun
  2. Mevcut kiler malzemelerini temsil eden birden fazla dize girdisi okuyun (girdi "pantry_done" ifadesini aldığınızda sona erecektir)
  3. Gerekli tarif malzemelerini temsil eden birden fazla dize girdisi okuyun (girdi "recipe_done" ifadesini aldığınızda sona erecektir)
  4. Mevcut kiler malzemeleriyle bir Set (Küme) oluşturun
  5. Her bir gerekli malzemenin kilerde olup olmadığını kontrol etmek için contains() metodunu kullanın
  6. Tarif doğrulama sonuçlarını aşağıda gösterilen tam formatta yazdırın

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

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)

Eğer tarif adı "Scrambled Eggs" ise, kiler malzemeleri "eggs", "butter", "salt", "pepper" ve gerekli malzemeler "eggs", "butter", "salt" ise programınız şu çıktıyı vermelidir:

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

Eğer tarif adı "Fruit Salad" ise, kiler malzemeleri "apples", "bananas" ve gerekli malzemeler "apples", "oranges", "grapes", "honey" ise programınız şu çıktıyı vermelidir:

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, her bir gerekli malzemeyi kiler Set'ine karşı kontrol etmek için contains() metodunu 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.

Kopya kağıdı

Bir Set içinde belirli bir öğenin var olup olmadığını kontrol etmek için contains() metodunu kullanın. Öğe bulunursa true, bulunamazsa false değerini döndürür:

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

bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

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

contains() metodu, Set koleksiyonları ile oldukça verimlidir; bu da onu büyük veri kümelerinde bile hızlı aramalar için ideal kılar. Özellikle doğrulama, ön koşul kontrolü ve koşullu işlemler için kullanışlıdır.

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