10. SınıfBilişim Teknolojileri

Diziler ve Koleksiyonlarla Çalışma

Bilişim Teknolojileri · 10. Sınıf · Çalışma Ortamı ve Temel İşlemler

Konu Anlatımı

Diziler ve Koleksiyonlarla Çalışma

Bir sınıfın notlarını, bir laboratuvarun sıcaklık kayıtlarını ya da bir ağdaki cihaz adreslerini saklamak için her seferinde ayrı bir değişken tanımlamak pratik değildir. Aynı tipteki bu değerleri tek bir yapıda toplamanın yolu dizidir. Dizi, sıralı ve ardışık bellek hücrelerinden oluşur; bu nedenle elemanlara sıra numarasıyla, yani indeksle doğrudan erişilir. Diziler ve koleksiyonlar, veri toplama ve işleme algoritmalarının temel taşlarıdır.

Bu derste ne öğreneceğiz?

Bu konuda önce dizinin nasıl tanımlandığını ve indeksleme kuralını öğreneceğiz. Ardından dizi elemanlarını foreach ve for döngüleriyle gezip toplam, ortalama, en büyük ve en küçük değerleri hesaplayacağız. Sıralama ve arama işlemlerini karşılaştırmalı olarak inceleyeceğiz. List koleksiyonunun diziden farkını ve eleman ekleme silme işlemlerini öğreneceğiz. Son olarak iki diziyi paralel kullanarak kayıtları eşleştirmeyi ve ağırlıklı istatistik hesaplamayı uygulayacağız.

1. Ön bilgi: veri tipi ve bellek düzeni

Dizi tanımlanırken elemanların veri tipi açıkça belirtilir. Beş tane tamsayı tutulacaksa beş elemanlı bir tamsayı dizisi, on tane metin tutulacaksa on elemanlı bir metin dizisi yazılır. Dizinin eleman sayısı tanım anında sabitlenir; sonradan büyütülmek isteniyorsa liste kullanılmalıdır. Diziler referans tipidir; tanımladığınız nesne bellekte ardışık olarak durur ve bu düzen bellekten hızlı erişim sağlar.

Dizi adı bir nesne yönelimli sınıf örneğidir ve kullanıldığında nesnenin adı yazılır. Dizi oluşturulduktan sonra indeks sıfırdan başlar. Beş elemanlı bir dizinin geçerli indeksleri 0, 1, 2, 3 ve 4'tür; 5 numaralı indeks geçersizdir ve çalışma zamanında hata üretir. Bu kural öğrencilerin en sık karşılaştığı hata kaynağıdır.

2. Dizi tanımlama ve elemana erişim

C# dilinde dizi tanımlanırken köşeli parantez kullanılır: int[] notlar = new int[5]; ifadesi beş elemanlı bir tamsayı dizisi oluşturur. Alternatif olarak değerler tanım anında da verilebilir: int[] notlar = new int[] { 45, 62, 78, 51, 88 };. Elemana erişirken dizi adı ve indeks köşeli parantez içinde yazılır: notlar[2] = 78; satırı dizinin üçüncü elemanına 78 değerini atar.

Bir dizinin uzunluğu Length özelliğiyle öğrenilir. Bu özellik döngü kurarken çok kullanılır, çünkü dizinin eleman sayısı değişirse döngünün sınırını elle güncellemek gerekmez. Dizi elemanlarının hepsini ekrana yazdırmak için döngü kurma kalıbı kullanılır; her iki yazım da aynı sonucu verir ancan kod uzunluğu açısından foreach daha kısadır.

3. foreach ile gezme ve istatistik hesabı

foreach döngüsü bir koleksiyonun elemanlarını sırayla gezmek için tasarlanmıştır ve dizilerde en sık kullanılan yazımdır. Döngü gövdesinde elemanın değeri geçici bir değişkende tutulur; indeksleme gerekmediği sürece döngü değişkeni yazılmaz. Bu yazım, dizinin indeks sırasına bağlı olmadığı her durumda tercih edilir.

Dizi elemanlarının toplamı, ortalaması, en büyük ve en küçük değeri bu döngüyle bulunur. Toplam için biriktirici bir değişken tutulur ve her adımda üzerine elemanın değeri eklenir. Ortalama, toplamın eleman sayısına bölünmesiyle elde edilir. Sekiz notluk bir dizi için notlar 45, 62, 78, 51, 88, 34, 67 ve 92 ise toplam 517 bulunur ve ortalama 517 / 8 = 64,63 çıkar.

4. Tamsayı bölmesi tuzağı

