Matematikteki “Matris” olayına C#’ta “Diziler” diyoruz. Sadece bir satır veya sadece bir sütundan oluşan matrise tek boyutlu dizi, satır ve sütunlardan oluşan matrislere çok boyutlu diziler diyoruz. Matris konusuna buradan göz atabilirsiniz.

Tek satırlı matris: A(1,n)=[0,1,2,3,4,5,6,7,……..,n]
sadece tek satırdan n tane sütundan oluşan ve n tane elemanı olan bir dizi.

VeriTipi[] DiziAdı = new VeriTipi[ElemanSayisi];

.

Satır ve Sütunlardan oluşan matris:

n tane sütun ve m tane satırdan oluşan ve m*n elemanlı çok boyutlu bir dizi.

VeriTipi[,] DiziAdı = new VeriTipi [SatırSayisi,SütunSayisi];

C#’ta diziler referans tipinde değişkenlerdendir. C#’ta tanımlanan tüm diziler System.Array sınıfından türemiş bir nesnedir.

5 adet sayiyi tutan bir dizi tanımlamak istersek;

int[] Sayilar = new int[5];

bu dizinin elemanları şu şekilde tanımlarız;

Sayilar[0]=23; // Sayilar isimli dizinin ilk elemanı
Sayilar[1]=1256; // ikinci elamanı
Sayilar[2]=12; // üçüncü elemanı
Sayilar[3]=2300; // dördüncü elemanı
Sayilar[4]=125; // beşinci elemanı

Görüldüğü gibi dizinin ilk elamanı 0′dan başlıyor.

Aynı diziyi şu şekilde de tanımlayabiliriz.

int[] Sayilar = {23, 1256, 12, 2300, 125};

şimdi de for döngüsü ile bir dizinin bütün elemanlarına ulaşıp toplama yapıp sonuca ulaşalım.

int[] Sayilar = {23, 1256, 12, 2300, 125};

int Toplam=0;

for(int i=0; i < 5; i++)
{
     Toplam += Sayilar[i];
}

for döngüsü her dönüşünde sırasıyla dizinin bütün elemanlarına ulaşıp Toplam değişkenine ekleyecek. Toplam değişkeninin en son değeri dizideki bütün elemanların toplamı olacak.

for döngüsünde koşul kısmında dizinin eleman sayısı olan 5 yerine Sayilar.Length de yazabiliriz. Sayilar.Length Sayilar dizisinin eleman sayısını verir.

int[] Sayilar = {23, 1256, 12, 2300, 125};

int Toplam=0;

for(int i=0; i < Sayilar.Length; i++)
{
     Toplam += Sayilar[i];
}

Length: Dizinin eleman sayısını verir.
int ElemanSayisi= Sayilar.Length;

Clear: Dizideki bütün elemanları temizler dizi int tipindeyse bütün elemanlar 0 değerini alır. eğer string dizisiyse bütün elemanlar boş “” değerini alır.
Array.Clear (Sayilar);

Reverse: Dizinin eleman sırasını tersine çevirir.
Array.Reverse(Sayilar);

Sort: Dizinin elemanlarını büyükten küçüğe sıraya dizer. eğer string dizisiyse harf sırasına göre dizer.
Array.Sort(Sayilar);
.

1 tane sayısal loto kuponunda 8 tane kolon vardır ve her kolonda 6 sayı mevcuttur. Bu kupondaki 8 kolonu da oynadığımızı düşünelim. Bu kolonları alt alta yazalım. Oluşan dizi 8 satırlı 6 sütunlu bir dizi olacaktır. Bu diziye 2 boyutlu dizi diyoruz.

int[,] SayisalLotoKuponu = new int [8, 6];

şimdi kuponlardaki sayıları belirleyelim;

//Birinci kolon
SayisalLotoKuponu [0,0] = 7;
SayisalLotoKuponu [0,1] = 8;
SayisalLotoKuponu [0,2] = 15;
SayisalLotoKuponu [0,3] = 21;
SayisalLotoKuponu [0,4] = 27;
SayisalLotoKuponu [0,5] = 36;

SayisalLotoKuponu [2,4] = 27;  // 3. kolonun 5. sayısı

