Koşul İfadeleri (if else, switch case) ve Döngüler(for, do while, while)


Koşul İfadeleri ve Akış Kontrolü
Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini iyi bilmemiz gerekir. Tüm programlama dillerinde olduğu gibi en temel koşul ifadesi if else bloklarıdır.
if…else Bloğu
if…else yapısı uygulamalarımızda sık sık kullandığımız ve kullanmak zorunda olduğumuz bir yapıdır. Programlamayı if…else blokları olmadan düşünmek imkansızdır. Koşul ifadeleri uygulamalarımızda bir karar verme mekanizması gibi davranır.
if(bool bir ifade)
   Doğru ise
else
   Yanlış ise

if…else ifadesinin yapısı yukarıdaki gibidir. Bir durum if içerisinde karşılaştırılır eğer koşul doğru ise if altına yazdığımız blok kod veya tek bir satır kod çalışır, koşul yanlış ise else bloğuna tanımladığımız kod kısmı çalışır. Else kısmını yazmak zorunda değiliz. Eğer yazmaksak ve koşulda yanlış ise if bloğu içine giremeyeceği için herhangi bir işlem yapılmadan bir sonraki kısma geçerek kodumuz akmaya devam eder.
if (ad == "Sabri")
    Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Yukarıda göründüğü gibi else yazmadan da karşılaştırma yapabiliriz. Eğer ad Sabri ise if içindeki kod çalışır değilse bir sonraki aşamaya geçerek kodumuz çalışmaya devam eder. Yukarıdaki kodun else ile kullanımı ise aşağıdaki gibidir.
if (ad == "Sabri")
    Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");
else
    Console.WriteLine("Sende Kimsin...");

Eğer if ve else blokları içinde birden fazla satır kod yazmak istiyorsanız { }ifadelerini kullanmanız gerekir.
if (ad == "Sabri")
{
    gelenKisi = ad;
    Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");
}
else
{
    gelenKisi = "İzinsiz";
}

Her zaman {} parantezlerini kullanmanızı tavsiye ederim. Kodunuzun okunurluluğunu arttırdığı gibi hata yapmanızı da engeller.
if ifadesini isterseniz else bloklarında da kullanabilirsiniz. Böylece karşılaştırma kriterinizi genişletmiş olursunuz.
if (ad == "Sabri")
{
    gelenKisi = ad;
    Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");
}
else if (ad == "Metin")
{
    gelenKisi = ad;
    Console.WriteLine("Vaaaay Sen Ha...");
}
else
{
    gelenKisi = "İzinsiz";
    Console.WriteLine("Sende Kimsin...");
}

if… else bloklarını iç içe de kullanabilirsiniz.
if (yas > 25)
{
    if (yas == 26)
    {
        Console.WriteLine("Sınırda Geziyosun...");
    }
    else
    {
        Console.WriteLine("Yaş Kemale Ermiş Gibi...");
    }              
   
}
else
{
    Console.WriteLine("Daha Gençsin Ya...");
}

if içerisine C/C++ dan farklı olarak sadece koşul ifadesi olarak boolean ifadeler yazılabilir. Aşağıdaki gibi bir ifade yanlıştır. Eğer j eşit midir 4 demek istiyorsanız iki eşittir kullanarak yazmanız gerekir. Bir önceki dersimizdeki operatörlere bakmanızı tavsiye ederim.
if (j = 4)
{
    // Hata Verir. j=4 ifadesi j değişkenine 4 sayısını atamak demektir.
    // yani boolean bir ifade değildir. j==4 ise j 4’ eşitmi demektir.
}

switch…case İfadesi
Karşılaştırma yapacağınız ifadenin alabileceği değerler fazla ise çok fazla if else if ifadesi yazmak yerine karşılaştırmamızı swtich…case yapısını kullanarak oluşturmamız hem kodumuzun okunurluluğu arttırır hem de daha hızlı kod yazmamızı sağlar.
switch (değişken)
{
    case sabit değer : kod bloğu;
        break;
    case sabit değer : kod bloğu;
    break;
    default:
        kod bloğu;
}

swich…case kullanımı ard arda yazılacak if..else bloklarını kullanmaktan daha kolaydır. Basit bir örnekle daha iyi anlayabiliriz.
Console.WriteLine("Lütfen Yaşınızı Giriniz");
int yas;
yas = Convert.ToInt32(Console.ReadLine());
switch (yas)
{
    case 20: Console.WriteLine("Genç Adam Merhaba");
        break;
    case 25: Console.WriteLine("Merhaba Deli Kanlı");
        break;
    case 35: Console.WriteLine("Merhaba Dayı");
        break;
    default:
        Console.WriteLine("Merhaba");
        break;
}

