İçeriğe geç

C# · 7/8

Listeler: birden çok bilgiyi saklamak

Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

C# · Listeler: birden çok bilgiyi saklamak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Listeler: birden çok bilgiyi saklamak

Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.

Kavramı kur

Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.

Neden böyle çalışıyor?

Koleksiyonun uzunluğu ile son geçerli indis farklıdır. Üç öğe varsa uzunluk 3, son indis 2 olur. Bir öğeyi ekledikten veya sildikten sonra bu değerler değişebilir. Sabit bir son indis varsaymak yerine uzunluğu ve dolaşma yöntemini kullanmayı öğren.

Çalışma sırası

Veri yapısına hangi işi yaptığını açıkça ayır: sona eklemek, var olan öğeyi değiştirmek ve yeni bir koleksiyon üretmek aynı işlem değildir. Çıktıyı kontrol ederken hem içerik hem sıra hem de öğe sayısını incele. Küçük örnekte bunları doğru kurmak daha sonra dosya ve API verilerini işlemenin temelidir.

İkinci örnek · 1

Başlangıç koleksiyonu iki isim içerir. Kodun tamamı yazılı derste bulunur.

Kod

using System;
using System.Collections.Generic;
class Program {
  static void Main() {
    var isimler = new List<string> { "Elif", "Mert" };
    isimler.Add("Deniz");
    Console.WriteLine(isimler[0]);
    Console.WriteLine(isimler[2]);
    Console.WriteLine(isimler.Count);
  }
}

Beklenen sonucu oku

Öğe sayısı 3 olur; son geçerli indis 2 olarak kalır.

Beklenen çıktı: Elif Deniz 3

Bir değeri sen değiştir

Başlangıçtaki isimleri değiştir; sıra ve indisleri kâğıda yaz. Bir isim daha ekle; sayının 4 olduğunu doğrula.

Hata nereden gelir?

Uzunluğu son indis gibi kullanmak sınır dışına erişir; üç öğede son konum 2’dir.

Kendi çözümünü kur

Koleksiyonu döngüyle dolaşıp bütün isimleri yazdır; elle indis tekrarlamak yerine uygun dolaşma yapısını seç. Koleksiyonun her değişiminden sonra içerik listesini ve uzunluğu ayrı ayrı not et.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

using System;
using System.Collections.Generic;
class Program {
  static void Main() {
    var isimler = new List<string> { "Elif", "Mert" };
    isimler.Add("Ece");
    Console.WriteLine(isimler[0]);
    Console.WriteLine(isimler[2]);
    Console.WriteLine(isimler.Count);
  }
}

Kendini kontrol et

Üç öğeli sıfır tabanlı bir koleksiyonda son geçerli indis nedir? Yanıt: 2; uzunluk 3 olması 3 indisinin var olduğu anlamına gelmez.

Beklenen çıktı: Elif Ece 3

Konu anlatımı

Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.

Koleksiyonun uzunluğu ile son geçerli indis farklıdır. Üç öğe varsa uzunluk 3, son indis 2 olur. Bir öğeyi ekledikten veya sildikten sonra bu değerler değişebilir. Sabit bir son indis varsaymak yerine uzunluğu ve dolaşma yöntemini kullanmayı öğren.

Veri yapısına hangi işi yaptığını açıkça ayır: sona eklemek, var olan öğeyi değiştirmek ve yeni bir koleksiyon üretmek aynı işlem değildir. Çıktıyı kontrol ederken hem içerik hem sıra hem de öğe sayısını incele. Küçük örnekte bunları doğru kurmak daha sonra dosya ve API verilerini işlemenin temelidir.

List<string> öğe türünü string olarak sınırlar. Add yeni bir öğeyi sona ekler; Count kaç öğe olduğunu bildirir. Dizi olan string[] ile List<string> aynı tür değildir. Bu derste dinamik boyutlu bir liste kullanıyoruz; veri miktarı değişebildiği için uygun bir başlangıçtır.

İlk örneği oku ve dene

7

Listeler: birden çok bilgiyi saklamak

List, birden fazla değeri sırayla tutar ve büyüyebilir. <string> listenin yazı tutacağını söyler. Add eleman ekler, Count eleman sayısını verir. İlk elemanın sıra numarası 0'dır.

C#
using System.Collections.Generic;

var alisveris = new List<string> { "ekmek", "süt", "yumurta" };
alisveris.Add("peynir");

Console.WriteLine(alisveris[0]);
Console.WriteLine($"{alisveris.Count} ürün var");

▶ Sonuç

ekmek
4 ürün var

Adım adım neden böyle çalışıyor?

  1. Başlangıç koleksiyonu iki isim içerir.
  2. Sona ekleme üçüncü öğeyi oluşturur.
  3. 0 konumu Elif; 2 konumu Deniz değerini gösterir.
  4. Öğe sayısı 3 olur; son geçerli indis 2 olarak kalır.
107

İkinci çözümlü örnek

Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.

C#
using System;
using System.Collections.Generic;
class Program {
  static void Main() {
    var isimler = new List<string> { "Elif", "Mert" };
    isimler.Add("Deniz");
    Console.WriteLine(isimler[0]);
    Console.WriteLine(isimler[2]);
    Console.WriteLine(isimler.Count);
  }
}

▶ Sonuç

Elif
Deniz
3

Kolaydan zora sen dene

  1. Başlangıçtaki isimleri değiştir; sıra ve indisleri kâğıda yaz.
  2. Bir isim daha ekle; sayının 4 olduğunu doğrula.
  3. Koleksiyonu döngüyle dolaşıp bütün isimleri yazdır; elle indis tekrarlamak yerine uygun dolaşma yapısını seç.
İpucunu aç

Koleksiyonun her değişiminden sonra içerik listesini ve uzunluğu ayrı ayrı not et.

Üç görevin açıklamalı çözümünü oku
  1. Yeni isimler aynı sırayla 0,1,2 konumlarında tutulur; değer değişmesi indislerin temel kuralını değiştirmez.
  2. Bir öğe daha eklenince uzunluk 4, son geçerli indis 3 olur. Eski indisleri körlemesine kopyalamadan koleksiyon durumunu tekrar çiz.
  3. Koleksiyonu doğrudan öğe öğe dolaş; her turda o ismi yazdır. Beklenen çıktı, eklediğin isimlerin koleksiyondaki sırasıdır.
Bir çözüm varyasyonu gör
207

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

C#
using System;
using System.Collections.Generic;
class Program {
  static void Main() {
    var isimler = new List<string> { "Elif", "Mert" };
    isimler.Add("Ece");
    Console.WriteLine(isimler[0]);
    Console.WriteLine(isimler[2]);
    Console.WriteLine(isimler.Count);
  }
}

▶ Sonuç

Elif
Ece
3

Yaygın hata ve çözümü

  1. Uzunluğu son indis gibi kullanmak sınır dışına erişir; üç öğede son konum 2’dir.
  2. Ekleme işleminin dönüşünü yeni koleksiyon sanma; kullanılan metodun sözleşmesini kontrol et.

Kendini değerlendir

Çoğu dilde listenin ilk elemanının indeksi nedir?

Ezberlemeden açıklayabiliyor musun?

Üç öğeli sıfır tabanlı bir koleksiyonda son geçerli indis nedir?

Açıklamalı yanıt

2; uzunluk 3 olması 3 indisinin var olduğu anlamına gelmez.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.