C# dilinde iki tam sayıyı böldüğünüzde sonuç da tam sayıdır; kesirli kısım atılır. Döngü kurma ya da istatistik hesabı içinde bu kurala dikkat edilmelidir, çünkü yanlışlıkla tam sayı bölmesi yapıldığında sonuç sessizce küçük çıkar ve program hata vermez. Örneğin 10 / 3 yazıldığında ekrana 3 çıkar; kesirli sonuç istediğinizde 10 / 3 = 3,33 değerini kullanmalısınız.

Ortalama hesabında doğru çözüm, toplamı double bir değişkende tutmaktır. Çünkü toplam değişkeni de tam sayı tipindeyse bölme işlemi yine tam sayı bölmesi olur. Bu nedenle ortalama gerektiren her hesapta ilk bölme yapılmadan önce en az bir değere ondalık noktası ya da ondalık sayı tipi atanmalıdır. Bu kural sınavlarda sık sorulan bir ayrıntıdır.

5. Sıralama ve arama

Dizi sıralandığında arama işlemi çok kolaylaşır. Sıralı bir dizide arama, ortadan başlayarak elemanları atlayarak yapılabilir; bu yönteme ikili arama denir ve n elemanlı dizide en fazla n / 2 adımda sonuç bulunur. Sırasız dizide ise her eleman tek tek kontrol edilir ve n elemanlı dizide en fazla n adım gerekir.

Sıralamanın maliyeti de eleman sayısıyla ilişkilidir. Bir elemanın yerine oturması için diğer tüm elemanlarla karşılaştırılması gerektiğinden n elemanlı bir dizide en kötü durumda n × (n − 1) / 2 karşılaştırma yapılır. Bu nedenle küçük veri kümelerinde sıralama pratikte anında tamamlanırken, çok büyük listelerde sıralama yerine önceden sıralanmış bir veri kaynağı kullanmak daha akıcıdır.

6. List koleksiyonu ve diziden farkı

Dizinin eleman sayısı tanım anında sabittir; bu nedenle uzunluğu değişmeyecek veriler için dizi uygundur. Eleman sayısının çalışma sırasında değişmesi gerekiyorsa List koleksiyonu kullanılır. List koleksiyonuna Add ile eleman eklenir, Remove ile eleman silinir, Count özelliğiyle eleman sayısı okunur ve Contains ile bir elemanın varlığı denetlenir.

List koleksiyonunun önemli bir kolaylığı Add ve Remove işlemlerinde geçici değişken tanımlamaya gerek olmamasıdır. Dizi silme işleminde kaydırılan indeks hesaplanmalı ve geriye kalan elemanlar tek tek taşınmalıdır. List bu işlemi kendisi yapar; bu nedenle eleman sayısı değişken olan uygulamalarda List tercih edilir.

7. Paralel dizilerle kayıt eşleştirme

Birbiriyle ilişkili iki grup veriyi tutmak için iki ayrı dizi kullanılır: biri öğrenci no, diğeri not değerlerini tutar. Her iki dizinin uzunluğu eşit olduğu için aynı indeksteki elemanlar aynı kayda aittir. Örneğin öğrenci numaraları 1001, 1002 ve 1003 olan üç öğrencinin notları sırasıyla 78, 86 ve 92 ise toplam 256 / 3 = 85,33 ortalamayla sınıf ortalaması bulunur.

Paralel diziler kullanışlıdır ama hataya açıktır: bir diziye eleman eklenip diğerine eklenmezse eşleşme bozulur. Bu nedenle ikinci bir dizi yerine her iki alanı bir arada tutan List kullanımı daha güvenlidir. İki sınıfın ortak ortalaması bulunurken ağırlık dikkate alınmalıdır: 256 + 140 = 396 toplam not ve 5 öğrenci için 396 / 5 = 79,2 ortak ortalama çıkar; sınıf ortalamalarının aritmetik ortalamasını almak yanlış sonuç verir.

Basit örnek

45, 62, 78, 51, 88, 34, 67 ve 92 değerlerinden oluşan sekiz elemanlı bir not dizisinde toplamı, ortalamayı, en büyük ve en küçük değeri bulunuz. Toplam için biriktirici kullanılır ve her eleman eklenir: 45 + 62 + 78 + 51 + 88 + 34 + 67 + 92 = 517 bulunur. Ortalama 517 / 8 = 64,63 olur. En büyük değer 92 ve en küçük değer 34'tür; en büyük değer 7. indekste, en küçük değer 5. indekste yer alır.

İleri örnek