Yukarıdaki kodu inceleyecek olursak;  switch() içerisine karşılaştırma yapacağımız değişkeni koyuyoruz. Kontrol edeceğimiz tüm değerleri için farklı bir case bloğu yazıyoruz. Her case bloğunun break le bittiğine dikkat edin. C# break kullanmadan swtch case yazmanıza izin vermez. break; çalıştığı zaman bulunduğu kod bloğundan çıkış yapılmasını sağlar. Case bloklarından hiç birisi çalışmazsa örneğin örnekte yaş 20,25 veya 35 den hiç biri değilse default satırına yazdığımız kod çalışır.
C# da Döngülerin Kullanımı
Bir kod bloğunun belirli şartlara bağlı veya bağımsız olarak ardışık olarak çalıştırılması için döngüler kullanılır.
for  Döngüsü
En temel döngü yapısı for döngüsüdür. C# da for döngüsü kullanımı C/C++ ve Javada ki gibidir. Basit bir for döngüsünün yapısı aşağıdaki gibidir.
for (başlangıç; koşul; artım / azalım)
{
    //kod bloğu
}


Sıfırdan dokuza kadar olan sayıları konsol ekranına yazan basit bir for döngüsü yapalım.
for (int i = 0; i < 10; i++)
{
    Console.WriteLine("Döngüde i değeri şuan : {0}",i);
}

Yukarıdaki for döngüsü sonucu ekran çıktısı aşağıdaki gibi olur.
Döngüde i değeri şuan : 0
Döngüde i değeri şuan : 1
Döngüde i değeri şuan : 2
Döngüde i değeri şuan : 3
Döngüde i değeri şuan : 4
Döngüde i değeri şuan : 5
Döngüde i değeri şuan : 6
Döngüde i değeri şuan : 7
Döngüde i değeri şuan : 8
Döngüde i değeri şuan : 9
Devam etmek için bir tuşa basın . . .

Örnekte i değeri ilk olarak 0’dan başlar ve i++ ifadesine göre her döngüde bir değer artar. i<10 ifadesi i değerinin 10’dan küçük olup olmadığını kontrol eder. Eğer 10’dan küçük ise döngü içine yazılan Console.WriteLine("Döngüde i değeri şuan : {0}",i); kısmı çalışır. i değeri 10 olduğu zaman i<10 koşulu false değer üreterek döngümüzün sonlanmasına sebep olur.
for Döngüsü Hakkında Önemli Noktalar
for döngüsünde başlangıç, koşul ve artım/azalım olarak isimlendirdiğimiz kısımların üçü de opsiyoneldir.  İstersek kullanmaya biliriz. Başlangıç değerini for döngüsünden önce setleyerek döngü içinde belirli kontrolleri yapabilir, istediğimiz zamanda break komutu ile döngüyü sonlandırabiliriz. Bu kontrolleri döngü içinde de yapmazsak sonsuz bir döngümüz olur. For döngüsü aşağıdaki gibi kullanılabilir.
for (; ; )
for (; i < 10; i++)
for (int i = 3; ; i--)
for (; i < 5; )

for döngüsünü süslü parantez {} ler ile kullanmazsak for ifadesinden sonraki ilk satır döngü içinde çalıştırılır. Eğer döngü içinde birden fazla satır kod çalıştırmak istiyorsan { } parantezlerini kullanmak zorundayız. Döngü içinde tek bir satır kod bile çalıştıracak olsanız süslü parantezleri kullanmanızı tavsiye ederim.
Döngümüzü belli bir koşul altında sonlandırmak istiyorsak break komutunu kullanırız.
for (int i = 0; i < 10; i++)
{
    if (i > 5)
    {
        break;
    }
    Console.WriteLine("Döngüde i değeri şuan : {0}", i);
}

Yukarıdaki kodda i değeri 5 den büyük olduğunda break komutu çalışarak döngünün sonlanmasına sebep olur. Ekran çıktısı aşağıdaki gibi olur.
Döngüde i değeri şuan : 0
Döngüde i değeri şuan : 1
Döngüde i değeri şuan : 2
Döngüde i değeri şuan : 3
Döngüde i değeri şuan : 4
Döngüde i değeri şuan : 5
Devam etmek için bir tuşa basın . . .

Belli bir koşul altında döngü içine yazdığımız kodların çalışmayarak bir sonraki döngü adımına geçmek istiyorsak continue komutunu kullanırız.
for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        continue;
    }
    Console.WriteLine("Döngüde i değeri şuan : {0}", i);
}

