Zıplanacak içerik
  • Üye Ol

C# Kosullu dallanma ifadeleri ve Döngüler


LaRsiE_

Önerilen İletiler

Bu bölümümüzde if ...else, switch... case koşullu dallanma ifadelerini, for, while, do.. while döngü ifadelerini inceleyeceğiz.

 

İf ... else ifadeleri

 

if ... else ifadeleri koşullu dallanma ifadeleridir.

 

Genel biçimi:

 

İf (koşul deyimi)

ifade

[else

İfade ]

 

 

 

Koşul deyimi if kısmında test edilir. Sonuc doğru ise if bloğu icra edilir. if koşullu dallanma ifadesi opsiyonel olarak bir else bloğuda bulundurabilir. Eğer sonuç yanlış ise else bloğu icra edilir. Else ifadesi kullanılmamış ise if ifadesinden sonraki satırdan programın akışı devam eder.

if ifadesi boolean bir koşul deyimi alır. Yani if kısmında koşul test edilirken true veya false olarak test edilir.

 

int x = 30;

int y = 20;

 

if( x > y )

Console.WriteLine("ifade dogru");

else

Console.WriteLine("ifade yanlis");

 

 

 

Şöyle bir kullanımda derleyici hata verecektir.

 

if( x )

Console.WriteLine("ifade dogru");

else

Console.WriteLine("ifade yanlis");

 

 

 

Cannot implicitly convert type 'int' to 'bool'

 

switch ifadeleri

 

switch koşullu dallanma ifadeleri iç içe if ifadelerine bir alternatiftir.

 

Genel biçimi:

 

switch(deyim)

