Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

C# Diziler

C# severlere yeniden merhaba :)

Bu makalemizde yep yeni bir konuya giriş yapıyoruz: Diziler (arrays)

Diziler özellikle yazılım dünyasında olmazsa olmaz konulardan biri olan ve bir yazılımcıya pek çok konuda yardımcı olabilen bir yazılım tekniğidir.
Eğer bilgisayar programlama konusunda henüz yeniyseniz ve daha önce dizilerin ne olduğunu anlamak için biraz hayal kurmalısınız:

Kütüphanedeyiz,önümüzde yan yana sıralı bir kitaplık rafı var ve rafta her kitap başına bir boşluk yer alıyor.En soldaki ilk boşluğa sıfır değerini veriyoruz ve sağdaki boşluklara gittikçe sayı birer birer artıyor,bu sayıya index diyoruz.Böylece kitaplıkta 20 kitap varsa 20 index sayısı vardır ancak index sayısı sıfırdan başladığı için en büyük sayı 19 olacaktır.Yani 19 index,20 kitap kapasitesine sahip bir rafın her bölmesini ifade ediyor.

Şimdi tekrar konumuza dönelim; diziler içerisine aynı türden veri (string,int,bool gibi..) alan ve bu verileri bir başka noktaya en kolay ve hızlı şekilde taşıyan program yapılarıdır.

Diziler aynı zamanda referans tipler olduğu için "new" anahtar sözcüğü kullanarak dizi değişkeni tanımlamamıza olanak sağlarlar.Dizilerin kapasite sınırları yoktur yani bir diziye aynı türden veri tiplerinden sonsuz tane veri ekleyebilir (Bilgisayarınızın Ram bellek kapasitesini yoksayarsak) ve bir başka noktaya taşıyabilirisiniz.

Peki dizi nasıl oluşturulur?

C# dilinde temel dizi tanımlama şekli haricinde .Net Framework mimarisine ait dinamik dizi yapıları da vardır,ancak henüz programlama derslerinde olduğumuz için temel dizileri öğreneceğiz.

Dizilerin genel yapısı;

diziTipi[] diziDegiskeniAdi=new diziTipi[kapasite];

şeklindedir.
Örneğin içerisine int tipinde sayısal değerler alan bir dizi tanımlamak istersek;

int[] sayiDizisi=new int[10];

şeklinde ve içeriğine 10 adet int değer tipinde veriler ekleyebileceğimiz dizi oluşturmuş oluruz.
Aynı dizi tipini string ifadeler barındıran bir dizi tanımlaması yapmış olsaydık;

string[] metinDizisi=new string[5];

5 string ifade kapasiteli bir dizi tanımlıyor oluruz.

Peki dizilere nasıl veri eklenir?

Dizilerin içeriği index adı verilen boş alanlardan meydana geldiği için öncelikle 0.ıncı indexden ekleme işlemi yapılır,örneğin bir dizi şu şekilde doldurulur:

diziAdi[index]=Deger;

Örneğin yukarıdaki metinDizisi adında string ifadeler alan dizileri doldurmak istersek;

metinDizisi[0]="Windows 7";
metinDizisi[1]="windows XP";
metinDizisi[2]="windows 8";

şeklinde index numaralarını sıralı bir biçimde tanımlayarak karşılıklarına dizinin tipine uygun değerler girmeliyiz.Diziye değer eklerken illa değerin kendisini eklemek zorunda değiliz,o değeri tutan değişkeni tutma şansına da sahibiz:

string kelime="Microsoft";
metinDizisi[3]=kelime;

şeklinde de diziye değişken ekleyebiliyoruz.

Dizilerle ilgili dikkat etmemiz gereken 2 önemli nokta var; diziler hangi veri tipi için (string,int) tanımlanmışsa yalnızca o veri tipinde elemanlar eklenir.Diğer önemli nokta ise; dizilerin kapasitesi başta belirlendiği için eklenecek eleman sayısı kapasiteyi aşmamalıdır.
Örneğin; 100 kelime kapasiteli bir diziye 101.kelimeyi eklemeye çalıştığınızda programınız hem build (derleme)
hem de JustInTime (çalışma) zamanında uyarı verir ve program çalışmayı durdurur.(try-catch yapısı yoksa)

Diziler biraz esnek bir yapıya sahiptir ve her indexi doldurmak zorunda değilsiniz.Örneğin 100 sayı kapasiteli bir int dizisinde 20.indexe değer ekledikten sonra 21.indexi atlayıp doğrudan 22.indexe veri ekleyebilirsiniz,ancak dizinin kapasitesinden en yüksek verim elde edilmesi için böyle bir kullanım önerilmez.

Peki dizilerden nasıl veri çekilir?

Varsayalım yukarıdaki metinDizisi isimli dizideki index numarası 2 olan değeri herhangi bir değişkene atayalım:

string gelenDeger=metinDizisi[2];

şeklinde olacaktır.Burada dikkat edilmesi gereken konu dizi string bir biçimde tanımlanmışsa içeriğindeki değer yine string tipinde olacaktır.Dolayısıyla diziden çekilen değer string bir ifadeyle geleceği için string tipinde bir değişkene atanması gerekmektedir.

Bazı durumlarda ise diziden gelen değer ile kullanmak istediğimiz değer farklı olduğu halde kullanmak isteyebiliriz,böyle bir durumda Convert sınıfını kullanırız.
Örneğin sayı dizisi içeren bir diziden gelen rakamı string ifadeye döndürelim:

int[] sayiDizisi=new sayiDizisi[1];
sayiDizisi[0]=5;

string stringIfadesi=sayiDizisi[0].ToString();
ya da
string stringIfadesi=Convert.ToString(sayiDizisi[0]);

Burada ilk önce kendimize 1 eleman kapasiteli bir int dizisi tanımladık ve diziye 5 sayısını ekledik,ardından dizideki 5 değerini ToString() metodunu ya da Convert sınıfındaki uygun metotları kullanarak string ifadeye çevirip string tipinde bir değişkene atadık.Bu şekilde kullanım mümkün ancak değişken dönüşümleri makalesinde anlattığımız kurallar burada da geçerli ve birbirine dönüştürülemeyecek veri tipleri konusunda dikkatli olmalıyız.

C# dizileri konusunda şimdilik bilmemiz gerekenler bu kadar yeterli diye umuyorum,bir sonraki makalemizde dizilerle ilgili daha anlamlı ve uygulamalı örnekler gerçekleştireceğiz.

O yüzden bir sonraki makalemizde görüşmek dileğiyle hoşçakalın :)

2 Yorum:

  1. gokhan ozer
    5/17/2014

    merhaba serkan bey ben 2 yıllık bılgs programcılık bıtırdım fakat okulda bılırsınız kı bırsey gostermyıorlar ben de kendı capalarımla netten c# ogrenmeye calsııyorum sızın orneklerınızden kendımı gelıstırmeye calsııyorum sızde c# mantıgı nasıl ogrenebılırım lutfen yarıdmcı ourmusunuz? gknozr@gmail.com saygılar ıyı calısmalar

  2. Burak YELER
    9/19/2013

    aradığım Cümle: Dizilerin kapasitesi yoktur. (PC nin ram belleği dahilinde) Ayrıca Site tasarımı çok hoş ve eğlenceli. İyi çalışmalar.

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu