Respond needs javascript to run. To find out more click here
jagged » Serdar Demir
RSS
 

Posts Tagged ‘jagged’

C#.NET’te Diziler nedir resimli anlatım

14 Eki

C#.NET’TE DİZİLER

Değişkenlerin nasıl taımlanabileceğini bir önceki makalemizde görmüştük ama birçok durumda değişkenleri tek başına tanımlamamız yetersiz olacaktır

örneğin 1000 kişilk bir okuldaki tüm öğrencilere numara verecek olsak 1000 tane değişken tanımlamamız gerekecekti bu hem çok zaman alacaktı hemde çok yorucu olacaktı ve programın performansınıda çok kötü etkileyecekti işte tüm bu sebeplerden dolayı birçok programlaa dilinde olduğu gibi c# dilindede diziler mevcuttur.Dilerseniz şimdide dizi tanımlamayı görelim.

private void button1_Click(object sender,EventArgs e)

{

Double[] dizi; // Burada diziyi tanımlıyoruz

dizi=new Double[10]; // Burada da diziyi boyutlandırıyoruz

}

Burada 10 elemalı bir dizi tanımladık ilk elemanın indis numarası 0 son elemanın indis numarası ise 9 dur.

Yukarıda iki satırda yaptığımız dizi tanımlama işini tek satırda da yapabilirdik

Double[] dizi=new Double[10]; şeklinde.

Dizi Değişkenlerine Varsayılan Değer Atamak

Dizi değişkenleri taımlandığı anda ilk değer atanabilir bununla ilgili örneğimizi yapalım.

private void button1_Click(object sender,EventArgs e)

{

int[] dizi=new int[]{10,20,30};

}

Bu şekilde tanımlanan dizilerde boyut belirtmeye gerek yok eleman sayısı dizinin boyutunu belirtir.

Çok Boyutlu Diziler

Gelişmiş projelerde işimizi çok kolaylaştıracak olan çok boyutlu diziler tanımlama açısından tek boyutlu dizilerden pekte farklı olmamakla beraber biraz daha karmaşıktır.Dizilerin bizi birsürü değişken tanımlamaktan kurtardığı gibi çok boyutlu dizilerde  bizi birsürü dizi tanımlamaktan kurtarır.Şimdi bir çok boyutlu dizi tanımlayalım.

private void button1_Click(object sender,EventArgs e)

{

int[,] dizi=new int[2,3]{{1,2,3},{4,5,6}};

}

Yukarıda 2′ye 3′lük bir çok boyutlu dizi tanımladık burada

dizi[1,1]=1;

dizi[2,1]=4;

dizi[1,3]=3; değerlerini verir.

Çok Boyutlu Dizileri Yeniden Boyutlandırmak

C#’da diziler önce tanımlanıp daha sonra eleman sayısı belirlendiği için bu diziler aynı zamanda dinamik dizi olarak ta kullanılabilirler.Ancak yeniden boyutlandırılan bir dizinin önceki değerleri silinir.

private void button1_Click(object sender,EventArgs e)

{

int[,] dizi={{1,2,3},{4,5,6}};

dizi=new int[]{{10,20,30,40},{50,60,70,80}};

}

burada dizinin ilk değerleri silinerek sonradan girilen değerler dizin asıl değerleri oldu C# da dizileri istediğiniz kadar tekrar boyutlandırabilirsiniz.

Not:C#’da istenilen boyutta dizi tanımlanabilir ancak programcıların yazılmamış kanunlarına göre en fazla 5 boyutlu dizi tanımlanır daha fazlası programlar açısından yararından fazla zarar verir.


Şimdide 3 boyutlu bir dizi tanımlayaım ve bir değer atayalım.

private void button1_Click(object sender,EventArgs e)

{

Double[,,] dizi=new int[2,3,5];

dizi[1,2,4]=27;

dizi[2,1,1]=21;

int sonuc=dizi[1,2,4]+dizi[2,1,1]; // sonuç=48 olur

}

Jagged Diziler

Jagged diziler matrix dizlerden farklı olarak bellekten tasarruf etmemizi sağlar ve performansı olumlu yönde etkiler .Örneğin bir isim dizimiz olsun ve bu diziye 5  isim girecek olalım matrix dizi yaptığımızda dizinin boyunu en uzun isme göre belirleyecektik yani Ali Veli Hakan Kemalttin Mustafa isimlerini verecek olalım bu durumda en uzun isim olan Kemalletin’e göre uzunluğu belirleyecektik ve dizimizi şu şekilde tanımlayacaktık

dizi[5,10] diyecektik 5 isim ve en uzun isimin sığacağı 10 karkterlik sütun alanı.Bu durumda şöyle bir problemimiz olacaktı aslında problem sayılmaz ama fazladan bellek kullanmamıza neden olur.Peki ama nasıl ?

A l i _ _ _ _ _ _ _

V e l i _ _ _ _ _ _

H a k a n _ _ _ _ _

K e m a l e t t i n

M u s t a f a _ _ _

İşte tüm bu (_) ler fazladan kullanılan bellekler işte Jagged ile bu fazlalıklardan kurtulacağız.

Jagged dizileri tanımlanırken bazı durumlara dikkat etmemiz gerekiyor örneğin

Satır sayısı belli olacağı için dizi tanımlanırken satır sayısı yani ilk değer kesinlikle verilmeli

private void button1_Click(object sender,EventArgs e)

{

string[][] jagged_dizi=new string[5][];

jagged_dizi[0]=new string[3]; // ilk değer 3 karakter uzunluğunda (Ali)

jagged_dizi[1]=new string[4]; // ikinci değer 4 karakter uzunluğunda (Veli)

}

Dizilerle İlgili İşlemler

a)Dizinin Eleman Sayısını Öğrenmek

Bir dizinin eleman sayısını Length ile öğreniriz.

private void button1_Click(object sender,EventArgs e)

{

int[] dizi=new int[]{10,20,30};

int deger=dizi.Length; // 3 değerini döndürür

}

b)Dizinin Boyutunu Öğrenmek

Bir dizinin boyutunu öğrenmek için Rank kullanılır.

private void button1_Click(object sender,EventArgs e)

{

int[,,] dizi=new int[2,3,4];

int deger=dizi.Rank; // 3 değerini döndürür

}

 
No Comments

Posted in C#, Makaleler