Menu
CoddyTech

Memeriksa elemen dalam set

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 20 dari 65.

Saat bekerja dengan Set, kamu akan sering perlu memeriksa apakah elemen tertentu ada dalam koleksi. Method contains() menyediakan cara yang sederhana dan efisien untuk melakukan pemeriksaan ini, dengan mengembalikan true jika elemen ditemukan dan false jika tidak.

Salah satu keunggulan utama menggunakan contains() dengan Set adalah performanya yang luar biasa. Berbeda dengan pencarian melalui List yang mungkin mengharuskan setiap elemen diperiksa satu per satu, operasi Set dioptimalkan untuk pencarian cepat, sehingga contains() tetap sangat efisien bahkan dengan koleksi besar.

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

// Periksa apakah bahan tertentu tersedia
bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

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

Method ini sangat berguna saat kamu perlu memvalidasi data, memeriksa prasyarat, atau memfilter informasi berdasarkan keanggotaan dalam koleksi tertentu. Hasil boolean membuatnya cocok digunakan dalam pernyataan percabangan dan operasi logika.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem validasi resep dengan memeriksa ketersediaan bahan tertentu di pantry dapur. Programmu harus:

  1. Membaca input string yang mewakili nama resep
  2. Membaca beberapa input string yang mewakili bahan yang tersedia di pantry (input akan berakhir saat kamu menerima "pantry_done")
  3. Membaca beberapa input string yang mewakili bahan yang dibutuhkan untuk resep (input akan berakhir saat kamu menerima "recipe_done")
  4. Membuat set berisi bahan yang tersedia di pantry
  5. Menggunakan method contains() untuk memeriksa apakah setiap bahan yang dibutuhkan tersedia di pantry
  6. Mencetak hasil validasi resep dengan format persis seperti yang ditunjukkan di bawah

Misalnya, jika nama resepnya adalah "Chocolate Chip Cookies", bahan di pantry adalah "flour", "sugar", "eggs", "butter", "vanilla", dan bahan yang dibutuhkan adalah "flour", "sugar", "chocolate chips", "butter", programmu harus menghasilkan:

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)

Jika nama resepnya adalah "Scrambled Eggs", bahan di pantry adalah "eggs", "butter", "salt", "pepper", dan bahan yang dibutuhkan adalah "eggs", "butter", "salt", programmu harus menghasilkan:

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

Jika nama resepnya adalah "Fruit Salad", bahan di pantry adalah "apples", "bananas", dan bahan yang dibutuhkan adalah "apples", "oranges", "grapes", "honey", programmu harus menghasilkan:

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)

Programmu harus menggunakan method contains() untuk memeriksa setiap bahan yang dibutuhkan terhadap set pantry. Simpan bahan yang dibutuhkan dalam list untuk mempertahankan urutan pemeriksaan, dan kumpulkan bahan yang tidak tersedia dalam list terpisah. Jika semua bahan tersedia, tampilkan "Ready to cook - all ingredients available" sebagai status. Jika ada bahan yang tidak tersedia, tampilkan "Cannot make recipe - missing X ingredient(s)", dengan X sebagai jumlah bahan yang tidak tersedia.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama resep
  String? recipeName = stdin.readLineSync();
  
  // Baca bahan yang tersedia sampai "pantry_done"
  Set<String> pantryIngredients = <String>{};
  String? pantryInput;
  while ((pantryInput = stdin.readLineSync()) != "pantry_done") {
    if (pantryInput != null) {
      pantryIngredients.add(pantryInput);
    }
  }
  
  // Baca bahan yang diperlukan sampai "recipe_done"
  List<String> requiredIngredients = <String>[];
  String? recipeInput;
  while ((recipeInput = stdin.readLineSync()) != "recipe_done") {
    if (recipeInput != null) {
      requiredIngredients.add(recipeInput);
    }
  }
  
  // TODO: Tulis kodemu di bawah ini
  // Gunakan pantryIngredients.contains() untuk memeriksa setiap bahan yang diperlukan
  // Buat list untuk menyimpan bahan yang kurang
  // Periksa ketersediaan dan tampilkan hasil dalam format yang diminta
  
  // Tampilkan hasilnya (ganti dengan implementasimu)
  print("Recipe: $recipeName");
  print("Pantry ingredients: $pantryIngredients");
  print("Required ingredients: $requiredIngredients");
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online