Menu
Coddy logo textTech

Listeden Silme: removeWhere

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

Bazen belirli bir koşula bağlı olarak bir listeden birden fazla öğeyi kaldırmanız gerekir. Öğeleri tek tek kaldırmak yerine Dart, bir test koşuluyla eşleşen tüm öğeleri tek bir işlemde kaldırabilen removeWhere() metodunu sunar.

removeWhere() yöntemi, parametre olarak bir test fonksiyonu alır. Bu fonksiyon, listedeki her bir öğeyi alır ve öğenin kaldırılması gerekiyorsa true, kalması gerekiyorsa false değerini döndürür. Yöntem daha sonra, test fonksiyonunun true döndürdüğü tüm öğeleri kaldırır.

List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8];

// Tüm çift sayıları kaldır
numbers.removeWhere((number) => number % 2 == 0);

print(numbers);  // [1, 3, 5, 7]

Bu yaklaşım, öğeleri tek tek manuel olarak arayıp kaldırmaktan çok daha verimlidir. removeWhere() yöntemi orijinal listeyi doğrudan değiştirir, bu da onu bir boolean testi olarak ifade edebileceğiniz herhangi bir koşula göre listeleri temizlemek için güçlü bir araç haline getirir.

challenge icon

Görev

Kolay

Bir sınıf listesinden kalan öğrencileri çıkararak öğrenci not filtreleme sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Sınıf adını temsil eden bir dize (string) girdisi okuyun
  2. Öğrenci puanlarını temsil eden birden fazla tam sayı (integer) girdisi okuyun (girdi -1 değerini aldığınızda sona erecektir)
  3. 60'ın altındaki tüm puanları (başarısız notlar) kaldırmak için removeWhere() metodunu kullanın
  4. Not filtreleme sonuçlarını tam olarak aşağıda gösterilen formatta yazdırın

Örneğin, sınıf adı "Mathematics 101" ve puanlar 85, 45, 92, 38, 76, 55, 88 ise programınız şu çıktıyı vermelidir:

Class: Mathematics 101
Original scores: [85, 45, 92, 38, 76, 55, 88]
Removed failing scores (below 60)
Passing scores: [85, 92, 76, 88]
Students passed: 4
Students failed: 3

Eğer sınıf adı "History 201" ise ve tüm puanlar geçer not ise: 75, 82, 91, programınız şu çıktıyı vermelidir:

Class: History 201
Original scores: [75, 82, 91]
Removed failing scores (below 60)
Passing scores: [75, 82, 91]
Students passed: 3
Students failed: 0

Eğer sınıf adı "Chemistry 301" ise ve tüm puanlar başarısız ise: 45, 32, 58, programınız şu çıktıyı vermelidir:

Class: Chemistry 301
Original scores: [45, 32, 58]
Removed failing scores (below 60)
Passing scores: []
Students passed: 0
Students failed: 3

Programınız, 60'ın altındaki puanlar için true döndüren bir test fonksiyonu ile removeWhere() metodunu kullanmalıdır. Bu metod, tüm başarısız notları kaldırarak orijinal listeyi değiştirmeli ve geriye sadece geçen puanları bırakmalıdır.

Kopya kağıdı

removeWhere() yöntemi, bir listeden belirli bir koşulla eşleşen tüm öğeleri kaldırır. Kaldırılacak öğeler için true, tutulacak öğeler için false döndüren bir test fonksiyonu alır.

List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8];

// Tüm çift sayıları kaldır
numbers.removeWhere((number) => number % 2 == 0);

print(numbers);  // [1, 3, 5, 7]

Bu yöntem orijinal listeyi doğrudan değiştirir ve öğeleri tek tek kaldırmaktan daha verimlidir.

Kendin dene

import 'dart:io';

void main() {
  // Sınıf adını oku
  String? className = stdin.readLineSync();
  
  // -1 ile karşılaşana kadar puanları oku
  List<int> scores = [];
  while (true) {
    int score = int.parse(stdin.readLineSync()!);
    if (score == -1) {
      break;
    }
    scores.add(score);
  }
  
  // Görüntülemek için orijinal puanları sakla
  List<int> originalScores = List.from(scores);
  
  // TODO: Kodunuzu aşağıya yazın
  // 60'ın altındaki puanları kaldırmak için removeWhere() metodunu kullanın
  
  // Sonuçları yazdır
  print('Class: $className');
  print('Original scores: $originalScores');
  print('Removed failing scores (below 60)');
  print('Passing scores: $scores');
  print('Students passed: ${scores.length}');
  print('Students failed: ${originalScores.length - scores.length}');
}
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