Bir Listeyi Sıralama
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 7 / 65.
Bir listedeki öğeleri düzenlemeniz gerektiğinde, Dart, öğeleri artan düzende sıralayan sort() metodunu sunar. Bu metod, özellikle isimleri alfabetik sıraya koymak veya sayıları küçükten büyüğe sıralamak için kullanışlıdır.
sort() metodu, yeni bir sıralanmış liste oluşturmak yerine orijinal listeyi doğrudan değiştirir. Bir liste üzerinde sort() metodunu çağırdığınızda, mevcut öğeleri yerinde yeniden düzenler.
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]sort() metodu, dizeler ve sayılar gibi yaygın veri türleri için otomatik olarak çalışır. Dizeler için alfabetik olarak sıralama yaparken, sayılar için en düşükten en yükseğe doğru sıralar. Bu, öğelere öngörülebilir bir sırada ihtiyaç duyduğunuz her an verilerinizi düzenlemek için onu basit bir araç haline getirir.
Görev
KolayYemekleri farklı kategorilerde düzenleyerek bir restoran menü sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Restoran adını temsil eden bir dize (string) girdisi okuyun
- Yemek adlarını temsil eden birden fazla dize girdisi okuyun (boş bir dize alana kadar girdi devam edecektir)
- Yemekleri alfabetik sıraya koymak için
sort()metodunu kullanın - Düzenlenen menüyü aşağıda gösterilen tam formatta yazdırın
Örneğin, restoran adı "Bella Vista" ve yemekler "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie" ise programınız şu çıktıyı vermelidir:
Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabeticallyEğer restoran adı "Quick Bites" ve yemekler "Burger", "Pizza", "Sandwich" ise programınız şu çıktıyı vermelidir:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallyEğer restoran adı "Cafe Corner" ise ve sadece tek bir yemek "Coffee" verilmişse, programınız şu çıktıyı vermelidir:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyProgramınız yemekleri alfabetik olarak düzenlemek için sort() metodunu kullanmalıdır. sort() metodunun orijinal listeyi olduğu yerde (in place) değiştirdiğini unutmayın; bu nedenle hem orijinal hem de sıralanmış sürümleri görüntülemek istiyorsanız, sıralama yapmadan önce orijinal listenin bir kopyasını oluşturmanız gerekecektir.
Kopya kağıdı
sort() yöntemi, liste öğelerini artan düzende sıralar ve orijinal listeyi doğrudan değiştirir:
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]Dizeler için sort(), öğeleri alfabetik olarak sıralar. Sayılar için en düşükten en yükseğe doğru sıralar. sort() orijinal listeyi yerinde değiştirdiği için, orijinal sırayı korumanız gerekiyorsa önce bir kopya oluşturun.
Kendin dene
import 'dart:io';
void main() {
// Restoran adını oku
String? restaurantName = stdin.readLineSync();
// Boş dize gelene kadar yemek adlarını oku
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: Kodunuzu aşağıya yazın
// Orijinal listenin bir kopyasını oluşturun ve sıralayın
// Toplam yemek sayısını hesaplayın
// Gerekli çıktı formatını yazdırın
// Sonuçları yazdır
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}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