6 Nisan 2012 Cuma

C# For Döngüsü

C#'ta döngü kullanımları bir çok işimizi kolay hale getirir.Bir döngü kurarak normalde yazmamız gereken bir çok satırı, kurduğumuz döngü sayesinde bir kaç satırla yazabiliriz.Ayrıca döngülerle kontrol işlemleri de yapabiliriz.Yani anlayacağınız döngüler tüm programlama dillerinin vazgeçilmez bir parçasıdır.Bugün döngü tiplerinden For döngüsünü anlatmaya çalışacağım.

For döngüsü en çok kullanılan döngü tiplerinden biridir.



1)

int sayac=0;
for( int i=0 ; i<=10 ; i++ )
{
sayac++;
}

Burada for döngüsü içinde 1.blokta "i" değişkeni tanımlanmıştır.Başlangıç değeri olarak 0 atanmıştır.Yani i değişkeni 0 dan başlayacaktır.2. blokta for döngüsünün koşulu belirlenmiştir.Yani i değişkeni 10 dan küçük olduğu sürece bu döngünün devam edeceği belirtilmiştir. 3. blokta ise i değişkenin artış miktarı belirtilmiştir.Yani döngü her bir dönüşünde i değerinin 1 artacağını belirtmiş oluyoruz.

Döngü ilk çalıştığında i değişkenine 0 atıyor.Daha sonra gelip 10 dan küçük olup olmadığına bakıyor.10 dan küçük olduğu için sayac değişkenini 1 arttırıyor.sayac değişkenini arttırdıktan sonra for döngüsünün 3 bloğuna geliyor döngü ve i değişkenini yine 1 arttırıyor.Sonra 2 bloğa gelip yine 10 dan küçük olup olmadığını kontrol ediyor.Bu şekilde döngü i değişkeni 10 olana kadar bu işlemler her defasında tekrar tekrar gerçekleşiyor.Bu işlem her tekrar ettiğinde sayac değişkeni 1 arttıyor ve son olarak 10 oluyor ve döngü bitiyor.For döngüsü devam ettiği sürece süslü paratezler arasındaki bütün işlemleri teker teker gerçekleştirir.

2)

            int sayac=0;
            for (int i = 0; i < 10; i++)
            {
              
                for (int j = 0; j < 10; j++)
                {
                sayac++;
                }
            }
            textBox1.Text = ikinci.ToString();


Bu kısımda iç içe for döngüleri kullanılmıştır.İlk döngü bir kere çalıştıktan sonra alttaki döngüye geçer ve bu döngünün koşulunu sağlayana kadar döngü devam eder.Alttaki döngünün koşulu tamamlandıktan sonra ilk döngüye geri döner.Eğer koşul hala sağlanmamışsa alttaki döngü tekrar çalışır.Bu şekilde döngüler koşullar sağlanana kadar devam eder.Yaptığımız bu örnekte bu kod satırları tam 100 defa çalışır.Gördüğünüz gibi bir kaç satırda 100 defalık bir işlem yapmış olduk.Döngüden çıktıktan sonra sayac değişkeninin değeri Textbox'a 100 olarak basılır.Birden fazla döngüyü iç içe alabiliriz.Bu bizim yapacağımız yazılma göre şekillenir.

Bundan sonraki konum yine döngüler olacak.For ve diğer döngüler ile ilgili örnekler ve açıklamalar yapmaya devam edeceğim.

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.