SayisalLotoKuponu [7,5] = 36; // 8. kolonun 6. sayısı

Dikkat edilecek nokta eleman sayıları 0’dan başladığı için istediğimiz satır ve sütuna ulaşabilmek için satır ve sütun sayısını 1 eksiltip yazıyoruz. Yani 4.kuponun 3. sayısına ulaşmak için
SayisalLotoKuponu [3,2];
yazıyoruz.

Şimdi de bu kupondan 3 adet olduğunu düşünelim. Yani hepsinin 8 kolonu oynanmış 3 adet kupon. Bu da 3 boyutlu dizi oluyor.

int[, ,] SayisalLotoKuponlari = new int [8, 6, 3];

Kuponlardaki sayıları yazarsak;

//Birinci Kupon Birinci kolon
SayisalLotoKuponlari [0,0,0] = 7;
SayisalLotoKuponlari [0,1,0] = 8;
SayisalLotoKuponlari [0,2,0] = 15;
SayisalLotoKuponlari [0,3,0] = 21;
SayisalLotoKuponlari [0,4,0] = 27;
SayisalLotoKuponlari [0,5,0] = 36;

SayisalLotoKuponlari [2,4,1] = 27;  // 2.Kuponun 3.kolonundaki 5.sayı

SayisalLotoKuponlari [7,5,2] = 36; // 3.Kuponun 8.kolonundaki 6.sayı

Gereko.com, ihtiyaç sahiplerinin hizmet verenlerle buluştuğu bir websitesi. Neye ihtiyacınız varsa yazıyorsunuz, kurs, websitesi, parti, müzisyen… aklınıza gelebilecek her şey… Ve size teklifler sunuluyor, şu kadar fiyata şu şekilde yaparım diye. Ya da siz ihtiyaç sahiplerine teklif sunabiliyorsunuz.

Bununla benzer bir sisteme sahip hosting bulma siteleri var, hangi özelliklerde nasıl bir hosting istiyorsun yazıyorsunuz ve hosting firmaları size teklif sunuyor. işte bunun daha da genelleştirilmiş hali Gereko.com

Gereko.com’da İhtiyaç Sahibi ve Hizmet Veren olmak üzere iki tür üyelik mevcut. İhtiyaç sahibi üyeliği ücretsiz olmasına karşın hizmet veren üyeliği için üyelik paketlerinden satın almalısınız. Fakat 1 Mart 2011 tarihine kadar Gold üyelik paketi hizmet verenlere de ücretsiz olarak sunuluyor.

www.gereko.com

if-else yapısında olduğu gibi switch-case de bir karar, kontrol yapısıdır. switch-case ile yaptıklarımızı if-else kullanarak da yapabiliriz. Fakat bazı durumlarda switch-case kullanmamız çok daha pratik olacaktır.

switch-case yapısında tanımladığımız bir değişkenin değeri kontrol edilir.

switch (Degisken)
{
    case kosul1:
    //kosul1 icin yapılacaklar
    break;

    case kosul2:
    //kosul2 icin yapılacaklar
    break;
    .
    .
    .
    .
    .
    case kosuln:
    //kosuln icin yapılacaklar
    break

    default:
    //varsayılan yapılacaklar listesi
    //hiçbir koşul gerçekleşmediğinde buradakiler yapılır
    break;
}

switch-case’te kosul1, kosul2… vs. olarak belirttiğimiz yerlere if-else’te olduğu karşılaştırma operatörleri kullanılmaz. Sadece değişkenin değeri yazılır. Değişken hangi değeri aldığında ne iş yapılacağı belirlenir.

Mesela Ay isimli byte türünde bir değişkenimiz olsun eğer değişkenin değeri 1 ise mesaj kutusu ile Ocak, 2 ise Şubat, 3 ise Mart… bütün ayları bu şekilde switch-case yapısı içinde yazalım.

