1 Nisan 2012 Pazar

C# Tek boyutlu diziler ve sıralama

Programlama dillerinde tek boyutlu,çift boyutlu ve çok boyutlu diziler kullanılmaktadır.Diziler yapacağımız işlemleri daha da kolaylaştırmak için vardır.Dizileri kullanarak basit mantıkta bir sürü değişken tanımlamaktan kurtulmuş oluruz.Aşağıda yapacağımız örnekte tek boyutlu bir dizi kullanacağız ve bu dizinin elemanlarını küçükten büyüğe doğru sıralayacağız.

Tek boyutlu diziler

int[] A=new int[dizi boyutu]
string[] A=new string[dizi boyutu]
double[] A=new double[dizi boyutu] şeklinde  tanımlanabilirler.

Dizi boyutu yazılan yere örneğin 5 yazarsak; bu dizi maksimum 5 eleman kabul edebilir.Dizilerde her elemanın bir index numarası vardır.Dizimiz 5 elemanlı interger tip tutan bir dizi olsun.İçindeki değerler

10
15
20
25
30 olsun.Dizilerde index numaraları 0 dan başlar.Buarada dizimizin elemanı olan 10 değerinin index numarası 0'dır.15 değerinin index'i ise 1 dir.En son 25 değerinin index numarası 4 tür.Diziler 0 dan başladığı için dizi boyutu-1 e kadar gider.Şimdi örnek programımıza geçebiliriz.


Resimdeki gibi bir form hazırlıyoruz.Daha sonra formumuza şu kodları ekliyoruz:

 int[] dizi = new int[5];// 5 elemanlı bir dizi tanımlanıyor 
        int sayac = 0;// kaç adet eleman girildiğini tutmak için tanımlandı
        private void button1_Click(object sender, EventArgs e)
        {
            if(sayac==0)
                label2.Text = "";// sayac 0 ise label2 nin içeriği temizleniyor
           
            dizi[sayac] = Convert.ToInt32(textBox1.Text);// butona her basıldığında dizinin indexine girilen değer atanıyor
            sayac++;// sayacı 1 arttırıyoruz ki her defasında aynı indexin üzerine yazmasın
            textBox1.Text = "";
            textBox1.Focus();// Textbox a değer girilip butona basıldıktan sonra imlecin yine textboxta kalması sağlanıyor.
            if (sayac == 5)// dizinin kapasitesi 5 ti.5 ten fazla girilmesine engel oluyoruz.
            {
                
                Array.Sort(dizi);//dizi burada sıralanıyor
                
                for (int i = 0; i < dizi.Length; i++)
                {
                    label2.Text += " "+dizi[i].ToString();// buradada dizinin bütün içeriği yazılıyor
                }
                sayac = 0;// yeniden işlem yapabilmek için sayac sıfırlandı
                

            }
        } 

Dizi ve sayac tanımlamamızı global alanda tanımlıyoruz.Eğer bunları butonun içinde tanımlamış olsaydık butona her basıldığında başlangıç değerlerini almış olacaklardır.Buda bizim işimize yaramayacaktır.

Butona her basılışta sayac değerimiz (sayac++;) komutuyla birer birer arttıyor.Sayac değerimizi arttırmamız butona her basışta dizinin farklı bir index'ine değer atamamızı sağlar.Şöyle ki ; 

dizi[sayac] kodunun anlamı aslında,sayac değeri 0 iken dizi[0], 1 iken dizi[1] diye gider.Bu yüzden textbox'a girilen değer her defasında dizinin farklı bir index'ine atılır.

Array.Sort(dizi); komutuyla dizimizin içeriğini otomatik olarak küçükten büyüğe doğru sıralar.Eğer büyükten küçüğe sıralamak istersek Array.Reverse(dizi); komutunu ekleyerek bu işlemi yapabiliriz.

Programın en sonunda dizinin içeriğini label 'a yazırmak kalıyor.for döngüsü içindeki i değişkeni birer birer arttığı için dizinin içeriğini sırayla yazdırmış oluyoruz.Ve son olarak sayac değişkenini 0 yaparak yeni işlem yapılmasını sağlayabiliyoruz.


Hiç yorum yok:

Yorum Gönder