Menu
CoddyTech

Küme Oluşturma

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

Artık bir Set'in ne olduğunu anladığına göre, şimdi nasıl oluşturulacağını öğrenelim. Dart'ta, matematiksel bir küme yazmaya benzer şekilde, elemanları virgülle ayırarak küme parantezleri {} kullanıp bir Set oluşturursun.

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

Bu sözdizimini Map oluşturmaktan ayırmak önemlidir. Her ikisi de süslü parantez kullansa da Set yalnızca değerler içerirken Map iki nokta üst üste ile ayrılmış anahtar-değer çiftleri içerir. Boş bir Set, boş bir Map'ten ayırt edilebilmesi için türü belirtilerek açıkça tanımlanmalıdır.

Set<String> emptySet = <String>{};  // Boş küme
Map<String, int> emptyMap = {};     // Boş harita

Yinelenen değerlere sahip bir Set de oluşturabilirsin, ancak yinelenenlerin otomatik olarak kaldırılacağını ve son koleksiyonda yalnızca benzersiz öğelerin kalacağını unutma.

Elindeki bir listeden küme oluşturmak için toSet() metodunu çağır:

List<String> tags = ['dart', 'web', 'dart'];
Set<String> unique = tags.toSet();
print(unique);  // {dart, web}
challenge icon

Görev

Kolay

Bir blog gönderisi için benzersiz etiketlerden bir Set oluşturarak blog etiketleme sistemini yöneten bir program oluştur. Programın şunları yapmalıdır:

  1. Blog gönderisinin başlığını temsil eden bir dize girdisi oku
  2. Gönderiye eklenecek etiketleri temsil eden birden fazla dize girdisi oku ( "done" alındığında girdi sona erecektir)
  3. Benzersiz etiketleri depolamak için bir dize Set'i oluştur
  4. Her etiketi Set'e ekle (yinelenenler otomatik olarak kaldırılır)
  5. Blog etiketleme sonuçlarını aşağıda gösterilen biçimin aynısıyla yazdır

Örneğin, blog başlığı "Introduction to Dart Programming" ve etiketler "programming", "dart", "tutorial", "programming", "beginner" ise programın şu çıktıyı vermelidir:

Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfully

Blog başlığı "Web Development Tips" ve etiketler "web", "html", "css", "web", "html", "javascript" ise programın şu çıktıyı vermelidir:

Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfully

Blog başlığı "Getting Started" ve etiketler "guide", "basics" ise programın şu çıktıyı vermelidir:

Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully

Programın etiket listesinden bir Set oluşturmalı ve Set'lerin yinelenenleri otomatik olarak nasıl kaldırdığını göstermelidir. Önce girilen tüm etiketleri, başlangıçta girilenleri göstermek için bir listede sakla; ardından benzersiz etiketleri göstermek için Set'i oluştur. Set, içeriğini süslü parantezlerle standart Set biçiminde göstermelidir.

Kendin dene

import 'dart:io';

void main() {
  // Blog yazısının başlığını oku
  String? title = stdin.readLineSync();
  
  // "done" girilene kadar etiketleri oku
  List<String> allTags = [];
  String? tag;
  while ((tag = stdin.readLineSync()) != "done") {
    if (tag != null) {
      allTags.add(tag);
    }
  }
  
  // TODO: Kodunu buraya yaz
  // Benzersiz etiketleri elde etmek için etiketler listesinden bir Set oluştur
  // Toplam benzersiz etiket sayısını hesapla
  
  // Sonuçları çıktı olarak ver
  print("Blog Post: $title");
  print("Tags added: $allTags");
  // Benzersiz etiketleri Set biçiminde yazdır
  // Toplam benzersiz etiket sayısını yazdır
  // Durum mesajını yazdır
}
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