Mantıksal Operatörler ve Denetim Yapıları
Boolean Boolean, doğru ya da yanlış sonuçlarını alabilen bir değişken türüdür. Durumları belirlemek için kullanılır. Özellikle, duruma göre kod çalıştırma ve döngülerde kullanılır. mantıksal ifadeler doğru veya yanlış değerini alan mantıksal "formüllerdir". “bool” anahtar kelimesi ile tanımlanır. bool bVal = true;
Örnek
Boolean İşleçler Boolean ifadeler kurmak için kullanılır. Diğer isimleri de mantıksal işleçlerdir. Ve && Veya || Değil ! Eşitlik == Eşitsizlik != Karşılaştırma <, >, <=, >=
Ve (&&) Bütün değerlerin, “true” olmasını gerektirir. true && true = true false && true = false true && false = false false && false = false
Veya (||) En az bir değerin, “true” olmasını gerektirir. true || true = true false || true = true true || false = true false || false = false
Değil (!) Değeri tersine çevirir. !true = false ! false = true
Eşitlik (==) Her iki tarafın değeri, birbirine eşitse doğru değerini döndürür. 1 == 2 1 == 0 42 == 42 degisken1 == digeri
Eşitsizlik Her iki tarafın değeri, birbirinden farklıysa doğru değerini döndürür. 1 != 2 1 != 0 42 != 42 a != degisken
Karşılaştırma (>,<,>=,<=) Eşitsizliğin tutması durumunda doğru döndürür. 1 < 2 0 > 1 42 <= 42 yas >= 18
İşleç Önceliği Parantezler Değil (!) En Yüksek Parantezler Değil (!) Karşılaştırma (<, >, <=, >=) Eşitlik (==) Eşitsizlik (!=) Ve (&&) Veya (||) En Düşük
Örnek
Yaygın Hatalar Mantıksal işlemlerde en önemli hatalardan biri, öncelik sıralarına dikkat edilmeden mantıksal ifadelerin yazılmasıdır. Diğer bir sıkıntı, = = (eşittir – eşittir ) yazılması yerine tek bir eşittir yazılmadır.
Denetim Yapıları
if – else Seçme yapısı, mantıksal ifadelerin sonucuna göre alternatif komutların çalışmasını sağlar. Mantıksal ifadeler doğru veya yanlış döndürür. İfade doğru değeri döndürdüğünde, if bölümü içindeki komutlar çalışırken, yanlışken else bölümü çalışır.
if – else Basit if yapısına, tekli seçme yapısı adı verilir, çünkü, doğru değer geldiğinde seçilen komutu çalıştırır ya da göz önüne almaz. if ve else'den oluşan yapıya, çiftli seçme yapısı adı verilir, çünkü, iki farklı duruma göre iki değişik komut grubunu çalıştırır. İç içe geçmiş if/else yapısı, birden fazla durumu kontrol eder.
Tekli Seçim Yapısı Tekli seçme yapısının formu şöyledir: if ( ifade ) { komutlar; } veya if ( ifade ) komut;
Örnek
if – else if – else if genellikle şöyle yazılır: if – else yapısı da söyle yazılabilir: noktalı virgül gelmeyecek!!!! if ( ifade ) deyim; noktalı virgül gelmeyecek!!!! if ( ifade ) deyim1; else deyim2; noktalı virgül gelmeyecek!!!!
if – else if – else if yapısının genel formu şöyledir: if ( mantıksal ifade doğruysa ) deyim ; else if (mantıksal ifade doğruysa) else
Çoklu if – else if – else Birden fazla else – if yapısı, tek satırlık komutlar olduğunda şöyle kurulabilir: if ( bu mantıksal ifade doğruysa ) deyim ; else if (bu mantıksal ifade doğruysa ) else
Bloklu if – else if – else if ( bu mantıksal ifade doğruysa ) { bu bloktaki komutları çalıştır; } else if (bu mantıksal ifade doğruysa ) else
Örnek: Sayı Karşılaştırma
Sınıf Çalışması Meteoroloji Müdürlüğü, hava durumu raporlarının daha anlaşılabilir olması için, nem oranı değerlerinin insanların anlayabileceği hale getirmek için bir program istemektedir. Kullanıcın girdiği 0 ve 100 arasındaki tamsayı nem oranı değerleri için ekrana şunları yazacaktır. %20 veya aşağısı "Çok Kuru" %21 - %40: "Kuru" %41 - %60: "Biraz Kuru" %61 - %80: "Biraz Nemli" %81 veya fazla: "Nemli“ Kullanıcıya nem derecesi soran ve if/else yapısı içeren programı yazınız.
Birleşik if deyimleri C# derleyicisi else deyimini en yakın if deyimiyle eşler. Bu nedenle, program mantığını doğru kurmak ve {} parantezlerini kullanmak daha doğru olur. if (nem < 20) if (sicaklik <= 0) Console.WriteLine("Soğuk ve kuru bir gün.") if (ruzgar < 10) Console.WriteLine("Ne güzel, rüzgar yok"); else Console.WriteLine("nem düşük ve 0 dereceden yüksek"); else if (nem < 60) Console.WriteLine("soguk ve orta nemli."); Console.WriteLine("0'dan büyük, orta nem oranı."); ?
Birleşik if Deyimleri if (nem < 20) { if (sicaklik <= 0) { Console.WriteLine("Soğuk ve kuru bir gün.") if (ruzgar < 10) { Console.WriteLine("Ne güzel ki rüzgar yok"); } else { Console.WriteLine("nem düşük ve 0 dan yüksek"); else if (nem < 60) { Console.WriteLine("soguk ve orta nemli."); else Console.WriteLine("0'dan büyük, orta nem oranı.");
Çok durumlu seçme yapısı switch – case yapısı Çok durumlu seçme yapısı
switch - case Bir algoritmada bir dizi işlem, bir değişkenin farklı değerlerine göre yapılacaksa, çoklu seçme yapısı kullanışlıdır. Algoritmada, değişkenin alabileceği her farklı değer için farklı komut dizileri çalıştırılabilir. C# dili, switch-case yapısı adı altında böyle bir yapı sunar.
Yazım switch (sınama değeri ) { case sabit_değer1 : işlemler ; break; default : }
switch - case switch kelimesi, yapının başlangıcını belirler. switch bölümünden sonra bir değişken yazılmalıdır. Değişkenin tipi karakter veya numerik 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 { } işaretlerine gerek yoktur.
Sınıf Alıştırması Ekrandan, öğrencinin aldığı harf notunu (tek harf) okuyan bir program yazınız. Eğer A: "Çok güzel" B: "Güzel" C: "Fena Değil" D: "İyi değil" F: "Çok kötü"
Alıştırma Meteoroloji Müdürlüğü, hava durumu raporlarının daha anlaşılabilir olması için, nem oranı değerlerinin insanların anlayabileceği hale getirmek için bir program istemektedir. Kullanıcın girdiği 0 ve 100 arasındaki tamsayı nem oranı değerleri için ekrana şunları yazacaktır. %20 veya aşağısı "Çok Kuru" %21 - %40: "Kuru" %41 - %60: "Biraz Kuru" %61 - %80: "Biraz Nemli" %81 veya fazla: "Nemli“ Kullanıcıya nem derecesi soran ve switch / case yapısı içeren programı yazınız.
Switch – Case Hakkında Notlar switch parantezleri içinde double,decimal tipinde değişken 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.
while, do-while, for döngüleri
Tekrar Yapıları Tekrar yapıları, kod bloklarının tekrar işletilmesini sağlar. Tekrar yapısı içindeki kod bloğunun tekrar edilip edilmeyeceği mantıksal bir ifadenin sonucuna göre karar verilir. Eğer yanlışsa, kod bloğu tekrar edilmez. Kodun belirli bir sayıda tekrar edilmesini sağlayan for döngüsü gibi, belirsiz sayıda tekrar edilmesini sağlayan while veya do-while döngüleri de bulunur.
Tekrar Yapıları for ve while döngüleri, mantıksal ifadenin en başta sınandığı yapılardır. Mantıksal ifade doğruysa, döngüye girilir yoksa döngüden çıkılır. do-while döngüsü, tekrar bloğunun en sonunda sınamanın yapıldığı yapılardır. Kod bloğunu bir kez işletir ve bir kez daha tekrarlanabileceği konusunda mantıksal ifadenin sonucuna bakılır.
while döngüsü Kullanımı iki türlüdür: while ( mantıksal ifade doğru ) ifade ; while (mantıksal ifade doğru) { ifade ; }
Örnek
do-while döngüsü do statement; while ( mantıksal ifade doğru ); do { } while ( mantıksal ifade doğru) ;
Örnek
for Döngüsü for( başlatma deyimleri;mantıksal deyim;düzeltmeler) { } başlatma deyimleri döngü başlamadan önce çalışan komutlardır. Birden fazla sayıda olabilir. Bu durumda, her deyim arasına "," (virgül) konulur. düzeltmeler, döngünün sonunda çalıştırılan işlemlerdir. Birden fazla olabilir ve aralarına "," (virgül) konulur. İşletim sırası soldan sağadır. Döngünün sonunda düzeltmeler yapıldıktan sonra, mantıksal deyim true değerini verirse, döngüye devam edilir. Yoksa döngüden çıkılır.
for Döngüsü for (deyim1 ; deyim2 ; deyim3) { ifadeler ; } deyim1, for döngüsünün en başındaki ilk durumu belirler. Matematiksel bir işlem olabildiği gibi birbirinden virgüllerle ayrılmış pek çok işlem de olabilir. Döngü işletilmeden önce bir kez çalıştırılır.
for Döngüsü for (deyim1 ; deyim2 ; deyim3) { ifadeler ; } deyim2, doğru yada yanlış değerini döndüren mantıksal bir işlemdir. deyim1 içinde değişen değişkenlerden biri olmasına gerek yoktur.
for Döngüsü for (deyim1 ; deyim2 ; deyim3) { ifadeler ; } deyim3, durumdaki değişikliği sağlayan işlemdir. Birden fazla işlem birbirinden virgülle ayrılabilir. deyim1 ve deyim2'de kullanılan değişkenlerle ilgisi olmayabilir.
Örnekler for (int sayac = 1 ; sayac <= 10; sayac++) { Console.WriteLine(sayac.ToString()); }
Örnekler int sayac = 1; for ( ; sayac <= 10; ) { Console.WriteLine(sayac.ToString()); sayac++; } int sayac = 1; for ( ; ; ) { Console.WriteLine(sayac.ToString()); sayac++; if (sayac >10) break; }
Notlar for yapısı içindeki deyim1, deyim2, ve deyim3 boş bırakılabilir. Ama noktalı virgüllerin tutulması gereklidir. deyim1'in ve deyim3'ün yazılmaması for döngüsünün while döngüsü olarak davranmasını sağlar. deyim2'yi yazmadan, döngünün ne zaman biteceği bulunamaz. Bu durumda, break komutuyla döngünün dışına çıkılabilir. Döngüde deyim1 ve deyim3 birden fazla ifade içerebilir. Bunlar kullanılarak program basitleştirilebilir.
Her iki örnek de birbirinin aynısı şekilde çalışır. for while deyim1 ; while ( deyim2 ) { ifadeler ; deyim3 ; } Her iki örnek de birbirinin aynısı şekilde çalışır. for ( deyim1 ; deyim2; deyim3 ) { ifadeler ; }
Örnek int sayac ; for(sayac = 0 ; sayac <= 10 ; sayac++) { Console.WriteLine(“Sayaç değeri:”+sayac.ToString()); } int sayac ; sayac = 1 ; while ( sayac <= 10 ) { Console.WriteLine(“Sayaç değeri:”+sayac.ToString()); sayac++ ; }
Örnek static void main ( ) { int k, n ; for( k = 1, n = 12 ; k<9 && n>6 ; k++, n--) Console.WriteLine ("k= “ + k + “ n= “ + n) ; } Birbirinden virgülle ayrılmış ifadeler, her bölümde yer alabilir. Birbirinden virgülle ayrılmış ifadeler, her bölümde yer alabilir.
Alıştırma 0'dan 100'e kadar rassal sayı tutan ve bu sayıyı kullanıcının tahmin edeceği bir program yazınız. Kullanıcı, bir sayı girdikten sonra, bu sayının, tutulan sayıdan küçük yada büyük olduğunu söyleyecektir. Eğer girilen ve tutulan sayı eşitse, program tebrikler diyerek döngüden çıkacaktır.
Algoritma tutulan = 0 ve 100 arası rassal bir sayı tut while(true) { yaz "Tahmininizi, yazınız" oku tahmin if (tahmin eşittir tutulan) döngüden çık else if(tahmin küçüktür tutulan) yaz "küçük" else yaz "büyük" }
Çözüm
Döngüden Çıkış break anahtar kelimesi döngü yapısından çıkış için kullanılabilir. break iç taraftaki döngüden çıkış için kullanılabilir. continue, bulunulan yerden döngünün sonuna gitmek için kullanılır. Her iki anahtar kelime, algoritmaların uygulanmasında çokça kullanılır.
break: döngüden çıkış Aşağıdaki programda, x'in değeri 5 olduğunda döngüden çıkılmaktadır. int x = 0; for( ; ; ) { /* sonsuz döngü */ if(x == 5) break; Console.WriteLine(x.ToString()); x++; }
continue: döngüye devam Aşağıdaki program, 5 dışında 0'dan 9'a kadar olan bütün sayıları yazmaktadır. int x; for( x = 0; x < 10 ; x++) { if(x == 5) continue; Console.WriteLine(“X = “+ x); }
continue for( x = 0; x < 10 ; x++) { if(x == 5) continue; Console.WriteLine(x.ToString()); } Her iki program da aynı şekilde çalışmaktadır. for( x = 0; x < 10 ; x++) { if(x != 5) { Console.WriteLine(x.ToString()); }
Örnek: İç İçe For Döngüleri