int Ay = 12;
            string AyAdi = "";

            switch (Ay)
            {
                case 1:
                    AyAdi="Ocak";
                    break;
                case 2:
                    AyAdi="Şubat";
                    break;
                case 3:
                    AyAdi="Mart";
                    break;
                case 4:
                    AyAdi="Nisan";
                    break;
                case 5:
                    AyAdi="Mayıs";
                    break;
                case 6:
                    AyAdi="Haziran";
                    break;
                case 7:
                    AyAdi="Temmuz";
                    break;
                case 8:
                    AyAdi="Ağustos";
                    break;
                case 9:
                    AyAdi="Eylül";
                    break;
                case 10:
                    AyAdi="Ekim";
                    break;
                case 11:
                    AyAdi="Kasım";
                    break;
                case 12:
                    AyAdi="Aralık";
                    break;
                default:
                    AyAdi = "TANIMSIZ";
                    break;
            }

            MessageBox.Show(AyAdi);
        }

Ay değişkeninin değerini 12 olarak belirlediğimiz için ekrana mesaj kutusu ile Aralık yazısı çıkacaktır.

For döngüsü ile bir olayın kaç kez gerçekleşeceğini ifade ederiz . For döngüsünde döngü şartlarını üç ifade ile belirleriz. ilk ifade de başlangıç değeri, ikinci döngü koşulu, üçüncü de ise artış miktarını yazarak for döngüsünü oluştururuz.

for(Başlangıç; Koşul; Artış)
{
     //koşul doğru olduğu sürece yapılacaklar
}

Başlangıç kısmında bir değişken tanımlayıp başlangıç değerine eşitliyoruz. Koşul kısmında for döngüsünün içine girme koşulunu yazıyoruz. Artış kısmına ise başlangıç kısmında tanımladığımız değişkenin kaçar kaçar artacağını belirliyoruz.

Mesela 1′den 100′e kadar olan sayıların toplamını yapan bir for döngüsü yazalım

int Toplam = 0;

for (int i = 1; i <= 100; i++)
{
      Toplam += i;
}

Başlangıç kısmında int tipinde, i isminde bir değişken tanımlıyoruz. Koşul kısmında i değişkeni 100 den küçük veya eşit olduğu sürece for döngüsünü çalıştıracağımızı belirtiyoruz. Ve artış kısmında i değişkenimizin değerini her döngüde 1 arttıracağımızı belirtiyoruz. for döngüsü her döndüğünde 1 artan i değişkenini Toplam değişkenin son değeri ile topluyor. i değişkeni 1’den 100’e kadar bütün sayıları alıp da döngüye girdiği için Toplam değişkeni en son 1’den 100’e kadar olan sayıların toplamına eşitleniyor.

for döngüsünde i++; Toplam+=i ifadelerinde olduğu gibi atama operatörlerini sıklıkla kullanırız.

i++;
i+=1;
i=i+1;
i'nin değerini 1 artıyor
i- -;
i-=1;
i=i-1;
i'nin değerini 1 azaltıyor
Toplam=Toplam+i;
Toplam+=i;
Toplam değerine i değişkeninin değerini ekliyor.
Sayi=Sayi+5;
Sayi+=5;
Sayi değişkenine 5 ekliyor.
Sayi=Sayi-5;
Sayi-=5;
Sayi değişkenini 5 azaltıyor
Sayi=Sayi*5;
Sayi*=5
Sayi değişkenini 5 ile çarpıyor
Sayi=Sayi/5;
Sayi/=5;
Sayi değikenini 5'e bölüyor

tabloda gördüğümüz bütün işlemlerde sonuçlar tekrar aynı değişkene atanır. yani Sayi değişkeninin değeri 20 ise Sayi/=5; yazdığımızda Sayi değişkenini 5’e böleriz ve sonuç 4 olur. Böylece Sayi değişkeninin son değeri artık 4’tür.

.

ÖRNEK:

1920’den 2011’e kadar olan yılların ComboBox’a yazılması:

for (int yil = 1920; yil <= 2011; yil++)
{
       comboBox1.Items.Add(yil);
}

combo box yıllar

if-else karar yapısı ile belirlediğimiz bir koşulun doğru veya yanlış olması durumunda yapılması gerekenleri programa yaptırırız. Bunu yapmak için çeşitli karşılaştırma operatörleri kullanarak bir koşul oluşturur ve koşulun doğruluğuna göre yapılması gerekenleri belirleriz.

