4 Ocak 2012 Çarşamba

C# ile Diziler

 Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# programlama dilinin temel ve güçlü veri yapılarından biri olan dizileri (arrays) yakından inceleyeceğiz. Diziler, aynı türden birden çok veriyi tek bir değişken adı altında saklamamıza olanak tanıyarak, veri koleksiyonlarını yönetmeyi ve işlemeyi oldukça kolaylaştırır. .NET Framework 4 ile C#'ta dizilerin nasıl tanımlandığını, kullanıldığını ve önemli metotlarını gelin birlikte keşfedelim.

Dizi Kavramına Giriş

Temel bir değişken tek bir değeri saklarken, bir dizi birden çok aynı türden değeri sıralı bir şekilde saklar. Diziler, bellek üzerinde ardışık olarak sıralanmış öğelerden oluşur ve her bir öğeye bir indeks numarası (genellikle 0'dan başlayan bir tamsayı) aracılığıyla erişilir. C#'ta bir değişkenin dizi olduğunu belirtmek için, değişken tipinin sonuna köşeli parantezler [] eklenir.

Dizi Tanımlama Yöntemleri

C# .NET Framework 4'te dizileri tanımlamanın çeşitli yolları bulunmaktadır:

  • Boyut Belirterek Tanımlama: Dizinin kaç öğe içereceği baştan belirtilir. Öğelere henüz değer atanmamıştır.
    string[] dizi1 = newstring[3]; // 3 elemanlı bir string dizisi tanımlarint[] sayilar = newint[5];    // 5 elemanlı bir integer dizisi tanımlar
  • Boyut ve Başlangıç Değerleriyle Tanımlama: Dizinin boyutu belirtilir ve aynı anda öğelerine başlangıç değerleri atanır.
    string[] dizi2 = newstring[2] { "A", "B"};
    int[] rakamlar = newint[4] { 1, 2, 3, 4};
  • new Anahtar Kelimesiyle Değer Atayarak Tanımlama: Dizinin boyutu belirtilmeden, doğrudan başlangıç değerleri atanarak dizi oluşturulur. Derleyici, atanan değer sayısına göre dizinin boyutunu otomatik olarak belirler.
    string[] dizi3 = newstring[] { "A", "B"};
    double[] ondaliklar = newdouble[] { 1.1, 2.2, 3.3};
  • Kısa Tanımlama: new anahtar kelimesi ve tür belirtimi olmadan doğrudan değerler atanarak dizi oluşturulabilir.
    string[] dizi4 = { "A", "B"};
    bool[] durumlar = { true, false, true};

Dizi Öğelerine Erişim ve Değer Atama

Bir dizinin belirli bir konumundaki öğeye erişmek veya o konuma yeni bir değer atamak için indeks numarasını kullanırız. İndeksler 0'dan başladığı için, n elemanlı bir dizinin son elemanının indeksi n-1'dir.

string[] isimler = newstring[4];
isimler[0] = "Ahmet";
isimler[1] = "Ayşe";
isimler[2] = "Burak";
isimler[3] = "Can"; // Count 4 ise 3. indekse "Can" eklenirSystem.Console.WriteLine(isimler[1]); // Çıktı: Ayşe

Çok Boyutlu Diziler (Matrisler)

C# ayrıca çok boyutlu dizileri de destekler. En yaygın olanı iki boyutlu dizilerdir (matrisler). Çok boyutlu bir dizi tanımlarken, her bir boyutun boyutu virgülle ayrılarak belirtilir.

int[,] matris = { { 1, 2}, { 3, 4} }; // 2x2'lik bir matris tanımlarSystem.Console.WriteLine(matris[0, 1]); // Çıktı: 2 (0. satır, 1. sütun)

Düzensiz Diziler (Jagged Arrays)

Düzensiz diziler, elemanları da birer dizi olan dizilerdir. Bu alt dizilerin uzunlukları birbirinden farklı olabilir.

int[][] jaggedDizi = newint[][] {
    newint[]{1, 8, 27, 9},
    newint[]{2, 4, 6},
    newint[]{33, 42}
};
System.Console.WriteLine(jaggedDizi[2][1].ToString()); // Çıktı: 42 (3. alt dizinin 2. elemanı)

Dizi Boyutunu Dinamik Olarak Artırma

Dizilerin boyutu tanımlandıktan sonra genellikle sabittir. Ancak, Array.Resize() metodu ile bir dizinin boyutunu dinamik olarak artırabiliriz. Bu metot, orijinal dizinin içeriğini yeni boyuttaki bir diziye kopyalar.

string[] sehirler = { "Ankara", "İstanbul"};
Array.Resize(refsehirler, sehirler.Length + 1);
sehirler[sehirler.Length - 1] = "İzmir";

Dizi Özellikleri ve Metotları

.NET Framework, dizilerle çalışmayı kolaylaştıran birçok kullanışlı özellik ve metot sunar:

  • Contains(): Bir dizinin belirli bir öğeyi içerip içermediğini kontrol eder (bool değer döndürür).
  • Count() (veya Length özelliği): Dizideki toplam eleman sayısını döndürür (int değer döndürür).
  • Rank: Dizinin boyut sayısını (örneğin, tek boyutlu için 1, iki boyutlu için 2) döndürür (int değer döndürür).
  • Min(): Bir sayısal dizideki en küçük değeri döndürür.
  • Max(): Bir sayısal dizideki en büyük değeri döndürür.
  • Sum(): Bir sayısal dizideki tüm elemanların toplamını döndürür.
  • SetValue(object value, int index) (veya çok boyutlu diziler için SetValue(object value, int index1, int index2, ...)): Belirtilen indeksteki öğeye bir değer atar.
  • CopyTo(Array array, int startIndex): Dizinin tüm öğelerini belirtilen başlangıç indeksinden itibaren başka bir diziye kopyalar. Hedef dizinin yeterli boyutta olması gerekir.
  • Clone(): Dizinin sığ bir kopyasını (shallow copy) oluşturur.

Array Sınıfının Önemli Metotları:

  • Array.Clear(Array array, int index, int length): Belirtilen dizinin belirli bir aralığındaki öğeleri varsayılan değerlerine (sayısal tipler için 0, referans tipler için null vb.) ayarlar.
  • Array.Copy(Array sourceArray, Array destinationArray, int length): Kaynak dizinin belirtilen sayıda öğesini hedef diziye kopyalar. Hedef dizinin yeterli boyutta olması gerekir.
  • Array.IndexOf(Array array, object value, int startIndex, int count): Belirtilen değerin dizideki ilk görüldüğü indeksi döndürür (belirtilen aralıkta arama yapar). Bulunamazsa -1 döndürür.
  • Array.LastIndexOf(Array array, object value): Belirtilen değerin dizideki son görüldüğü indeksi döndürür. Bulunamazsa -1 döndürür.
  • Array.Reverse(Array array): Dizinin öğelerini ters sırada sıralar.
  • Array.Resize<T>(ref T[] array, int newSize): Bir dizinin boyutunu yeniden boyutlandırır (generic bir metottur).
  • Array.Sort(Array array, int startIndex, int length): Dizinin belirtilen aralığındaki öğelerini sıralar.

Dizilerde Döngüler: foreach Kullanımı

Dizi öğelerini tek tek işlemek için döngüler sıklıkla kullanılır. Özellikle foreach döngüsü, bir dizinin tüm öğelerini kolayca ve güvenli bir şekilde yinelemek için idealdir.

string[] renkler = { "Kırmızı", "Mavi", "Yeşil"};
foreach(stringrenk inrenkler)
{
    System.Console.WriteLine(renk);
}

Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile dizilerin temel kavramlarını, tanımlama yöntemlerini, önemli özelliklerini ve metotlarını detaylı bir şekilde inceledik. Diziler, programlarımızda birden çok veriyi düzenli bir şekilde saklamak ve bu veriler üzerinde etkili işlemler yapmak için bize güçlü araçlar sunar. Umarım bu rehber, dizilerin mantığını anlamanıza ve kodlarınızda verimli bir şekilde kullanmanıza yardımcı olur. Bir sonraki yazımda, programlama dilinin temel kontrol yapı taşlarından biri olan döngüleri (loops) derinlemesine inceleyeceğiz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

 

0 yorum:

Yorum Gönder