Φ LaRsiE_ Gönderi tarihi: 9 Kasım , 2008 Paylaş Gönderi tarihi: 9 Kasım , 2008 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. Alıntı Yoruma sekme Diğer sitelerde paylaş Daha Fazla Paylaşım Siteleri
Φ LaRsiE_ Gönderi tarihi: 9 Kasım , 2008 Yazar Paylaş Gönderi tarihi: 9 Kasım , 2008 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ı Alıntı Yoruma sekme Diğer sitelerde paylaş Daha Fazla Paylaşım Siteleri
Önerilen İletiler
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.