C# diziler

Diziler
Diziler, aynı türde birden fazla veriyi sıralayarak gruplama amacıyla kullanılan veri yapılarıdır. Diziler de esasında bir koleksiyondur fakat aynı türde verileri içerisinde barındırabilen bir koleksiyondur. Diziler referans türünden olmakla beraber içerisinde hem değer hem de referans tipinden veriler barındırabilirler. Dizi içerisine veriler kaydedilirken, 0 numaralı sıra değerinden (index numarasından) itibaren kaydedilmeye başlanır. Dizilerin içerisinde bulunan elemanlara yine bu sıra numaraları (index numaraları) üzerinden erişim sağlanabilir.
Bir dizi tanımlamak istediğimizde aşağıdaki formatta tanımlarız.

C#:
türü[] diziAdi = new türü[eleman_sayisi]

Örnek olarak bir dizi tanımlaması yapalım.

C#:
// Tek boyutlu, 5 elemanlı ve integer türünde bir dizi tanımlaması.
int[] dizi1 = new int[5];

Yukarıdaki şekilde tanımlama yaptığımızda dizi1 adında, 5 elemanlı ve integer türünde bir dizi tanımlamış olduk.

Ayrıca dizileri oluşturmadan tanımlayabilirsiniz.
C#:
int[] array3;
array3 = new int[] { 1, 3, 5, 7, 9 };   // new int[] deklerasyonu ile tanımlanmalıdır.
//array3 = {1, 3, 5, 7, 9};   // Bu şekilde tanımlarsanız hata alırsınız.
Yukarıdaki örnekte önce bir dizi değişkeni olarak tanımladık, ardından onu bir dizi olarak oluşturmuş olduk.

Dizi elemanlarına değer atama işlemi
Dizi elemanlarına değer atama işlemi yapılırken, dizi elemanlarının index değeri köşeli parantez içerisinde yazılarak istenen dizi elemanına erişim sağlanır ve atama yapılır.
Bir örnek ile dizi elemanlarına değer atama işlemini açıklayalım.

C#:
// Örneğin 3 elemanlı, string türünde isimler adında tek boyutlu bir dizi tanımlayalım.
string[] isimler = new string[3];
// Tanımlamamızı yaptık ardından dizi elemanlarımıza değer atayalım.
isimler[0] = "Muhammet";
isimler[1] = "Oğuzhan";
isimler[2] = "Nurettin";

Yukarıdaki örnekte görüldüğü gibi 3 elemanlı bir isimler adında string türünde dizi tanımladık. Daha sonra dizi elemanlarına index numaralarını kullanarak değer ataması yaptık.
Aklınıza gelebilecek sorular;
  1. Neden tanımlama yapmaya 0 index numaralı 1. elemandan başladık, direk 2. elemana (1 index numaralı) değer atayıp diğer elemanları boş bırakamaz mıydık? Evet diğer elemanlara değer ataması yapmak zorunda değilsiniz, direkt olarak istediğiniz bir elemana değer atayıp diğerlerini de boş bırakabilirsiniz.
  2. Diziyi tanımladıktan sonra mı değer ataması yapmak zorundayız, tanımlama yaptığımız yerde değer ataması yapamaz mıyız? Evet tanımlandıkları yerde değer ataması yapılır. Bir başka örnekle gösterelim;

C#:
// Tanımlandığı yerde değer ataması yapılan tek boyutlu dizi örneği.
int[] dizi1 = new int[] { 1, 3, 5, 7, 9 };

// Tanımlandığı yerde değer ataması yapılan bir başka tek boyutlu dizi örneği.
int[] dizi2 = { 1, 2, 3, 4, 5, 6 };

Yukarıdaki örneklerde de görüldüğü üzere iki farklı sözdizimini(syntax) kullanarak da dizi tanımlaması ve aynı anda değer ataması yapılabilir. İkisinin kullanımı da doğrudur. Dikkatinizi çekmek istediğim nokta ise yukarıdaki örneklerde görüldüğü gibi ilk değer atamaları tanımlama esnasında yapılan dizilerde boyut belirtmiyoruz, dolayısıyla ilk değer ataması sırasında dizi boyutu belirtilmeden tanımlama yapılmalıdır.

Dizilerin eleman sayısı n ise son elemanının index numarası n-1 olarak ifade edilir. Örneğin 5 elemanlı bir dizinin son elemanının index numarası 4'tür. Bunun sebebi index numaralarının 0'dan başlıyor oluşudur.
1. elemanın index numarası 0,
2. elemanın index numarası 1,
3. elemanın index numarası 2.
Şeklinde uzayıp gitmektedir.

İlk dizi örneğimiz için bir sonraki sayfaya aşağıdaki buton ile geçebilirsiniz.

C# Diziler Örnek 1

Örnek 1: 0 ile 100 arasındaki çift sayıları diziye aktarıp, ilgili diziyi ekrana yazdıran konsol uygulaması.

Birden çok eleman tanımlamasını, hangi kural ile ne şekilde tanımlayacağımızı biliyorsak döngü kullanarak yapabiliriz.
Eğer döngü kullanmadan elle tek tek değer atamalarını yapsaydık, 51 kere değer atamasını satır satır elle yazmamız gerekirdi bu sebeple döngü kullanmak daha mantıklı bir yöntemdir.
Örneği for döngüsü kullanarak yapalım.

