Kontrol Yapıları if-else, switch, while, for, do-while Kontrol Yapıları Belirli koşullar gerçekleştiğinde belirli işlemleri yapmak istenirse, Belirli koşulun oluşması/oluşmaması durumunda başka bir işlemin yapılmak istenmesi durumunda, if-else yapıları kullanılır. if-else yapısı if (<condition>) { <statement_true_1>; ... <statement_true_N>; } else { <statement_false_1>; ... <statement_false_N>; } 1. koşul doğru ise 1. ve 2. ifadeler çağrılır, Koşul doğru değilse 3.ve4. ifadeler çağrılır. if (<condition>) { <statement_true_1>; ... <statement_true_N>; } Else koşulu zorunlu değildir. Koşulun tutmaması durumunda herhangi bir şey yapılması istenmezse yazılmasına gerek yoktur. Koşul parantez içinde yazılır. Diğer bir kullanım (parantezsiz { }) if (<condition>) <statement_true>; else <statement_false>; if (<condition>) <statement_true>; •Tavsiye edilmez. •Koşul sonrası sadece bir ifade varsa parantez kullanılmayabilir. Akış Diyagramı-if-else Koşul testi Koşul doğru Koşul yanlış İfadeler(else) İfadeler(if) Sıradaki ifadeler if-else örneği Girilen iki sayının büyüğünü bulan programı yazınız. 2 alternatif çözüm: İf ve else ile(EnBuyuk1.cs) Sadece if ile(EnBuyuk2.cs) Boolean tipi ve ifadeler İf içerisindeki koşul boolean tipi olabilir. Values are true or false bool da int,double giib bir tiptir. int bool “); derece; sicakMi= false; Console.WriteLine(«Sıcaklık derecesini giriniz: degrees = Convert.ToInt32(Console.ReadLine()); if (derece > 35) { sicakMi = true; } if-else kısaltma(?:) Örnek Console.WriteLine( not >= 60 ? «Geçti" : «Kaldı" ); 8 İçiçe if-else yapısı İçiçe if-else ifadeleri kullanılabilir Parantez kullanımı tavsiye edilir Örnek if ( not >= 90 ) Console.WriteLine( "A" ); else if ( not >= 80 ) Console.WriteLine( "B" ); else if ( not >= 70 ) Console.WriteLine( "C" ); else if ( not >= 60 ) Console.WriteLine( "D" ); else Console.WriteLine( "F" ); 10 Örnek if ( not >= 90 ) Console.WriteLine( else if (not >= 80 ) Console.WriteLine( else if (not >= 70 ) Console.WriteLine( else if (not >= 60 ) Console.WriteLine( else Console.WriteLine( "A" ); "B" ); "C" ); "D" ); "F" ); 11 Havada kalan else if ( x % 2 == 0) if ( x < 0 ) Console.WriteLine("{0} negatif çift sayıdır“, x); else Console.WriteLine("{0} tek sayıdır“, x); Sorun nedir? Örnek x=4 Çözüm if ( x % 2 == 0) { if ( x < 0 ) Console.WriteLine("{0} negatif çift sayıdır“, x); } else { Console.WriteLine("{0} tek sayıdır“, x); } Else kendisine en yakın if yapısına bağlanır. Parantez kullanımı karışıklığı engeller. switch ifadesi Birden fazla seçim olduğunda kullanılır. private void notHesaplayici( int not ) { switch (not / 10 ) { case 9: // 90 notu case 10: // 100 notu ++aCount; break; case 8: // Not 80-89 arası ++bCount; break; case 7: ++cCount; break; case 6: ++dCount; break; default: //60dan az notlar F’dir ++fCount; break; } } // metodun sonu // çıkış Akış Diyagramı-switch While döngüsü Console.WriteLine("Please enter a non-negative number"); inputnumber = Convert.ToInt32(Console.ReadLine()); if (inputnumber < 0) { Console.WriteLine(inputnumber + " is negative. Wrong Input"); } Belirli koşul devam ettiği müddetçe, içerideki ifadeleri çağırır. Negatif olmayan sayı isteyen ve koşul sağlanmadığında uyarı veren program. Console.WriteLine("Please enter a non-negative number"); inputnumber = Convert.ToInt32(Console.ReadLine()); while (inputnumber < 0) { Console.WriteLine(inputnumber + " is negative! Try again"); inputnumber = Convert.ToInt32(Console.ReadLine()); } Akış Diyagramı-while döngüsü if (test) { ifadeler; } test yanlış while (test) { ifadeler; } doğru İfadeler Sıradaki ifadeler test yanlış doğru İfadeler Sıradaki ifadeler Niye döngüler? 10 sayıyı toplamak int int cin sum cin sum num1, num2, num3, num4, num5; sum; >> num1 >> num2 >> num3 >> num4 >> num5; = num1 + num2 + num3 + num4 + num5; >> num1 >> num2 >> num3 >> num4 >> num5; += num1 + num2 + num3 + num4 + num5; Örnek düşünün: 100 ya da 1000 tane sayıyı toplama işlemi döngülerle kolayca yapılabilir. Örnek 1 ile 10 arasındaki sayıları topla: int toplam = 0; int i = 1; while (i <= 10) {toplam = toplam + i; i += 1; } Döngünün çalışması int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } Console.Write(sum); i 1 2 sum 0 1 i<=10 true false sum=sum+i; i=i+1; Console.Write(sum); Döngünün çalışması int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } Console.Write(sum); i 2 3 sum 1 3 i<=10 true false sum=sum+i; i=i+1; Console.Write(sum); Döngünün çalışması int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } Console.Write(sum); i 3 4 sum 3 6 i<=10 true false sum=sum+i; i=i+1; Console.Write(sum); cout<<sum; Döngünün çalışması int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } Console.Write(sum); i 10 11 sum 45 55 i<=10 true false sum=sum+i; i=i+1; Console.Write(sum); cout<<sum; while döngüsü kullanımı <değer atama> while (<test>) { <statement1>; ... <statementN>; <güncelleme> } while döngüsü örnek 1-10 arası sayıların toplamı int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } Console.Write(sum); İlk değerler test ifadeler güncelleme Örnek total = 0; gradeCounter = 1; while ( gradeCounter <= 10 ) { Console.Write( "Notu giriniz: " ); grade = Convert.ToInt32( Console.ReadLine() ); total = total + grade; gradeCounter = gradeCounter + 1; } // average = total / 10; Sentinel Belli koşul geldiğinde döngüden çıkılmak isteniyorsa, sentinel değer kullanılır. Genelde 0 ya da -1 sentinel değer olarak kullanılır. Örnek total = 0; gradeCounter = 0; Console.Write("Notları giriniz: Çıkmak için -1 giriniz"); grade = Convert.ToInt32(Console.ReadLine()); // sentinel değer=-1 while (grade != -1) { total = total + grade; gradeCounter = gradeCounter + 1; Console.Write("Notları giriniz: Çıkmak için -1 giriniz "); grade = Convert.ToInt32(Console.ReadLine()); } for ve while döngüleri karşılatırması <değer atama> while (<test>) { <statement1>; ... <statementN>; <güncelleme> } for (<değer atama>; <test>; <güncelleme> ) { <statement1>; ... <statementN>; } Örnek 1 ve10 arası sayıların toplamı(1 ve 10 dahil) int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } for döngüsü örneği int sum = 0; int i = 1; while (i <= 10) { sum = sum + i; i = i + 1; } int sum = 0; for (int i=1; i <= 10; i=i+1) { sum = sum + i; } for döngüsü kullanımı Örnek for ( int i = 2; i <= 20; total += i, i += 2 ) ; // ifade Hataları bulunuz 1. for (int i = 10; i < 5; i=i+1) { Console.WriteLine("Kaç kere basılır?"); } 2. for (int i = 10; i >= 1; i=i+1) { Console.WriteLine("Kaç kere basılır?"); } 1. int i = 1; while (i < 20) { Console.WriteLine("Kaç kere basılır?"); } Sonsuz Döngüler Problem nedir?num tek sayı olursa? int num = Convert.ToInt32(Console.ReadLine()); int start = 0; while (start != num) { start += 2; Console.WriteLine(start); } Çözüm:çift sayı olmasını kontrol etmek if (num % 2 == 0) { while (start != num) { start += 2; Console.WriteLine(start); } } do-while döngüsü While gibi. Fark nedir? <değer atama> do { <statement1>; ... <statementN>; <update> } while (<koşul>); ; unutma En az 1 kere ifade çalışır. do { Console.WriteLine("[0..100] arası sayı girin"); num = Convert.ToInt32(Console.ReadLine()); } while (num < 0 || num > 100 ); foreach Dizilerde anlatılacak. break • Döngüden çıkmak için 5 sayısında döngüden çıkılır 39 continue 5'i atlamak için 40
© Copyright 2024 Paperzz