.

if (Koşul)
{
//Koşul doğruysa yapılacaklar
}
else
{
//Koşul yanlışsa yapılacaklar
}

if-else yapısında koşulu belirtirken çeşitli karşılaştırma operatörleri kullanılır.

İLİŞKİSEL OPERATÖRLER MANTIKSAL OPERATÖRLER
== Eşittir & Ve
!= Eşit değildir | Veya
< Küçüktür && Koşullu Ve
> Büyüktür || Koşullu Veya
<= Küçüktür veya eşittir ! Değil
>= Büyüktür veya eşittir

Mesela tanımladığımız Sayi isimli değikenimiz 5′e eşitse mesaj kutunda “Sayi 5′e eşittir”, eşit değilse “Sayı 5′e eşit değildir” yazsın.

byte Sayi = 5;

if (Sayi == 5)
{
MessageBox.Show("Sayı 5'e eşittir");
}
else
{
MessageBox.Show("Sayı 5'e eşit değildir");
}

Tanımladığımız Sayı değişkeni 5 olduğu için mesaj kutusunda “Sayi 5′e eşittir” yazacaktır.

Şimdi de Sayi değişkeni 5 eşit veya 10 eşitse mesaj kutunda “Sayi 5′e eşittir”, eşit değilse “Sayı 5′e eşit değildir” yazsın.

byte Sayi = 5;

if (Sayi == 5 || Sayi==10)
{
MessageBox.Show("Sayı 5'e eşittir");
}
else
{
MessageBox.Show("Sayı 5'e eşit değildir");
}

Veya |  -  Koşullu Veya ||
İkisi de aynı anlama geliyor. İkisini de aynı amaçla kullanabiliriz. Fakat Veya(|) yazılan bütün karşılaştırmaları kontrol eder . Koşullu Veya(||) ise ilk doğru koşulda diğer koşullara bakmaya gerek olmadığı için hemen alt satıra geçer. Yani performans açısından Koşullu Veya(||) kullanılmalıdır.

Ve & – Koşullu Ve &&
İkisi de aynı anlama geliyor. İkisini de aynı amaçla kullanabiliriz. Fakat Ve(&) yazılan bütün karşılaştırmaları kontrol eder . Koşullu Ve(&&) ise ilk yanlış koşulda diğer koşullara bakmaya gerek olmadığı için hemen else kısmına geçer. Yani performans açısından Koşullu Ve(&&) kullanılmalıdır.

Atama Operatörü =    Karşılatırma Operatörü Eşittir ==
tek eşittir işareti (=) ile atama işlemlerini yapıyorken, iki eşittir işareti (eşit eşittir ==) ile karşılaştırma yapıyoruz. İf koşulu içinde  karşılaştırma yaptığımız için == kullanılır.

.

ÖRNEK:

textbox’a yazdığımız isim eğer Emrah Yumuk ise mesaj kutusunda “Hoşgeldiniz Sayın Emrah Yumuk”, eğer değilse “Kim olduğunuzu hatırlayamadım” yazsın.

string AdSoyad;

AdSoyad = textBox1.Text;

 if (AdSoyad == "Emrah Yumuk")
{
     MessageBox.Show("Hoşgeldiniz Sayın Emrah Yumuk");
}
else
{
     MessageBox.Show("Kim olduğunuzu hatırlayamadım");
}

.

Eğer birden fazla koşul varsa o zaman “else if” kullanılır.

if (Kosul1)
{
//Birinci koşulun yapılacak işler listesi
}
else if (Kosul2)
{
//ikinci koşulun yapılacak işler listesi
}
else if (Kosul3)
{
//üçüncü koşulun yapılacak işler listesi
}
else
{
//Diğer durumlar için yapılacak işler listesi
}

Kosul1 doğru olması durumunda if kısmındaki yapılacaklar listesi işletilir. else if ve else kısımlarına girilmeden program akışına devam eder. Kosul1 yanlışsa Kosul2′yi kontrol eder. Kosul2 doğrusuysa ikinci koşulun yapılacak işler listesini yapar. diğer else if koşuluna bakılmaz, program diğer else if ve else kısmına girmeden devam eder.