C# Eğitimleri 45 – Diziler 6 – Çok Boyutlu Diziler

C# Eğitimlerimizde Diziler konusuna devam ediyoruz.

Bu yazımda çok boyutlu dizi tanımlamalarından bahsedeceğim.

Çok boyutlu dizilere matris dizilerde diyebiliriz. Ve programcılık dahil pek çok yerde matrisler kullanılır. En basit aklınıza gelecek yer veri tabanlarıdır. Bir matris dizi mantığı ile yönetilirler. C# da da pek çok tek boyutlu dizi tanımlamak yerine işlerimizi kolayca çok boyutlu diziler tanımlayarak yapabiliriz.

C# da tek boyutlu diziler tanımlanırken yaptığımız işlem şuydu;

string[] Kelimeler = new string[10];

2 Boyutlu Dizi Tanımlama

string[,] Kelimeler = new string[3,2];

2 Boyutlu olduğunu string[,] ifadesindeki virgül ile bildirdik. Daha sonra string[3,2] yazdığımız bu ifade iki boyutlu bu dizinin kaç satır kaç sütundan oluştuğunu ifade etmektedir.

İlk değer satırı, ikinci değer sütunu ifade eder.

Yukarıda gördüğümüz 2 boyutlu dizinin görünümüdür. Daha öncede söylediğimiz gibi diziler saymaya 0 dan başlar. Burada da geçerlidir.

Satır * Sütun bize dizinin kaç elemanlı olduğunu verecektir.

Değer Ataması

  • Tanımlama Anında 

int[,] Sayılar = new int[,]{ { 1, 1 }, { 1, 2 } };

İlk tanımlama anında bir diziye böyle değer yazdırabilir.

Buradaki değer atama şunu ifade eder. Her süslü parantez içindeki değerler bir satırın elemanlarını ifade eder.

Yani {1,1} değerini inceleyecek olursak. İlk 1 0. satırın 0. sütununa ait olan değerdir. İkinci 1 değeri 0. Satırın 1. Sütununa ait değeridir.

Eğer Satır Sütun sayısı farklı olsaydı onu görelim.

int[,] Sayılar = new int[2,3]{ { 1, 1 ,2}, { 1, 2,3 } };

2 Satır 3 Sütundan oluşan bu dizi için iki tane özel süslü parantezler için sütun sayısı olan 3 tane eleman girmemiz gerekiyordu ve bunu yaptık.

  • Çalışma Anında

Yukarıda gördüğünüz gibi satır sütun ifadesi ile dizinin o kolonuna işaret edip değer ataması yapabilir.

Önemli Not: Eğer dizi boyutunun verildiği değerden daha büyük bir indise değer atamaya çalışırsak program Runtime Exepcition verecektir.

Diziden Değer Okuma

Çok boyutlu bir dizide istediğim kolondaki değeri okumak istersem yapmam gereken işlem şu olacaktır.

Bu şekilde istediğimiz dizi elemanına ulaşabiliriz.

Dizi Elemanlarına Döngü İle Ulaşma

Tek boyutlu bir dizinin elemanları içinde tek bir for döngüsü ile gezebiliriz. Dizi boyutu arttıkça kullacağımız for döngüsü adedide buna doğru orantılı artacaktır.

Yani 2 boyutlu bir dizinin tüm elemanlarını gezebilmek için 2 tane iç içe for döngüsü kullanmamız gerekecektir.

Proje Tanımı

3*3 lük 2 boyutlu bir diziye girilen değerleri for döngüsü yardımı ile bir listbox’a listeleyiniz.

Proje Tasarımı

Proje Kodları

Proje Ekran Görüntüsü

Kod İncelemesi

  • int[,] Sayılar = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

Öncelikle bizden istenen 3*3 uzunluğunda 2. boyutlu integer tanımlamamızı gerçekleştirdik ve birde bu dizimizin değerlerini atadık.

  • for (int i = 0; i < Sayılar.GetLength(0); i++)
    {
            for (int j = 0; j < Sayılar.GetLength(1); j++)
              {
                   listBox1.Items.Add(Sayılar[i, j]);
              }
    }

Kullandığımız iç içe for döngüsünün mantığı şudur.

Dizinin satırları üzerinde sütun sayısı kadar dönerek tüm elemanlarına ulaşma mantığı üzerine kurulmuş bir sistemdir.

Burada cümleden de çıkarabildiğimiz bir anlam var. O zaman ilk for döngüsü dizinin satır sayısına göre dönmeli içindeki for döngüsü de sütun sayısı kadar dönmeli.

GetLength metodu dizilerde satır sütun uzunluklarını bulmak için kullandığımız bir metoddur. 

Ve burada Aynı dizilerdeki sayma mantığından yola çıkara 0 Satır uzunluğunu verirken 1 değeri sütun uzunluğunu vermektedir. Buradaki kullanım mantığı da bunun üzerine oturtulmuştur.

Kısaca orada yapılan işi sözel olarak ifade etmek gerekirse.

i=0 ile başladı Sayılar.GetLength(0) değeri geriye satır sayısı olun 3 değerini dönecektir.

0<3 şartı sağlandığına göre içerdeki kodlar çalışır.

Orada da bizi bir for döngüsü karşılıyor.

j=0 ve Sayılar.GetLength(1) bize sütun sayısı olan 3 ü dönecektir.

0<3 olduğu için içindeki kodlar çalışır.

(0,0) değeri yazdırılır. J değeri 1 artırılır.

1<3 oluduğundan

(0,1) değeri yazdırılır.

Bu işlem böylece tüm dizi elemanlarına ulaşana kadar tekrar edilir.

  • Length Metodu

Daha önce Length özelliğini görmüştük. Length özelliği tek başına bir dizideki eleman sayısını bize geri döner.

Çok boyutlu bir dizinin toplamda kaç elemanı olduğunu öğrenmek istersek bunu kullanmamız gerekir.

Bu dersimizde şimdilik bu kadar bir sonraki yazımda görüşmek üzere.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/