Cuma, 23 Mart 2012 08:38

C# Akış Kontrol Yapıları (if - else (Eğer - Değilse), switch – case,Döngüler,For Döngüsü,While,Do-While

Yazan
Öğeyi Oyla
(29 oy)

if - else (Eğer - Değilse)

If (Eğer) Kosul İfade Yapısı

Sorgulama yapısı, mantıksal olarak;

-Esit mi? Esit değil mi?

-Büyük mü? Büyük Esit mi?

-Küçük mü? Küçük Esit mi?

Sorgulamalarının sonucuna göre islem yapılır. Sonuç olarak iki değer ortaya çıkar bu sonuç ya doğrudur olur yada yanlıstır.

Eğer Sonuç doğru ise if sorgusunun içine girer ve küme parantezi içindeki komutu yerine getirir, eğer değilse bu komut satırını atlar yani uygulamadan devam eder.

private void Form1_Load(object sender, EventArgs e)
{
int sayi1 = 4;
int sayi2 = 5;
if (sayi1 == sayi2)
{
MessageBox.Show("Sayı1 ile Sayı2 Bir birine Esit");
}
}

Else (Değilse)

Yapılan sorgulama sonucunda eğer değer doğru değilse o zaman else komutu ile yanlıs olan sonuç için komutlar yerine getirilir. 

 private void Form1_Load(object sender, EventArgs e)
{
int 
sayi1 = 4;
int sayi2 = 5;
if (sayi1 == sayi2) // Eğer bu iki sayı bir birine esitse

{

MessageBox.Show("Sayı1 ile Sayı2 Bir birine Esit");

}

else // Değilse

{

MessageBox.Show("Sayı1 ile Sayı2 Bir birine Esit Değil");

 }
}

if – else if – else

-Bu sorgulama tipinde eğer sorgusu sonucunda doğru değer elde edilememisse ardısık olarak eğerli olarak sorgulama isleminde kullanılır.

-Son olarak da else ifadesi ile yanlıs sonuç için bir komut yazılır.

