Programlamada çok boyutlu diziler(matrisler)

Bunu Paylaş!
Selamlar…?
          Bayram tatili okulların kapanması derken yazılara biraz ara vermek mecburiyetinde kaldım fakat tekrar burada olabilmek çok güzel…? En son yayınladığım yazımda programlamada dizilerin kullanımını anlatmıştım. Şimdi ise bu konuyu biraz daha derinleştirerek çok boyutlu dizileri, matrisleri örneklerle anlatacağım.
matris, çok boyutlu diziler

        Dizileri şöyle bir hatırlayacak olursak aynı türden değişkenlerin birbirleriyle alakalı bir şekilde tutulduğu yapılara dizi demiştik. Daha detaylı bilgi için ilgili yazıya tıklayabilirsiniz. 
Birden fazla boyuttan oluşan dizilere de matris diyoruz. Ben yazının devamında matris diyerek devam edeceğim. Matrisleri gözümüzde canlandırmanın en basit yöntemi tablo olarak düşünmektir. Örneğin haftalık ders programı gibi bir çizelge veya bir kitaplık düzeni gibi canlandırabiliriz zihnimizde birazdan verdiğim örneklerle daha anlaşılır olacaktır. Daha önce anlattığım diğer programlama yapıları gibi matrisler de bir çok dilde kodlama yaparken sıklıkla kullandığımız bir yapıdır. Dizi veya matrisin olduğu yerde de büyük ihtimalle döngünün olduğunu söyleyebiliriz. Çünkü eğer diziyi veya matrisi bir bina gibi düşünürsek bu binada dolaşmamızı sağlayacaktır döngüler. İçinde dolaşamadığımız ya da istediğimiz bir elemanına ulaşmaya çalışmadığımız bir matris tasarımı düşünülemez. Teorik olarak vereceğim bilgiler bu kadar bundan sonrası için önce yapıyı tanıtacağım ardından örneklerle devam edeceğim. 
 

 KULLANIM
Matris tanımlamasını aşağıdaki şekilde yapıyoruz.

  int [,] matris=new int[2][2];

Bu satırı adım adım inceleyecek olursak    

int //matrisin tipi  

[,] matris // [,] işareti matris olduğunu anlayabilmemizi sağlayan semboldür, matris ise bizim bu diziye verdiğimiz isim yani diziyi bu isimle çağıracağız. 

= new int[2][2]//  devamındaki new int[2][2] ile 2 satır ve 2 sutundan oluşan bir matris tanımlamış oluyoruz.
 

Ortaya aşağıdaki gibi bir görüntü çıkmış gibi farz edebiliriz. 

programlamada matris kullanımı
Şekilden de anlaşılabileceği gibi matris dediğimiz yapının aslında mantık olarak diziden çok farkı olmadığını görebiliyoruz. matris[0,0] elemanı bizim matrisimizin 0. satır ve 0. sutununda bulunan değer, matris[0,1] elemanı ise 0. satır ve 1. sutununda bulunan değerdir. Diğer değerler için de aynı durum geçerlidir.
 
Alternatif tanımlama:
int[,] matris1={{23,12,67},{3,1,7},{45,18,6},{90,8,10}} 
Yukarıdaki tanımlama da farklı görülebilir ama aslında bir önceki yaptığımız tanımlamayla aynıdır. Burada sadece değerleri direk girmiş oluyoruz eğer dikkat edecek olursak 4 satır 3 sutunluk bir matris oluşturmuş oluyoruz. Örneğin matris1[1,2] elemanının indislerin 0’dan başladığını da hesaplayarak 7 sayısına denk geldiğini görebiliriz. Benzer şekilde matris[2,0] elemanı 45 olarak görülebilir.
 
Örneklerle devam edelim.


 

Örnekler

1. int tipinde bir matris tanımlayalım, 3 satır 4 sutunlu olsun ve tanımlarken değerlerini de atamış olalım. Daha sonra matrisin içinde for döngüsü kullanarak dolaşalım yani her elemanını tek tek yazdıralım.

      

    public static void Main(string[] args)

    {    
       int[,] test = { { 9,5,6,1}, { 89, 11, 23, 5 }, { 5, 9, 19, 36 } };
                    for (int i = 0; i < 3; i++) 
            {               for(int j=0;j<4;j++)                {                    Console.WriteLine(test[i,j]);                }            }    }


Bu örnekte döngüyü yazarken iç içe for kullanıldığını gördük bunun nedeni tahmin edebileceğimiz gibi matrisin iki boyutlu oluşundan kaynaklanıyor yani dıştaki for datırları gezerken içteki for sutunları geziyor ve böylece tüm elemanlar ekrana yazılmış oluyor.

 

2. Bu örneğimizde iki tane int tipinde matrisin toplamını yeni bir matrise atayalım ve ekrana yazalım. Burada dikkat etmemiz gereken matrislerin aynı satır ve sutundan oluşmasıdır.

    public static void Main(string[] args)
       {
         int[,] test1 = { { 9, 5, 6, 1 }, { 89, 11, 23, 5 }, { 5, 9, 19, 36 }};
         int[,] test2 = { { 3, 6, 8, 23 }, { 7, 82, 58, 14 }, { 24, 1, 3, 28 } };

            int[,] toplam = new int[3, 4];
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 4; j++)
                {

 
//toplam matrisinin her bir elemanını diğer iki matrisin toplamıyla oluşturuyoruz…
        toplam[i, j] =Convert.ToInt32( test1[i, j]) + Convert.ToInt32(test2[i, j]);
                    
                }

             }

//toplam matrisinin ekrana yazılması…
           for (int i = 0; i 3; i++)
            {
                for(int j=0;j<4;j++)
                {
                  Console.WriteLine(toplam[i,j]);
                }
            }
                 
        }

 
3.   Bu örnekte gun ve yemek listesi adında boyutu 7 olan iki tane diziyi bir matrise dönüştürme işlemini yapıyoruz.Matrisimiz 7×7 yani 7 satır 7 sutundan oluşmaktadır ve biz bu programla aslında 49  günlük yemek listesi hazırlamış oluyoruz.

      static void Main(string[] args)
        {

            string[] gun = {” Pazartesi “,” Salı “,” Çarşamba “,” Perşembe “,” Cuma “,” Cumartesi “,” Pazar ” };

            string[] yemeklistesi = { ” Karnıyarık “, ” Tavuk Sote “, ” Balık “, ” Taze Fasulye “, ” Et yemeği “, ” Makarna “, ” Türlü ” };

            string[,] gununyemegi=new string[7,7];

            for(int i=0;i<7 font=”” i=””>
            {
                Random sec = new Random();  //rasgele sayı üretmemizi sağlayan fonksiyon…

                for (int j = 0; j < 7; j++)
                {
                    int secim = sec.Next(0, 6);   //rasgele üretilen sayıyla o günün yemeğini bulmuş oluyoruz..
                    gununyemegi[i, j] = gun[i] + yemeklistesi[secim];
                }
            }
           
            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 7; j++)
                {
                    Console.WriteLine(gununyemegi[i, j]);
                  
                }

            }

            Console.WriteLine(gununyemegi.Length);
            Console.ReadKey();
        }

Bunu Paylaş!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir