Menu
Coddy logo textTech

'map' ile Dönüştürme

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

Bir listedeki her öğeyi yeni bir şeye dönüştürmeniz gerektiğinde, Dart güçlü map() metodunu sunar. Bu metod, listedeki her öğeye bir dönüşüm fonksiyonu uygular ve tüm dönüştürülmüş sonuçları içeren yeni bir liste oluşturur.

map() metodu, her bir öğenin nasıl dönüştürüleceğini tanımlayan bir fonksiyonu parametre olarak alır. Bu fonksiyon, orijinal listedeki her bir öğeyi alır ve dönüştürülmüş versiyonunu döndürür. map() metodu daha sonra tüm bu dönüştürülmüş değerleri yeni bir liste içinde toplar.

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

// Her sayıyı ikiyle çarparak dönüştür
var doubled = numbers.map((number) => number * 2);
print(doubled);  // (2, 4, 6, 8, 10)

Bu yaklaşım, manuel olarak yeni bir liste oluşturmaktan ve her bir öğeyi dönüştürmek için bir döngü kullanmaktan çok daha zariftir. map() yöntemi, veri dönüşümlerini net ve özlü bir şekilde ifade etmenize olanak tanıyarak fonksiyonel programlamadaki temel bir kavramı temsil eder.

challenge icon

Görev

Kolay

Bir mağaza envanterindeki tüm ürünlere yüzde bazlı fiyat ayarlamaları uygulayarak bir ürün fiyatlandırma sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Mağaza adını temsil eden bir dize (string) girdisi okuyun
  2. Orijinal ürün fiyatlarını temsil eden birden fazla ondalık girdi okuyun (girdi -1 değerini aldığınızda sona erecektir)
  3. Yüzde ayarlamasını temsil eden bir ondalık girdi okuyun (fiyat artışı için pozitif, indirim için negatif)
  4. Yüzde ayarlamasını uygulayarak her bir fiyatı dönüştürmek için map() metodunu kullanın
  5. Fiyatlandırma ayarlama sonuçlarını aşağıda gösterilen tam formatta yazdırın

Örneğin, mağaza adı "Tech Store", fiyatlar 99.99, 149.50, 79.99, 199.99 ve ayarlama 15.0 (%15 artış) ise, programınızın çıktısı şöyle olmalıdır:

Store: Tech Store
Original prices: [99.99, 149.5, 79.99, 199.99]
Applying 15.0% adjustment
Adjusted prices: (114.9885, 171.925, 91.9885, 229.9885)
Total items processed: 4
Status: Price adjustment completed

Eğer mağaza adı "Fashion Outlet", fiyatlar 29.99, 45.00 ve ayarlama -20.0 (%20 indirim) ise, programınızın çıktısı şöyle olmalıdır:

Store: Fashion Outlet
Original prices: [29.99, 45.0]
Applying -20.0% adjustment
Adjusted prices: (23.992, 36.0)
Total items processed: 2
Status: Price adjustment completed

Eğer mağaza adı "Book Corner" ise ve 0.0 ayarlama ile yalnızca tek bir fiyat 12.50 sağlanmışsa, programınızın çıktısı şöyle olmalıdır:

Store: Book Corner
Original prices: [12.5]
Applying 0.0% adjustment
Adjusted prices: (12.5)
Total items processed: 1
Status: Price adjustment completed

Programınız, yeni fiyatı şu formülü kullanarak hesaplayan bir dönüştürme fonksiyonu ile map() metodunu kullanmalıdır: originalPrice * (1 + percentage / 100). map() metodu, parantez formatında görüntülenecek olan tüm ayarlanmış fiyatları içeren bir yinelenebilir (iterable) döndürmelidir.

Kopya kağıdı

map() metodu, her bir öğeye bir fonksiyon uygulayarak bir listedeki her öğeyi dönüştürür ve sonuçlarla yeni bir liste oluşturur.

map() metodu, dönüşümü tanımlayan bir fonksiyonu parametre olarak alır. Bu fonksiyon her bir öğeyi alır ve dönüştürülmüş versiyonunu döndürür:

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

// Her sayıyı ikiyle çarparak dönüştür
var doubled = numbers.map((number) => number * 2);
print(doubled);  // (2, 4, 6, 8, 10)

Bu, manuel olarak yeni bir liste oluşturmaktan ve dönüşüm için döngüler kullanmaktan daha zariftir.

Kendin dene

import 'dart:io';

void main() {
  // Mağaza adını oku
  String? storeName = stdin.readLineSync();
  
  // -1 ile karşılaşana kadar fiyatları oku
  List<double> prices = [];
  while (true) {
    String? input = stdin.readLineSync();
    double price = double.parse(input!);
    if (price == -1) {
      break;
    }
    prices.add(price);
  }
  
  // Yüzdelik ayarlamayı oku
  String? adjustmentInput = stdin.readLineSync();
  double adjustment = double.parse(adjustmentInput!);
  
  // TODO: Kodunuzu aşağıya yazın
  // Tüm fiyatlara yüzdelik ayarlamayı uygulamak için map() metodunu kullanın
  // Formül: originalPrice * (1 + percentage / 100)
  
  // Sonuçları yazdır
  print('Store: $storeName');
  print('Original prices: $prices');
  print('Applying $adjustment% adjustment');
  // Ayarlanmış fiyatları parantez formatında yazdır
  // İşlenen toplam ürün 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