i değeri 5 olduğu zaman continue komutu çalışarak döngüyü bir sonraki adıma taşır, bunun sonucu aşağıdaki ekran çıktısı oluşur.
Döngüde i değeri şuan : 0
Döngüde i değeri şuan : 1
Döngüde i değeri şuan : 2
Döngüde i değeri şuan : 3
Döngüde i değeri şuan : 4
Döngüde i değeri şuan : 6
Döngüde i değeri şuan : 7
Döngüde i değeri şuan : 8
Döngüde i değeri şuan : 9
Devam etmek için bir tuşa basın . . .

do… while Döngüsü
do…while döngüsünün temel yapısı aşağıdaki gibidir.
do
{
    // çalışacak kod
}
while(koşul);

Döngü içine yazılan kod ilk olarak çalışır daha sonra while kısmındaki koşul kontrol edilir, burada bulunan koşul true değer döndürdüğü sürece döngü tekrar tekrar çalışır.
int i = 0;
do
{
    Console.WriteLine("do while döngüsü içinde i değeri şuan: {0}", i);
    i++;
}
while (i<10);

Ekran görüntüsü;
do while döngüsü içinde i değeri şuan: 0
do while döngüsü içinde i değeri şuan: 1
do while döngüsü içinde i değeri şuan: 2
do while döngüsü içinde i değeri şuan: 3
do while döngüsü içinde i değeri şuan: 4
do while döngüsü içinde i değeri şuan: 5
do while döngüsü içinde i değeri şuan: 6
do while döngüsü içinde i değeri şuan: 7
do while döngüsü içinde i değeri şuan: 8
do while döngüsü içinde i değeri şuan: 9
Devam etmek için bir tuşa basın . . .

·         do…while döngüsü içine yazılan kod bloğu her zaman ilk seferde çalışır.
·         while ifadesinden sonra noktalı virgül kullanılır.
while Döngüsü
Hemen hemen do…while döngüsü ile aynı özellikleri taşır. Sadece ilk çalışma mantıkları farklıdır.
do…while döngüsü ilk olarak kod bloğuna girer daha sonra koşul kontrol edilir, böylece koşul doğru olsada olmasada kod bloğu bir kez çalışır.
while döngüsü ise kod bloğuna girmeden önce koşul durumunu kontrol eder, eğer koşul doğru değilse kod bloğu asla çalışmaz. Bu küçük ama çok önemli bir farktır.
while döngüsünün yapısı
while (koşul)
{
    //kod bloğu
}

Koşul ifadesi doğru ise while içinde yazılan kod bloğu çalışır. koşul yanlış olduğu anda döngü sona erer.
int sayac = 0;
while (sayac<10)
{
    Console.WriteLine("Sayac Değeri: {0}",sayac);
    sayac++;
}

Döngüleri kullanarak basit bir örnek yapalım. Örneğin Ekrandan kullanıcı adını alalım. Kullanıcı adı bizim istediğimiz değer olana kadar kullanıcı adını istemeye devam edelim. Bizim istediğimiz kullanıcı adı yazıldığı zaman bir mesaj vererek döngüden çıkalım. Bu örneğimizi do…while veya while döngüsü ile yapabiliriz. Biz örneğimize while döngüsü ile nasıl yapılacağını anlatacağız.
string kullaniciAdi = "";
while (kullaniciAdi != "Sabri")
{
    Console.WriteLine("Lütfen Kullanici Adını Yazınız.");
    kullaniciAdi = Console.ReadLine();
}
Console.WriteLine("Hoşgeldin Sabri.");

while içindeki koşul şartı kullaniciAdi Sabri olmadığı sürece doğru değeri döndürür. Bu yüzdende Sabri ismi girilene kadar döngü sonlanmaz. Aynı işlemi aşağıdaki gibide yapabiliriz.
string kullaniciAdi = "";
while (true)
{
    Console.WriteLine("Lütfen Kullanici Adını Yazınız.");
    kullaniciAdi = Console.ReadLine();
    if (kullaniciAdi == "Sabri")
    {
        Console.WriteLine("Hoşgeldin Sabri.");
        break;
    }
}

Yukarıdaki kod örneğinde while içine direk olarak true değeri yazdık, böylece döngünün asla sonlanmamasını sağladık fakat döngü içinde if koşulu ile kullaniciAdi kontrol ediliyor ve eğer Sabri olarak girilmişse break komutu ile döngüyü sonlandırıyoruz

0 yorum to “Koşul İfadeleri (if else, switch case) ve Döngüler(for, do while, while)”

Yorum Gönder