C#:
int[] ciftsayilar = new int[51];
int i,j=0;
for (i = 0; i <= 100; i+=2)
{
ciftsayilar[j] = i;
j++;

}
for (i = 0; i < 51; i++)
{
Console.WriteLine(ciftsayilar[I]);
}

Yukarıdaki örnekte önce şurada anlaşalım: 0 ile 100 arasında 50 değil 51 tane çift sayı vardır. Çünkü 0 rakamı da bir çift sayıdır. Örneğin 0 ile 4 arasında 0, 2, 4 olmak üzere 3 adet çift sayı vardır. Bunu matematiksel olarak n/2+1 olarak gösterebiliriz.

Gelelim satır satır açıklamasına 51 elemanlı, integer türünde ciftsayilar adında bir dizi tanımlaması yaptık. Ardından döngülerde kullanacağımız değişkenlerimizin tanımlamasını yaptık. Burada i değerini neden döngü içerisinde değil dışarısında tanımladık diye sorarsanız iki farklı döngüde de i değişkenini kullanıyoruz bu sebeple iki tanımlama yerine bir tanımlama yapmak daha akılcı bir seçim olacaktır. Ardından birinci döngümüzü başlattık. Döngü i değişkeninin başlangıç değerini 0 alıp, i değişkeni 100 sayısından küçük veya eşit olduğu sürece tekrarlanmak ve i değişken değerini 2 arttırmak üzere kurulmuştur. J değişkeni ise dizi elemanımızın index değerini temsil etmektedir ve dışarıda 0 tanımlaması yaparak 1. Eleman'dan başlatılmaktadır değer atamaları. Birinci döngü 0 ile 100 arasındaki çift sayıları dizimize atamak için kurulmuştur. Döngüyü adım adım inceleyelim.
  1. i değişken değeri 0 olarak ayarlandı ve şart kontrol edildi. i değişkeni 100'e eşit ya da küçük olduğu sürece çalışma şartı doğrulandı yani geriye true değeri döndürdü. Döngü içerisindeki kodlara geçildi.
  2. ciftsayilar[j] = i; değer ataması yapıldı. Döngü başlamadan önce j=0 ve döngünün ilk çalışma anında i=0 olduğu için ciftsayilar[0]=0; tanımlaması yapılmış oldu.
  3. Ardından j değişkeni 1 arttırılarak j=1 oldu. Döngü içerisindeki komutlar tamamlandıktan sonra döngü artış miktarı olarak belirlediğimiz i+=2; komutuyla i değişkenine 2 değeri eklendi i=2 oldu. Ve 1. döngü turu tamamlandı 2. tura geçildi.
  4. i değişken değeri 2, 100'den küçük veya eşit olma şartı sağlanıyor, şart geriye true değerini döndürdü ve döngü içerisindeki komutlara geçildi.
  5. ciftsayilar[j] = i; değer ataması yapıldı. Döngü başlamadan önce j=1 ve döngünün çalışması esnasında i=2 olduğu için ciftsayilar[1]=2; tanımlanması yapılmış oldu.
  6. Ardından j değişken değeri 1 arttırılarak bir sonraki tur için j=2 oldu. Döngü içerisindeki komutlar tamamlandıktan sonra döngü artış miktarı olarak belirlediğimiz i+=2; komutuyla i değişkenine 2 sayısını daha ekledik ve i=4 oldu. Döngü ikinci turu tamamlandı.
İkinci for döngüsünde i=0; değer ataması yaparak döngü için i değişkenini yeniden sıfır olarak ayalıyoruz (önceki döngü tamamlandığında i değişken değeri 102 olarak kalmıştı bunu sıfırlıyoruz.) ardından döngü şartımızı i<51 olarak i değişkenimiz 51 sayısından küçük olduğu sürece döngüyü çalıştır diyoruz. İ değişkenini 0 değerinden başlattığımız için bu döngü 51 kere çalışacak, dizimiz içerisinde 51 eleman olduğu için. Ardından 0'dan başlayan döngü değişkenini dizinin index numarası olarak kullanıp dizi elemanlarını da 0 index numarasından başlayarak yazdırıyoruz.

Ekrana yazdırma kısmını foreach döngüsü kullanarak yapalım.
Diziler üzerinde işlem yapmak için foreach döngüsü, for döngüsüne göre daha sık kullanılmaktadır. Foreach döngüsü eleman sayısının belirtilmediği, dizinin belirli bir kısmından ziyade tümünü kapsayacak şekilde işlem yapılması gereken zamanlarda kullanılır. Örneğin son kısmındaki ekrana yazdırma döngüsünü foreach ile yapalım.

C#:
foreach (int k in ciftsayilar)
{
Console.WriteLine(k);

}

Yukarıdaki foreach örneğinde ciftsayilar adlı integer tipli dizi içerisindeki elemanı her döngü turunda k integer değişkenine atayıp, ekrana k değişkenini yazdırarak aslında ciftsayilar adlı dizimizin elemanlarını ekrana yazdırmış oluyoruz.

Yorumlar

Gösterilecek yorum bulunamadı.

Blog girdisi detayları

Ekleyen
bugzone2.0
Okuma süresi
5 dakika okuma
Görüntüleme
886
Son güncelleme

Yazılım kategorisindeki diğer girdiler

Bu girdiyi paylaş

Geri
Yukarı