Yazilim Mutfagi Dersleri (C#) Ders 3 – Kosul Ifadeleri (if else, switch case) ve Döngüler(for, do while, while)

Önceki Dersler

 

Ders 2 : Degisken Tipleri, Degisken Tanimlama ve Operatörler.

Ders 1 : C#’a Giris.

 

 

Bu dersimizde C# programlama dilinde kosul ifadeleri, akis kontrol ve döngü yapisi üzerinde duracagiz.

Kosul Ifadeleri ve Akis Kontrolü

Kosul ifadeleri ve akis kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadir. Yazdigimiz uygulamanin hangi kosulda nasil davranacagini belirterek bir akis kontrolü olusturabilmek için kosul ifadelerini iyi bilmemiz gerekir. Tüm programlama dillerinde oldugu gibi en temel kosul ifadesi if else bloklaridir.

.

if…else Blogu

if…else yapisi uygulamalarimizda sik sik kullandigimiz ve kullanmak zorunda oldugumuz bir yapidir. Programlamayi if…else bloklari olmadan düsünmek imkansizdir. Kosul ifadeleri uygulamalarimizda bir karar verme mekanizmasi gibi davranir.

if(bool bir ifade)

   Dogru ise

else

   Yanlis ise


if…else ifadesinin yapisi yukaridaki gibidir. Bir durum if içerisinde karsilastirilir eger kosul dogru ise if altina yazdigimiz blok kod veya tek bir satir kod çalisir, kosul yanlis ise else bloguna tanimladigimiz kod kismi çalisir. Else kismini yazmak zorunda degiliz. Eger yazmaksak ve kosulda yanlis ise if blogu içine giremeyecegi için herhangi bir islem yapilmadan bir sonraki kisma geçerek kodumuz akmaya devam eder.

if (ad == "Sabri")

    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun…");


Yukarida göründügü gibi else yazmadan da karsilastirma yapabiliriz. Eger ad Sabri ise if içindeki kod çalisir degilse bir sonraki asamaya geçerek kodumuz çalismaya devam eder. Yukaridaki kodun else ile kullanimi ise asagidaki gibidir.

if (ad == "Sabri")

    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun…");

else

    Console.WriteLine("Sende Kimsin…");


Eger if ve else bloklari içinde birden fazla satir kod yazmak istiyorsaniz { }ifadelerini kullanmaniz gerekir.

if (ad == "Sabri")

{

    gelenKisi = ad;

    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun…");

}

else

{

    gelenKisi = "Izinsiz";

}


Her zaman {} parantezlerini kullanmanizi tavsiye ederim. Kodunuzun okunurlulugunu arttirdigi gibi hata yapmanizi da engeller.

if ifadesini isterseniz else bloklarinda da kullanabilirsiniz. Böylece karsilastirma kriterinizi genisletmis olursunuz.

if (ad == "Sabri")

{

    gelenKisi = ad;

    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun…");

}

else if (ad == "Metin")

{

    gelenKisi = ad;

    Console.WriteLine("Vaaaay Sen Ha…");

}

else

{

    gelenKisi = "Izinsiz";

    Console.WriteLine("Sende Kimsin…");

}


if… else bloklarini iç içe de kullanabilirsiniz.

if (yas > 25)

{

    if (yas == 26)

    {

        Console.WriteLine("Sinirda Geziyosun…");

    }

    else

    {

        Console.WriteLine("Yas Kemale Ermis Gibi…");

    }              

   

}

else

{

    Console.WriteLine("Daha Gençsin Ya…");

}

 

if içerisine C/C++ dan farkli olarak sadece kosul ifadesi olarak boolean ifadeler yazilabilir. Asagidaki gibi bir ifade yanlistir. Eger j esit midir 4 demek istiyorsaniz iki esittir kullanarak yazmaniz gerekir. Bir önceki dersimizdeki operatörlere bakmanizi tavsiye ederim.

if (j = 4)

{

    // Hata Verir. j=4 ifadesi j degiskenine 4 sayisini atamak demektir.

    // yani boolean bir ifade degildir. j==4 ise j 4’ esitmi demektir.

}

 .

switch…case Ifadesi

Karsilastirma yapacaginiz ifadenin alabilecegi degerler fazla ise çok fazla if else if ifadesi yazmak yerine karsilastirmamizi swtich…case yapisini kullanarak olusturmamiz hem kodumuzun okunurlulugu arttirir hem de daha hizli kod yazmamizi saglar.

switch (degisken)

{

    case sabit deger : kod blogu;

        break;

    case sabit deger : kod blogu;

    break;

    default:

        kod blogu;

}


swich…case kullanimi ard arda yazilacak if..else bloklarini kullanmaktan daha kolaydir. Basit bir örnekle daha iyi anlayabiliriz.

Console.WriteLine("Lütfen Yasinizi Giriniz");

int yas;

yas = Convert.ToInt32(Console.ReadLine());

switch (yas)

{

    case 20: Console.WriteLine("Genç Adam Merhaba");

        break;

    case 25: Console.WriteLine("Merhaba Deli Kanli");

        break;

    case 35: Console.WriteLine("Merhaba Dayi");

        break;

    default:

        Console.WriteLine("Merhaba");

        break;

}


Yukaridaki kodu inceleyecek olursak;  switch() içerisine karsilastirma yapacagimiz degiskeni koyuyoruz. Kontrol edecegimiz tüm degerleri için farkli bir case blogu yaziyoruz. Her case blogunun break le bittigine dikkat edin. C# break kullanmadan swtch case yazmaniza izin vermez. break; çalistigi zaman bulundugu kod blogundan çikis yapilmasini saglar. Case bloklarindan hiç birisi çalismazsa örnegin örnekte yas 20,25 veya 35 den hiç biri degilse default satirina yazdigimiz kod çalisir.

C# da Döngülerin Kullanimi

Bir kod blogunun belirli sartlara bagli veya bagimsiz olarak ardisik olarak çalistirilmasi için döngüler kullanilir.

for  Döngüsü

En temel döngü yapisi for döngüsüdür. C# da for döngüsü kullanimi C/C++ ve Javada ki gibidir. Basit bir for döngüsünün yapisi asagidaki gibidir.

for (baslangiç; kosul; artim / azalim)

{

    //kod blogu

}



Sifirdan dokuza kadar olan sayilari konsol ekranina yazan basit bir for döngüsü yapalim.

for (int i = 0; i < 10; i++)

{

    Console.WriteLine("Döngüde i degeri suan : {0}",i);

}


Yukaridaki for döngüsü sonucu ekran çiktisi asagidaki gibi olur.

Döngüde i degeri suan : 0

Döngüde i degeri suan : 1

Döngüde i degeri suan : 2

Döngüde i degeri suan : 3

Döngüde i degeri suan : 4

Döngüde i degeri suan : 5

Döngüde i degeri suan : 6

Döngüde i degeri suan : 7

Döngüde i degeri suan : 8

Döngüde i degeri suan : 9

Devam etmek için bir tusa basin . . .


Örnekte i degeri ilk olarak 0’dan baslar ve i++ ifadesine göre her döngüde bir deger artar. i<10 ifadesi i degerinin 10’dan küçük olup olmadigini kontrol eder. Eger 10’dan küçük ise döngü içine yazilan Console.WriteLine("Döngüde i degeri suan : {0}",i); kismi çalisir. i degeri 10 oldugu zaman i<10 kosulu false deger üreterek döngümüzün sonlanmasina sebep olur.

for Döngüsü Hakkinda Önemli Noktalar

for döngüsünde baslangiç, kosul ve artim/azalim olarak isimlendirdigimiz kisimlarin üçü de opsiyoneldir.  Istersek kullanmaya biliriz. Baslangiç degerini for döngüsünden önce setleyerek döngü içinde belirli kontrolleri yapabilir, istedigimiz zamanda break komutu ile döngüyü sonlandirabiliriz. Bu kontrolleri döngü içinde de yapmazsak sonsuz bir döngümüz olur. For döngüsü asagidaki gibi kullanilabilir.

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 satir döngü içinde çalistirilir. Eger döngü içinde birden fazla satir kod çalistirmak istiyorsan { } parantezlerini kullanmak zorundayiz. Döngü içinde tek bir satir kod bile çalistiracak olsaniz süslü parantezleri kullanmanizi tavsiye ederim.

Döngümüzü belli bir kosul altinda sonlandirmak istiyorsak break komutunu kullaniriz.

for (int i = 0; i < 10; i++)

{

    if (i > 5)

    {

        break;

    }

    Console.WriteLine("Döngüde i degeri suan : {0}", i);

}


Yukaridaki kodda i degeri 5 den büyük oldugunda break komutu çalisarak döngünün sonlanmasina sebep olur. Ekran çiktisi asagidaki gibi olur.

Döngüde i degeri suan : 0

Döngüde i degeri suan : 1

Döngüde i degeri suan : 2

Döngüde i degeri suan : 3

Döngüde i degeri suan : 4

Döngüde i degeri suan : 5

Devam etmek için bir tusa basin . . .


Belli bir kosul altinda döngü içine yazdigimiz kodlarin çalismayarak bir sonraki döngü adimina geçmek istiyorsak continue komutunu kullaniriz.

for (int i = 0; i < 10; i++)

{

    if (i == 5)

    {

        continue;

    }

    Console.WriteLine("Döngüde i degeri suan : {0}", i);

}


i degeri 5 oldugu zaman continue komutu çalisarak döngüyü bir sonraki adima tasir, bunun sonucu asagidaki ekran çiktisi olusur.

Döngüde i degeri suan : 0

Döngüde i degeri suan : 1

Döngüde i degeri suan : 2

Döngüde i degeri suan : 3

Döngüde i degeri suan : 4

Döngüde i degeri suan : 6

Döngüde i degeri suan : 7

Döngüde i degeri suan : 8

Döngüde i degeri suan : 9

Devam etmek için bir tusa basin . . .


do… while Döngüsü

do…while döngüsünün temel yapisi asagidaki gibidir.

do

{

    // çalisacak kod

}

while(kosul);


Döngü içine yazilan kod ilk olarak çalisir daha sonra while kismindaki kosul kontrol edilir, burada bulunan kosul true deger döndürdügü sürece döngü tekrar tekrar çalisir.

int i = 0;

do

{

    Console.WriteLine("do while döngüsü içinde i degeri suan: {0}", i);

    i++;

}

while (i<10);


Ekran görüntüsü;

do while döngüsü içinde i degeri suan: 0

do while döngüsü içinde i degeri suan: 1

do while döngüsü içinde i degeri suan: 2

do while döngüsü içinde i degeri suan: 3

do while döngüsü içinde i degeri suan: 4

do while döngüsü içinde i degeri suan: 5

do while döngüsü içinde i degeri suan: 6

do while döngüsü içinde i degeri suan: 7

do while döngüsü içinde i degeri suan: 8

do while döngüsü içinde i degeri suan: 9

Devam etmek için bir tusa basin . . .

 

·         do…while döngüsü içine yazilan kod blogu her zaman ilk seferde çalisir.

·         while ifadesinden sonra noktali virgül kullanilir.

.

while Döngüsü

Hemen hemen do…while döngüsü ile ayni özellikleri tasir. Sadece ilk çalisma mantiklari farklidir.

do…while döngüsü ilk olarak kod bloguna girer daha sonra kosul kontrol edilir, böylece kosul dogru olsada olmasada kod blogu bir kez çalisir.

while döngüsü ise kod bloguna girmeden önce kosul durumunu kontrol eder, eger kosul dogru degilse kod blogu asla çalismaz. Bu küçük ama çok önemli bir farktir.

while döngüsünün yapisi

while (kosul)

{

    //kod blogu

}

 

Kosul ifadesi dogru ise while içinde yazilan kod blogu çalisir. kosul yanlis oldugu anda döngü sona erer.

int sayac = 0;

while (sayac<10)

{

    Console.WriteLine("Sayac Degeri: {0}",sayac);

    sayac++;

}

 

Döngüleri kullanarak basit bir örnek yapalim. Örnegin Ekrandan kullanici adini alalim. Kullanici adi bizim istedigimiz deger olana kadar kullanici adini istemeye devam edelim. Bizim istedigimiz kullanici adi yazildigi zaman bir mesaj vererek döngüden çikalim. Bu örnegimizi do…while veya while döngüsü ile yapabiliriz. Biz örnegimize while döngüsü ile nasil yapilacagini anlatacagiz.

string kullaniciAdi = "";

while (kullaniciAdi != "Sabri")

{

    Console.WriteLine("Lütfen Kullanici Adini Yaziniz.");

    kullaniciAdi = Console.ReadLine();

}

Console.WriteLine("Hosgeldin Sabri.");


while içindeki kosul sarti kullaniciAdi Sabri olmadigi sürece dogru degeri döndürür. Bu yüzdende Sabri ismi girilene kadar döngü sonlanmaz. Ayni islemi asagidaki gibide yapabiliriz.

string kullaniciAdi = "";

while (true)

{

    Console.WriteLine("Lütfen Kullanici Adini Yaziniz.");

    kullaniciAdi = Console.ReadLine();

    if (kullaniciAdi == "Sabri")

    {

        Console.WriteLine("Hosgeldin Sabri.");

        break;

    }

}

 

Yukaridaki kod örneginde while içine direk olarak true degeri yazdik, böylece döngünün asla sonlanmamasini sagladik fakat döngü içinde if kosulu ile kullaniciAdi kontrol ediliyor ve eger Sabri olarak girilmisse break komutu ile döngüyü sonlandiriyoruz.

19 thoughts on “Yazilim Mutfagi Dersleri (C#) Ders 3 – Kosul Ifadeleri (if else, switch case) ve Döngüler(for, do while, while)

  1. çok güzel bi anlatiminiz var gerçekten. biraz daha zor örnekler üzerinde dursaniz hiç fena olmaz 🙂

  2. Emeginiz için çok tesekkürler. Su an buraya yazmis olduklarinizla final sinavlarima çalisiyorum ve ben dersine girdigim hocanin birebir anlattigindan daha iyi algiliyorum buradaki anlatimi. Tabi bu derse giren hocayi hiç sevmiyor olmamdan da kaynaklanabilir ama Mehmet hocam tesekkürler. Gerçekten çok tesekkürler… 

  3. çok güzel olmus ama örnekler vererek anlatirsaniz daha iyi olur diye düsünüyorum;)

     

     

  4. Mehmet Hocam Yuregine saglik diyorum tekrar, Cok guzel ve emek dolu anlatimlar bunlar. Tesekkurler.

  5. Çok güzel bir bilgi. yarin C sinavim var çok iyi geldi ama en sonunda birde programin tam kodu olsaydi da çalistirip deneyebilseydim örnek olarak çok güzel olurdu. diger bilgilerde basit bir örnekle sonlandirirsaniz sevinirim. çok güzel bir site.. iyi çalismalar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir