- Ramazan Bayramınız mübarek olsun.

C# Diziler 2

Diziler 2     Merhaba, Diziler ile ilgili devam niteliğinde, ikinci bir yazı yazacağımı söylemiştim. İlk yazıyı yazdığımdan beri epey zaman geçti. İşler güçler derken anca vakit bulabildim. Kaldığımız yerden devam edelim…

DERS 7 : Diziler 2

     İlk yazımda dizileri genel hatlarıyla anlatmıştım. Dizi nedir, nasıl değer atanır, döngüler ile beraber nasıl kullanılır vs. vs. Bu yazımda matrisler, düzensiz diziler ve dizi metotlarından bahsedeceğim. Matrisler ile başlayalım.

     Bildiğiniz gibi matrisler nxm boyutundaki tablo gibidirler. Örneğin 3×2′lik bir matrisin 6 elemanı vardır. Matrislerin programlama dilinde karşılık gelen gösterimi çok boyutlu dizilerdir. Daha doğrusu matris dediğimiz aslında 2 boyutlu dizidir. 2 boyutlu dizi basitçe şu demek, elinizde bir dizi olduğunu düşünün ve bu dizinin her elemanın da aynı boyutlu başka bir dizi olduğunu düşünün. Örneğin 3 elemanlı bir diziniz var ve bu dizinin her bir elemanı ise 2 elemanlı başka bir diziyi temsil ediyor. Aşağıda 3×2′lik bir matrisin yani iki boyutlu dizinin nasıl tanımlandığını ve değerlerin nasıl okunduğunu görebilirsiniz.

int[,] dizi = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
Console.WriteLine(dizi[0, 0]); // 1
Console.WriteLine(dizi[1, 0]); // 3
Console.WriteLine(dizi[2, 1]); // 6

     Matris üzerindeki yerleşim ise şu şekilde olacaktır:
Dizi

     Peki eğer, değerleri diziyi tanımlarken atamak istemiyorsak da sonradan atamak istiyorsak nasıl bir tanımlama ve değer ataması kullanmalıyız? Bunun için de aşağıdaki örnek konsol uygulamasını inceleyebilirsiniz.

using System;

namespace Ders7
{
    class Program
    {
        static void Main(string[] args)
        {
            int sayi = 0;
            int[,] dizi = new int[3, 4];
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    dizi[i, j] = sayi;
                    sayi++;
                }
            }

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    Console.Write(dizi[i, j] + " ");
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}

     İlk satırda, değer atamalarında kullanabilmek için bir değişken tanımlıyoruz. Ardından dizimizin tanımlamasını yapıyoruz ve dizimizin 3×4′lük bir dizi olduğunu belirtiyoruz. Dizi iki boyutlu olduğu için iç içe iki for döngüsü kullanmamız gerekiyor. Dıştaki döngü satır sırasını belirlerken, içteki döngü sütun sırasını belirliyor. Değer atamasını ise normal dizilerde olduğu gibi dizi[1,2]=5 şeklinde yapıyoruz. Üstteki ikili for döngüsünün ilki değer ataması yapmak için kullanılırken, alttaki ikili for döngüsü ise değerleri ekrana basmak için kullanılıyor. Yukarıdaki kodu yazıp çalıştırdığınızda aşağıdaki gibi bir ekran görüntüsü elde edeceksiniz.

Konsol

     Düzensiz dizilerin sadece ne olduğundan bahsedip geçeceğim. Çünkü bu tarz dizileri pek kullanmanız gerekmeyecek. Çok boyutlu diziler için yaptığımız tanımı hatırlayın, “Elinizde bir dizi olduğunu düşünün ve bu dizinin her elemanın da aynı boyutlu başka bir dizi olduğunu düşünün.”. Evet, düzensiz dizilerdeki tek fark, tanımda kırmızı olarak yazdığım yer. Örneğin elimizde 3 elemanlı bir dizi var. Bu dizinin her bir elemanı ise başka bir dizi. Eğer bu dizilerin boyutları eşit ise çok boyutlu dizi, dizilerin boyutları farklı ise düzensiz dizi adını alıyorlar. Aşağıda düzensiz dizi tanımlamasını ve bu dizinin nasıl göründüğünü bulabilirsiniz.

int[][] dizi = new int[3][];
dizi[0] = new int[2];
dizi[1] = new int[4];
dizi[2] = new int[3];

