Diziler

 

Diziler(arrays) nedir?

             Teknik olarak tanım yapmak gerekirse bellek üzerinde aynı türde veriler tutabildiğimiz veri yapılarına diziler(arrays) denilmektedir.

        Programlamada bir değişken üzerinde sadece bir değer tutabilmekteyiz. Diziler ise bir değişkenin altında birden fazla değer tutabilmemize yarar. Dizi üzerindeki bu verilere dizinin indeks değeri üzerinden erişim sağlamaktayız. 

Neden dizilere ihtiyaç duyarız?

       Uygulama üzerinde 7 adet farklı sayının ortalamasını alacağımız bir senaryo düşünelim. Şimdiye kadar bildiklerini düşünecek olursak nasıl yaparız?

       Önce sayılarımızı tanımlarız;

double sayi1 = 2;
double sayi2 = 3.2;
double sayi3 = 6,5;
double sayi4 = 1;
double sayi5 = 3.6;
double sayi6 = 2.1;
double sayi7 = 9;

       Daha sonra da ortalamasını alırız;

double toplam= sayi1 + sayi2 + sayi3 + sayi4 + sayi5 + sayi6 + sayi7;
double ortalama = toplam / 7;

       7 sayının ortalamasını artık hesapladık. Peki ya 700 tane sayının ortalamasını hesaplamamız gerekseydi? 700 tane değişken tanımlayıp, 700 değişkeni tek tek yazıp ortalamasını mı yazacaktık aynı şekilde?

       Bunun gibi durumlar için dizileri kullanmak, hem zaman olarak bize büyük bir tasarruf sağlayacak olup kod kalitesi ve okunabilirliği açısından da tercih edilmesi gereken yöntemdir.

Diziler nasıl tanımlanır?

       Dizileri uygulamamız üzerinde üç şekilde tanımlayabiliriz. Şimdi “sayilar” isminde int türünde veri alabilecek 5 elemanlı bir diziyi iki yöntemi kullanarak oluşturalım.

       Bunlardan ilki bildirmeyi (declare) ve tanımlamayı (initialize) aynı anda yapabildiğimiz yöntemdir.

int[] sayilar = new int[5];

İkinci yöntemimiz ise bildirme ve tanımlamayı ayrı satırlarda yapmaktadır.

int[] sayilar;
sayilar = new int[5];

       *dizi uzunluğunu başlangıçta bilmediğiniz, örneğin kullanıcıdan alınacak uzunluğa göre oluşturulacak bir dizide ikinci yöntem kullanmanız daha uygundur.

       Üçüncü yöntem ise dizi uzunluğunu ve alacağı elemanları bildiğimiz durumlarda kullandığımız yöntemdir. Bu yöntem ile diziyi hem oluşturup hem de içerisine verileri biz girmiş oluruz.

int[] sayilar = {1,2,30,450,5000};

Dizilere nasıl veri yazıp okurum?

       Öncelikle dizi üzerinden veri okuyabilmek için hangi indeksteki elemanı okumak istediğinizi doğru bir şekilde belirtmeniz gerekir.

       Örneğin Numbers isminde bir dizimizin olduğunu düşünelim. Dizilerde ilk eleman her zaman 0. İndekstir. Dizinin ilk elemanına erişmek veya yazmak istediğimizde Numbers[0] yazmamız gerekmektedir. Diğer elemanları için de sırasıyla Numbers[1], Numbers[2] şeklinde yazmamız gerekmektedir. Buradaki bir diğer önemli nokta da dizimizin ilk elemanı 0. İndeksten başladığı için son elemanı da oluşturduğumuz uzunluğun bir eksiğidir.

       Şimdi 7 sayılı ortalama hesaplama örneğini diziler ile yaparak ilerleyelim.

double[] sayilar = new double[7];

sayilar[0] = 2; //ilk elemanın indeksi 0
sayilar[1] = 3.2;
sayilar[2] = 6.5;
sayilar[3] = 1;
sayilar[4] = 3.6;
sayilar[5] = 2.1;
sayilar[6] = 9; //son elemanın indeksine dikkat edelim

       Sayıları dizimize aldıktan sonra toplamlarını ve ortalamasını alıp yazdıralım.

double toplam=0, ortalama =0;

for (int i = 0; i < sayilar.Length; i++)
{
   toplam += sayilar[i];
}

ortalama = toplam / sayilar.Length;

Console.WriteLine(ortalama);

       For döngüsünde ve ortalama hesaplamasında dikkat ettiyseniz “sayilar.Length” isimli başka bir komut daha kullandık. Diziler sınıfına ait c# tarafından sağlanan bazı özellik ve fonksiyonlar da yer almaktadır. Tanımladığımız dizi üzerinde bunları da kullanabilmekteyiz. Burada da {diziAdı}.Lenth kullanımı bize tanımladığımız dizinin uzunluğunu verir. Bu sayede ileride dizi boyutunu değiştirdiğimizde kod üzerinde de uzunluğunu tek tek değiştirmemiz gerekmez.

       Sayilar.Length burada bize “7”sayısını dönmüş ve for döngümüz de 0’dan itibaren 7’ye kadar dönmüş ve dizi içerisindeki verileri okumuş olduk.

       Uygulamamızın son hali;

static void Main(string[] args)
        {
            double[] sayilar = new double[7];

            sayilar[0] = 2;
            sayilar[1] = 3.2;
            sayilar[2] = 6.5;
            sayilar[3] = 1;
            sayilar[4] = 3.6;
            sayilar[5] = 2.1;
            sayilar[6] = 9;

            double toplam=0, ortalama =0;

            for (int i = 0; i < sayilar.Length; i++)
            {
                toplam += sayilar[i];
            }

            ortalama = toplam / sayilar.Length;

            Console.WriteLine(ortalama);

        }

Ayrıca;

  • Diziyi oluşturduktan sonra dizi içerisindeki boş değerler oluşturulan veri türünün varsayılan (default) değerini almaktadır.Örneğin; int veri türü için 0, bool veri türü için false.
  • Bir dizi oluşturulduktan sonra boyutu değiştirilemez. Bu işlemler için dinamik farklı veri türleri kullanılmaktadır.

Diziler ile kullanabileceğiniz özellikler

C# dilinde tanımladığımız Array "System.Array" sınıfından türemektedir ve bu sınıfın sağladığı işimizi kolaylaştıracak bir takım hazır özellikler ve metotlar yer almaktadır.

Özellikler

IsFixedSize: Dizinin eleman sayısının sabit olup olmadığını true/false olarak verir.

IsReadOnly: Dizideki elemanların sadece okunabilir olup olmadığını true/false olarak verir.

Length: Dizideki eleman sayısını verir.

Rank: Dizinin boyutunu verir.

Metotlar

BinarySearch: Tek boyutlu dizide Binary Search algoritmasını kullanarak arama yapar.

Clear: Dizinin elemanlarını varsayılan değelerine sıfırlar.

Clone: Dizinin bir kopyasını oluşturur.

Copy: Dizinin bir bölümünü başka bir diziye kopyalar. Tür dönüştürme ve kutulama işlemleri de yapılır.

CopyTo: Dizinin bir bölümünü başka bir diziye kopyalar.

GetLength: Dizideki eleman sayısını verir.

GetValue: Dizideki ilgili elemanın değerini verir.

IndexOf: Dizi içindeki değerin ilk eşleşen indeksini verir.

Reverse: Dizideki elemanların sırasını tersine çevirir.

SetValue: Bir dizinin bir elemanına atar.

Sort: Bir boyutlu dizilerde sıralama işlemi yapar.

CreateInstance: Yeni bir dizi nesnesi oluşturur.

 

 

 

Comments (2) -

  • eda
    güzelllll sevdimmm
  • Yazınızın okunulabirligi çok iyi, gayet anlaşılır. Örnekler de aynı şekilde çok güzel. Emeginize sağlık.

Add comment