private void Form1_Load(object sender, EventArgs e)
{
int sayi1 = 4;
int sayi2 = 5;
int sayi3 = 9;
if (sayi1 == sayi2)
{
MessageBox.Show("Sayı1 ile Sayı2 Bir birine Esit");
}
else if(sayi1+sayi2 == sayi3)
{
MessageBox.Show("Sayı1 ile Sayı2 toplamı sayı3 e Esit");
}
else
{
MessageBox.Show(“Hiç Esitlik Yok");
}
}

 

 İç-İçe if-else yapısı

-Her programlama dilinde olduğu gibi C#  programlama dilinde de if-else yapısı iç içe kullanılabilir. Burada eğer karsılastırma doğru ise içe girer ve tekrar karsılastırma ile karsılasır. Eğer o da doğru ise tekrar içe girer değilse else yapısına girer yada bir üst elseif yada else yapısına çıkar.

-Asağıdaki örnekte bunu çok rahat bir sekilde görebiliriz.

private void Form1_Load(object sender, EventArgs e)
{
int nem = 40;
int sicaklik = 35;
int ruzgar = 10;
if (nem < 20)
{
   if (sicaklik <= 10)
{
    MessageBox.Show("Soğuk ve kuru bir gün");
    if (ruzgar < 10)
{
    MessageBox.Show("Aynı zamanda rüzgarsız bir gün");
}
}
   else
{
   MessageBox.Show("Sıcaklık normal ama kuru bir gün");
}
}
    else if (nem < 60)
{
    if (sicaklik <= 10)
{
    MessageBox.Show("soguk ve orta nemli bir gün.");
}
   else
   MessageBox.Show("Sıcaklık ve nem normal.");
}

switch – case

Switch deyimi genellikle kompleks if-else bloklarının yerine tercih edilir. Switch deyimi ile yapılabilen bütün kontroller if deyimi ile de  yapılabilir. Ancak bazı durumlarda switch deyimi daha sade bir yapıda görünür.

 switch yapısında break, case, switch ve goto anahtar sözcükleri kullanılır.

Dikkat edilecek kurallar;

-switch kelimesi, yapının baslangıcını belirler.

-switch bölümünden sonra bir değisken yazılmalıdır.

-Değiskenin tipi string veya nümerik olabilir.

-case bölümünde, sabit değerler olmalıdır. Burada ifade bulunmaz.

-case bölümleri break ifadesi ile bitirilmelidir.

-case'den sonra { } isaretlerine gerek yoktur.

 Yazım Kuralı
switch (sınama değeri )
{
case değer1 :
yapılacak islemler ;
break;
case değer2 :
yapılacak islemler ;
break;
case değer3 :
yapılacak islemler ;
break;
default :
yapılacak islemler ;
break;
}

switch case

 

Switch – Case Hakkında Notlar

-switch parantezleri içinde double,decimal tipinde değisken kullanılmaz.

-case etiketinden sonra istenen sayıda deyim satırı bulunabilir.

-Her zaman default: bölümünü kullanmanız program yazarken hataları bulabilmenizi sağlar.

-En çok rastlanan hata break; deyiminin unutulmasıdır. Switch yapısı kurulduktan sonra break'lerin doğru yerlerde olup olmadığını kontrol ediniz. 

 Döngüler

Döngüler bir program içerisinde belirli isleri defalarca yapmamızı sağlayan komut bloklarıdır. Sonsuz döngüler yapılabildiği gibi belirli kriter değerine ulastığında biten döngüler de yapılabilir.

C# Dilinde 4 tip döngü vardır.

1.For döngüleri
2.While Döngüleri
3.Do While Döngüleri
4.Foreach Döngüleri

For Döngüsü

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

  • for döngüsünde parantez içindeki deyimler bos bırakılabilir. Ama noktalı virgüllerin tutulması gereklidir.

  •  birinci ve üçüncü deyimin yazılmaması for döngüsünün while döngüsü olarak kullanılmasını sağlar.

  • İkinci deyim yazılmadan, döngünün ne zaman biteceği belli olmaz. Böyle durumlarda, break komutuyla döngünün dısına çıkılır.

for ve while döngüleri, mantıksal ifadenin en basta sınandığı yapılardır. Mantıksal ifade doğruysa, döngüye girilir doğru değilse döngüden çıkılır.

while döngüsü ile do-while döngüsü arasındaki tek fark kosulun sınandığı yerdir. do-while döngüsünde kosul  sınaması bloğunun en sonunda yapılır. Bu yüzden kosul herne olursa olsun kod bloğunu en az bir kez isletilir ve kosul sınamasına gelir. 

foreach

int[] sdizi = new int[] { 0, 1, 2, 3, 5, 8, 13 };
foreach (int i in sdizi)
{
lblSonuc.Text += i.ToString();
}

private void btnHesapla_Click(object sender, EventArgs e)
{
lblSonuc.Text = "";
int sayac = Convert.ToInt32(txtSayi.Text);
int toplam = 0;
int[] dizi = new int[sayac];
for (int i = 0; i < dizi.Length; i++)
{ dizi[i] = i; }
foreach (int x in dizi)
{
lblSonuc.Text = lblSonuc.Text + Convert.ToString(x) + " ";
toplam = toplam + x;
}
lbltoplam.Text = "Toplam: " + toplam.ToString();
}

Döngüden Çıkıs

-break ifadesi ile döngü yapısından çıkıs için  kullanılır. Eğer iç içe döngü varsa break içteki döngüden bir üstteki döngüye çıkıs için kullanılır

-continue, bulunulan yerden döngünün sonuna gitmek için kullanılır.

-Her iki ifade de , algoritmaların uygulanmasında çok sık kullanılan ifadelerdir.

Break ifadesi ile döngüden çıkıs

private void Form1_Load(object sender, EventArgs e)
{
int x = 0;
for (; ; )
{ /* sonsuz döngü */
if (x == 5)
{
break;
}
MessageBox.Show(x.ToString());
x++;
}
}
Yukarıdaki programda, bir sonsuz döngü vardır ancak bu sonsuz döngü x'in değeri 5 olduğunda döngü kesilir ve çıkılır..

continue: döngüye devam

private void Form1_Load(object sender, EventArgs e)
{
int x;
for( x = 0; x <= 8 ; x++) {
if (x == 4)
{
continue;
}
MessageBox.Show("X = " + x.ToString());
}
}

Yukarıdaki programda, 4 dısında 0'dan 8‘e kadar olan bütün sayılar sıra ile mesaj kutusunda gösterilir.

continue: Örnek 2

private void Form1_Load(object sender, EventArgs e)
{
int x;
for( x = 0; x <= 8 ; x++) {
if (x != 4)
{
MessageBox.Show("X = " + x.ToString());
}
}
}

Yukarıdaki programda, 4 dısında 0'dan 8‘e kadar olan bütün sayılar sıra ile mesaj kutusunda gösterilir.

Örnek: İç İçe For Döngüleri
private void Form1_Load(object sender, EventArgs e)
{
int x;
for( x = 10; x <= 20 ; x++)
{
for (int y = 2; y < x; y++)
{
int bolum = x / y;
if (bolum * y == x)
{
MessageBox.Show(y.ToString() + " " + x.ToString()+" in bölenidir ");
}
}
}
}

 

SIKÇA YAPILAN HATALAR

if’in bulunduğu satır sonuna noktalı virgül konulması

if bloğunun sonunu belirleyen küme parantezinden sonra noktalı virgül konulması

İf bloğunun sonunda küme parantezinin kapatılmaması

Çok ifadeli if bloğunda küme parantezlerinin kullanılmaması

else kelimesinden sonra noktalı virgül konulması

çok ifadeli if/else bloklarında küme parantezlerinin unutulması

iç içe if else yapısındaki else if kelimelerinin bitişik yazılması

Okunma 35471 defa Son Düzenlenme Cumartesi, 31 Mart 2012 21:22