{

case sabit-deyim:

ifadeler

dallanma-ifadesi

[default:

ifadeler

}

 

Sizin de gördüğünüz gibi switch parantezleri arasındaki deyimin alabileceği değerler case kısmında belirtilmektedir. Bu kosula göre ilgili case deyimi icra edilmektedir. Burada dikkat ederseniz bir dallanma ifadesi vardır. Bu ifade genel olarak break ifadesidir ve kullanılması zorunludur. Daha doğrusu c# da kullanımı zorunlu hale getirilmiştir. Amaç gerekli case deyimi icra edildikten sonra diğer case deyimlerine dallanmasın yani daha güvenli bir kullanımdır.

 

int x = 20;

switch(x)

{

case 0:

Console.WriteLine("0");

case 10:

Console.WriteLine("10");

case 20:

Console.WriteLine("20");

}

 

Yukarıdaki kullanıma baktığımızda herhangi bir hata göze çarpmamaktadır. Ancak c# da bu kullanım derleyicinin hata vermesi ile sonuclanacaktır. Çünkü case deyimlerinde muhakkak bir break ifadesi olmalıdır. Yani akış diğer case ifadelerine akmamalıdır.

 

Control cannot fall through from one case label ('case 0:') to another

 

Control cannot fall through from one case label ('case 10:') to another

 

Control cannot fall through from one case label ('case 20:') to another

 

switch(x)

{

case 0:

Console.WriteLine("0");

break;

case 10:

Console.WriteLine("10");

break;

case 20:

Console.WriteLine("20");

}

 

 

 

Yukarıdaki kullanımda break ifadesi case deyimlerinde kullanılmıştır. Bir tek son case deyiminde kullanılmamıştır. Ancak yine de derleyici hata verecektir. Bu son satırda derleyicinin bir hata vermesine gerek yoktur aslında. Çünkü son case deyimidir bundan sonra başka bir case deyimine akmayacaktır ama yinede derleyici hata vermektedir.

 

Control cannot fall through from one case label ('case 20:') to another

 

Aslında swicth deyiminin ara koduna (İL) baktığımızda her bir case deyiminin aslında bir label olduğunu görmekteyiz. Yani biz programlarımızda çeşitili label lar tanımlayabiliriz, ve bu label lara goto ifadesi ile programın akışını yönlendirebiliriz. Sizlerin bir switch ifadesi gördüğünüzde aklınıza gelecek olan şey case deyimlerinin bir label gibi davrandığıdır.

Yoruma sekme
Diğer sitelerde paylaş

while döngüsü

while döngüsü, while parantezindeki koşul deyimi doğru olduğu sürece devam eden bir döngüdür.

Genel biçimi:

 

while(koşul-deyimi)

ifadeler

 

koşul deyimi boolean bir değer üretir ve bu değerin true veya false olmasına göre döngü devam eder.

 

int x = 0;

 

while( x < 10 )

{

Console.WriteLine("x={0}",x);

x++;

}

 

Yukarıdaki koda baktığımızda while döngüsünün koşulu true yani doğru olduğu sürece döngü devam edecektir.

while döngüsü koşul deyimini döngü içine girmeden kontrol eder. Eger koşul sağlanmaz ise döngü içine girilmez.

 

do ... while döngüsü

 

while döngüsü koşul deyiminin doğru olup olmadığını döngünün başında kontrol eder, eğer koşul doğru ise döngüye girer, değilse döngüye girmez.

Eğer döngünün en az bir kez çalıştırılması isteniyorsa o zaman do .. while döngüsü kullanılmalıdır.

 

Genel biçimi:

 

do

ifadeler

while (kosul-deyimi)

 

int x = 11;

 

do

{

Console.WriteLine("x={0}",x);

x++;

}while( x < 10 );

 

 

Yukarıdaki kodumuzda x değişkeninin değeri 11 dir. do..while döngüsünün koşul deyimi x' in 10 dan küçük olduğu sürece döngüye devam edeceğini belirtilmesine karşın, koşul deyiminin döngünün sonunda test edilmesinden dolayı döngü bir kez icra edilecektir. Ve ekrana “x = 11” yazacaktır.

 

for döngüsü

 

Şu ana kadar gördüğümüz while ve do..while döngülerine baktığımızda; bir değişkene ilk değer verilmekte veya bir başlangıç değeri verilmekte sonra bu değişkenin değeri koşul deyimi olarak kullanılmakta ve buradan doğru veya yanlış olarak bir sonuç çıkarılmaktadır. Buna göre döngü devam etmektedır. Son olarakta döngünün ne kadar devam edeceğini belirlemek için değişkenimizin değeri artırılmaktadır veya azaltılmaktadır.

for döngüsü bunların hepsini kendi içinde barındırmaktadır.

 

Genel biçimi:

 

for ( [ifade1] ; [ifade2] ; [ifade3] )

 

ifade1 for döngüsüne girildiğinde ilk değerin verildiği kısımdır. Ancak bu bir zorunluluk değildir. Bu kısım bir kez icra edilir. Ifade2 koşul deyiminin tanımlandığı kısımdır. Ifade3 genelde döngü değişkeninin artırıldığı veya azaltıldığı kısımdır.

 

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

{

Console.WriteLine("x:{0}",x);

}

 

Yukarıdaki for döngüsünde x değişkenine 0 ilk değeri verilecektir. Koşul deyimi döngü içine girmeden önce kontrol edilecektır. Koşul doğru ise döngüye girilecektır. Daha sonra x değişkeninin değeri 1 arttırılacaktır.

Yeri gelmişken değişkenlerin yaşam süreleri hakkında bir şey belirtmek istiyorum. Dikkat ettiyseniz for döngüsünün içinde bir değişken tanımlaması yapıldı. Bu değişkenin yaşam alanı for döngüsüdür. Ancak bu döngü içinde kullanılabilir. Döngü sona erdiğinde değişkenin yaşamıda sonlanacaktır.

 

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

{

Console.WriteLine("x:{0}",x);

}

Console.WriteLine("x:{0}",x);

 

Yukarıdaki program parçasını çalıştırmaya kalktığımızda aşağıdaki hatayı alırız.

The name 'x' does not exist in the class or namespace 'ConsoleApplication1.Class1'

 

foreach döngüsü

 

foreach deyimi C# ile birlikte gelen bir yeniliktir. Genel olarak diziler veya kolleksiyonlar ile birlikte kullanılmaktadır. Ancak bu konuyu daha sonra inceleyeceğimizden şu anda sadece ön bilgi vermek amacıyla değinilmiştir.

 

continue ve break ifadeleri

 

Bazen kullandığımız döngülerde, döngü içindeyken döngünün başına gelmek ve geri kalan kısımın icra edilmesini istemeyebiliriz veya döngüden çıkmak isteyebiliriz.

İşte bu gibi durumda continie ve break ifadelerinden yararlanırız.

continue ifadesi ile döngünün geri kalan kısmı yapılmadan döngünün başına atlanması sağlanırken, break ifadesi ile de döngüden bilinçli olarak çıkılması sağlanır.

 

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

{

Console.WriteLine("x:{0}",x);

break;

}

 

Yukarıdakı kodumuzda döngü bir kez çalışacak sonra break ifadesini gördüğü yerde döngüyü kesecek ve döngüden çıkacaktır.

 

 

Not: Kendi Ders Notlarımdır Lütfen Emeğe Saygı

Yoruma sekme
Diğer sitelerde paylaş

Katılın Görüşlerinizi Paylaşın

Şu anda misafir olarak gönderiyorsunuz. Eğer ÜYE iseniz, ileti gönderebilmek için HEMEN GİRİŞ YAPIN.
Eğer üye değilseniz hemen KAYIT OLUN.
Not: İletiniz gönderilmeden önce bir Moderatör kontrolünden geçirilecektir.

Misafir
Maalesef göndermek istediğiniz içerik izin vermediğimiz terimler içeriyor. Aşağıda belirginleştirdiğimiz terimleri lütfen tekrar düzenleyerek gönderiniz.
Bu başlığa cevap yaz

×   Zengin metin olarak yapıştırıldı..   Onun yerine sade metin olarak yapıştır

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Önceki içeriğiniz geri getirildi..   Editörü temizle

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Yeni Oluştur...

Önemli Bilgiler

Bu siteyi kullanmaya başladığınız anda kuralları kabul ediyorsunuz Kullanım Koşulu.