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); // falseBu 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.
Görev
KolayMutfak 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:
- Tarif adını temsil eden bir dize (string) girdisi okuyun
- Mevcut kiler malzemelerini temsil eden birden fazla dize girdisi okuyun (girdi
"pantry_done"ifadesini aldığınızda sona erecektir) - Gerekli tarif malzemelerini temsil eden birden fazla dize girdisi okuyun (girdi
"recipe_done"ifadesini aldığınızda sona erecektir) - Mevcut kiler malzemeleriyle bir Set (Küme) oluşturun
- Her bir gerekli malzemenin kilerde olup olmadığını kontrol etmek için
contains()metodunu kullanın - 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 availableEğ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); // falsecontains() 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");
}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
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi