Meydan Okuma: Not Sıralayıcı
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 63 / 65.
Görev
KolayBir haritadan (map) öğrenci verilerini işleyen, geçen öğrencileri filtreleyen ve onları alfabetik olarak düzenleyen kapsamlı bir öğrenci not yönetim sistemi oluşturun. Bu meydan okuma; harita yineleme (map iteration), koşullu filtreleme, liste işlemleri ve sıralamayı birleştirir.
Size aşağıdaki girdi sağlanmıştır:
- Öğrenci adlarını (anahtarlar) ve test puanlarını (değerler) temsil eden bir JSON dizesi
JSON dizesi şu şekilde görünecektir: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
Göreviniz şunları yapmaktır:
- Uygun Dart yöntemlerini kullanarak JSON dizesini bir Map'e dönüştürün
- Geçen öğrencilerin adlarını saklamak için
passingStudentsadında boş bir liste oluşturun - Harita üzerinde gezinin ve 60 veya daha yüksek puan alan öğrencilerin adlarını
passingStudentslistesine ekleyin sort()yöntemini kullanarakpassingStudentslistesini alfabetik olarak sıralayın- Sınava giren toplam öğrenci sayısını şu formatta yazdırın:
Total students: X - Geçen öğrenci sayısını şu formatta yazdırın:
Students who passed: X - Kalan öğrenci sayısını şu formatta yazdırın:
Students who failed: X - Geçen öğrencileri alfabetik sırayla, her biri yeni bir satırda olacak şekilde şu formatta yazdırın:
Passing student: [name] - Eğer hiçbir öğrenci geçemediyse şunu yazdırın:
No students passed the exam
Programınız; düzgün harita yineleme, 60 geçme eşiğine göre verileri filtrelemek için koşullu mantık, liste manipülasyonu ve sıralama işlemlerini göstermelidir. Çıktı, geçen öğrencilerin alfabetik sırayla listelendiği, yukarıda belirtilen tam formatla eşleşmelidir.
Kendin dene
import 'dart:io';
import 'dart:convert';
void main() {
// JSON dize girişini oku
String? jsonString = stdin.readLineSync();
// JSON dizesini bir Map'e dönüştür
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// Geçen öğrencileri saklamak için boş bir liste oluştur
List<String> passingStudents = [];
// TODO: Kodunuzu aşağıya yazın
// 1. Map üzerinde döngü kurun ve 60 veya daha yüksek puan alan öğrencileri filtreleyin
// 2. Geçen öğrencilerin isimlerini passingStudents listesine ekleyin
// 3. passingStudents listesini alfabetik olarak sıralayın
// 4. Gerekli istatistikleri hesaplayın ve yazdırın
// 5. Geçen öğrencileri belirtilen formatta yazdırın
// Sonuçları çıktı olarak verin (kendi uygulamanızla değiştirin)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// Geçen öğrencileri veya "No students passed the exam" mesajını yazdırın
}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