Düzensiz Dizi

     Yazımızın son konusu ise dizi metotları. Metot nedir? Önceden yazılmış, belirli işlemleri yapmaya yarayan kod bloklarıdırlar. Mesela elinizde bir sayı dizisi var ve sayıları sıralamak istiyorsunuz. Elbette ki kendi kodunuzu yazabilirsiniz; ancak daha önceden yazılmış olan Sort() metodunu kullanabilirsiniz. Aşağıda dizilerle alakalı olarak sıkça kullanılabilecek metodları açıklamaya çalıştım. Bu metodları herhangi bir dizi değişkeninin sonuna “.” koyduktan sonra yazabilirsiniz. Metodların açıklamalarından sonra, altta örnek birkaç tane de kod ekledim, onlardan faydalanabilirsiniz.

  • CopyTo: Bir dizinin bir bölümünü veya tamamını başka bir diziye kopyalamanızı sağlar.
  • GetLength: Dizinin uzunluğunu verir.
  • SetValue: Dizi içerisindeki herhangi bir alana değer atamanızı sağlar.

     Değişkenin sonuna “.” koyarak çağırabileceğiniz bu metotlar dışında, diziler için genel olarak tasarlanan başka metotlar da vardır. Bu metotları ise “Array.” diyerek çağırabilirsiniz. Aşağıda bu metotlardan bazılarını açıklamaya çalıştım.

  • BinarySearch: Verilen dizi içerisinde istediğiniz bir elemanı arar.
  • Clear: Dizinin elemanlarının bir kısmını veya tamamını silmenizi yani varsayılan değere çekmenizi sağlar.
  • IndexOf: Aradığınız bir değerin dizinin kaçıncı elemanı olduğunu öğrenmenizi sağlar (birden fazla varsa ilkini söyler).
  • LastIndexOf: Aradığınız bir değerin dizinin kaçıncı elemanı olduğunu öğrenmenizi sağlar (birden fazla varsa sonuncusunu söyler).
  • Reverse: Diziyi tersine çevirir. İlk eleman artık son eleman olur.
  • Sort: Diziyi sıralar.
using System;

namespace Ders7
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] dizi = new int[] { 3, 4, 1, 2 };
            dizi.GetLength(0); // Tek boyutlu diziler için 0 yazılır. Sonuç: 4
            dizi.SetValue(5, 3); // "2" değerini "5" olarak değiştirir.

            int sira = Array.IndexOf(dizi, 1); // dizi içerisinde "1" elemanının sırasını söyler. Sonuç: 2
            Console.WriteLine(sira); // 2

            Array.Reverse(dizi); // Diziyi tersine çevirir. Sonuç: 5, 1, 4, 3
            Array.Sort(dizi); // Diziyi küçükten büyüğe sıralar. Sonuç: 1, 3, 4, 5

            //dizi'nin son halini yazdıralım... 1,3,4,5 olmasını bekliyoruz
            for (int i = 0; i < dizi.GetLength(0); i++)
            {
                Console.Write(dizi[i] + " ");
            }

            Console.ReadKey();
        }
    }
}

     Bu yazımızın da sonuna geldik. Bir sonraki yazımızda metotları ve fonksiyonları anlatmaya çalışacağım. Yavaş yavaş eğlenceli kısımlara geçiyor olacağız. Şunu da belirteyim ki daha yeni başlıyoruz ve yazmam gereken birçok konu var. Hatalı gördüğünüz veya konuyla ilgili öğrenmek istediğiniz noktaları, aşağıdaki yorum kısmından bana iletebilirsiniz. Bir sonraki yazıda görüşmek dileğiyle…

facebooktwittergoogle_pluslinkedinmail
Yazıya puan vermeyi unutmayın...
Çok kötüKötüİdare ederİyiÇok iyi (6 oy verildi, ortalama puan: 3,83)
Lütfen bekleyin ... Lütfen bekleyin ...

Gelen arama terimleri:
  • c# dizi örnekleri (5)
  • iki boyutlu diziler c# (4)
  • C# dilinde çok boyutlu diziler (3)
  • c# diziler örnekler (2)
  • c# diziler örnekleri (2)
  • c# dizi örnekleri ve satır açıklaması (2)
  • c# örnekleri diziler (2)
  • diziler c# (2)
  • c# 2 boyutlu dizi değer atama (2)
  • c sharp diziler (2)
En Son Yazılan Yazılar:

C# ile Yılan Oyunu (27.07.2014)
2014 Ramazan Bayramı Namaz Vakitleri (26.07.2014)
2014 İstanbul İmsakiye (25.06.2014)
Berat Kandili (07.06.2014)
Wordpress Sitenizi Hızlandırın (31.05.2014)

Yorum Yapın

*

warning
www.kemalkefeli.com üzerindeki herhangi bir yazının veya kodun izinsiz olarak başka bir yerde kullanılması yasaktır.