Üç sınıfın notlarını tek bir dizide birleştirip sınıf bazında ortalama hesaplayınız. Sınıf A için 78, 86 ve 92; sınıf B için 55 ve 85; sınıf C için 74, 69 ve 81 değerleri verilmiştir. Sınıf A toplamı 256 ve sınıf B toplamı 140 olduğundan bu iki sınıfın ortak ortalaması 396 / 5 = 79,2 çıkar. Üç sınıfın birlikte ortalaması için sınıf ortalamalarının ortalamasını almak yerine toplamları toplayıp toplam öğrenci sayısına bölmek gerekir.

Adım adım çözülmüş örnek

Soru: 64, 25, 78 ve 12 değerlerinden oluşan dört elemanlı bir diziyi küçükten büyüğe sıralayınız ve 25 değerinin sıralanmış dizideki indeksini bulunuz.

Adım 1: Dizi karşılaştırılabilir biçimde yazılır: 64, 25, 78, 12. Adım 2: En küçük eleman aranır ve ilk konuma taşınır; 12 bulunur. Adım 3: Kalan üç eleman kendi aralarında sıralanır: 25, 64, 78. Adım 4: Sıralanmış dizi 12, 25, 64, 78 olarak yazılır. Adım 5: 25 değerinin indeksi bulunur; sıralama sıfırdan başladığı için indeks 1'dir. Cevap: sıralanmış dizi 12, 25, 64, 78 ve 25 değerinin indeksi 1.

Kavram karşılaştırma tablosu

ÖzellikDiziList koleksiyonu
Eleman sayısıTanım anında sabitlenirÇalışma sırasında değişebilir
Uzunluk bilgisiLength özelliğiCount özelliği
Eleman eklemeGeçici dizi gerekirAdd yöntemi
Eleman silmeKaydırma işlemi gerekirRemove yöntemi
Varlık denetimiDöngüyle aranırContains yöntemi
Erişim hızıİndeksle doğrudan ve hızlıİndeksle doğrudan
Geçerlilik kuralıİndeks sıfırdan başlarİndeks sıfırdan başlar
Geçerli arama yöntemiDöngü kurma ile sıralamaSıralama sonrası arama

Sık Yapılan Hatalar

Özet

Dizi, aynı veri tipindeki elemanları sıralı ve ardışık bellek hücrelerinde tutan bir yapıdır; elemanlarına sıfırdan başlayan indeksle erişilir. Dizi elemanları foreach veya for döngüsüyle gezilerek toplam, ortalama, en büyük ve en küçük değerler bulunabilir. Ortalamada tamsayı bölmesi tuzağına dikkat edilir: iki tam sayı bölündüğünde sonuç tam sayıdır, bu yüzden toplam ondalık tipte tutulmalıdır. Dizi sıralandığında ikili arama ile eleman bulma adımları yarıya iner. Eleman sayısı çalışma sırasında değişecekse List koleksiyonu kullanılır; Add, Remove, Count ve Contains yöntemleriyle yönetilir. İlişkili iki veri grubu tutulacaksa paralel diziler yerine alanları birlikte taşıan tek bir liste kullanılması eşleşme hatasını önler. Birden çok grubun ortak ortalaması, toplamların toplanıp toplam eleman sayısına bölünmesiyle bulunur.

Kendini dene

Şu soruları cevaplayarak konuyu pekiştir: (1) 10 elemanlı bir dizide en geçerli indeks kaçtır, kaçıncı elemana erişilir? (2) 78, 64 ve 59 notlarının ortalamasını C# yazımıyla hesaplayınız ve hangi tipi kullandığınızı gerekçelendiriniz. (3) 5 elemanlı bir diziyi küçükten büyüğe sıralayınız ve sıralamada en fazla kaç karşılaştırma yapılabileceğini bulunuz. Cevapları defterine yazarken her hesabın ara adımını gösterin; puana göre değerlendirmede veri yapısının seçimi, döngü yazımı, hesabın doğruluğu ve yorum ayrı ayrı değerlendirilir.

Diziler ve Koleksiyonlarla Çalışma — Sık Sorulan Sorular

Bu derste ne öğreneceğiz?

Bu konuda önce dizinin nasıl tanımlandığını ve indeksleme kuralını öğreneceğiz. Ardından dizi elemanlarını foreach ve for döngüleriyle gezip toplam, ortalama, en büyük ve en küçük değerleri hesaplayacağız. Sıralama ve arama işlemlerini karşılaştırmalı olarak inceleyeceğiz. List koleksiyonunun diziden farkını ve eleman…

Diziler ve Koleksiyonlarla Çalışma nedir?

Bir sınıfın notlarını, bir laboratuvarun sıcaklık kayıtlarını ya da bir ağdaki cihaz adreslerini saklamak için her seferinde ayrı bir değişken tanımlamak pratik değildir. Aynı tipteki bu değerleri tek bir yapıda toplamanın yolu dizidir. Dizi, sıralı ve ardışık bellek hücrelerinden oluşur; bu nedenle elemanlara sıra…

Diziler ve Koleksiyonlarla Çalışma konusunda ne öğrenilir?

Dizi indeksleri sıfırdan başlar; n elemanlı dizide son geçerli indeks n − 1'dir.

Diziler ve Koleksiyonlarla Çalışma konusunda sık yapılan hatalar nelerdir?

Tamsayı bölmesini fark etmemek: İki tam sayı bölündüğünde sonuç tam sayıdır. 10 / 3 yazıldığında ekrana 3 çıkar; ortalama hesabında toplamın ondalık tipte tutulması gerekir. Son indeks yerine uzunluk kullanmak: Beş elemanlı bir dizide geçerli indeksler 0 ile 4 arasındadır. Dizi uzunluğu kadar dönmek geçersiz indekse…

Diziler ve Koleksiyonlarla Çalışma için hangi formüller ve kurallar kullanılır?

eleman sayısı = dizi.Length (List için Count) · toplam = toplam + dizi[i] (her eleman için tekrarlanır) · ortalama = toplam / eleman sayısı (ondalık tipte) · max bulma = en büyük değer > geçici değer ise geçici = en büyük değer

Diziler ve Koleksiyonlarla Çalışma Kazanımları

Örnek Sorular ve Çözümleri

Örnek Soru 1 kolay

6 elemanlı bir dizide geçerli indeks değerleri nelerdir?

  1. A) 0, 1, 2, 3, 4, 5
  2. B) 1, 2, 3, 4, 5, 6
  3. C) 0, 1, 2, 3, 4, 5, 6
  4. D) 1, 2, 3, 4, 5
Cevabı göster

Doğru cevap: A) 0, 1, 2, 3, 4, 5

Dizi indeksleri sıfırdan başlar ve son geçerli indeks eleman sayısından bir küçüktür. Altı elemanlı dizinin geçerli indeksleri 0, 1, 2, 3, 4 ve 5 değerleridir.

Örnek Soru 2 orta

78, 86 ve 92 notlarının ortalaması kaçtır?

  1. A) 85,00
  2. B) 84,33
  3. C) 85,33
  4. D) 86,33
Cevabı göster

Doğru cevap: C) 85,33

Notların toplamı 78 + 86 + 92 = 256'dır. Üç öğrenci olduğuna göre ortalama 256 / 3 = 85,33 olur; bölme ondalık tipte sonuç verdiği için kırk beş virgül otuz üç çıkar.

Örnek Soru 3 zor

20 elemanlı bir diziyi sıralarken en kötü durumda en fazla kaç karşılaştırma yapılır?

  1. A) 400
  2. B) 380
  3. C) 190
  4. D) 210
Cevabı göster

Doğru cevap: C) 190

En kötü durum karşılaştırma sayısı n × (n − 1) / 2 bağıntısıyla bulunur ve 20 × 19 / 2 = 190 hesaplanır. Bu değer sıralama süresinin karesel arttığını gösterir.

Sıradaki adım

Konu anlatımları hesapsız okunur. Quiz, slayt ve deneme için hesap gerekir.

DersTeders ile devam et

Bilişim Teknolojileri için çalışma yolu

  1. OkuKonu anlatımını bu sayfada bitir.
  2. Soru çözÖrnekleri çöz, cevabı açıklamayla karşılaştır.
  3. Quiz ile pekiştirHesapla kendini ölç.

Slaytla adım adım öğren · Tüm dersler · Ana sayfa

Hesap açTüm dersleri keşfet

Konu anlatımları hesapsız okunur; quiz, slayt ve deneme için hesap gerekir.

Bu sayfa Diziler ve Koleksiyonlarla Çalışma konusunun anlatımını, kazanımlarını ve örnek sorularını içerir. Konuyla ilgili tüm sorular için testi çöz, diğer konular için DersTeders ana sayfasına geçebilirsin.

Bu konunun öğretmen materyallerini (ders planı, çalışma kâğıdı, çözümlü soru bankası, rubrik) yazdırabilirsin: Yazıcı çıktısı modülünü aç