190 likes | 481 Views
BPR151 ALGORİTMA VE PROGRAMLAMA - I. Öğr . Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul. Bu Günkü Konular. Koşul İfadeleri Koşullu atama o perat ö r ü ? : s witch - case ifadesi. a = (b >= 0) ? b : -b;. a’nın değeri b’nin mutlak değeri olur.
E N D
BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul
Bu Günkü Konular • Koşul İfadeleri • Koşulluatama operatörü ? : • switch-caseifadesi
a = (b >= 0) ? b : -b; a’nındeğeri b’nin mutlak değeri olur. min = (a < b) ? a : b; min’in değeri a ve b den minimum olanı olur Koşullu atama operatörü • Program yazarken bir çok yerde aşağıdaki kodu bulabilirsiniz: if (koşul) ifade1; else ifade2; • Bu ifadeyi daha kısa yazabilecek bir operatör var • koşul?ifade1 :ifade2 • Örnekler:
İki sayıdan küçük ve büyük olanını bulma usingSystem; classProgram { staticvoid Main(string[] args) { int sayı1, sayı2, küçük, büyük; Console.Write("1. sayı:"); int.TryParse(Console.ReadLine(), out sayı1); Console.Write("2. sayı:"); int.TryParse(Console.ReadLine(), out sayı2); küçük = sayı1 < sayı2 ? sayı1 : sayı2; büyük = sayı1 > sayı2 ? sayı1 : sayı2; Console.WriteLine("Büyük Sayı:"+ büyük); Console.WriteLine("küçük Sayı:"+ küçük); Console.ReadLine(); } }
switchdeyimi • Bazen bir karşılaştırmada bir çok değerden hangisi olduğunu seçmek isteye biliriz. • Bu durumda kademeli ifyapısını aşağıdaki gibi kullanabiliriz. if (not == 5) Console.Write("Mükemmel"); elseif (not == 4) Console.Write("iyi"); elseif (not == 3) Console.Write("geçer"); elseif (not == 2) Console.Write("zayıf"); elseif (not == 1) Console.Write("kalır"); elseConsole.Write("geçersiz not"); • Buna alternatif olarak: • kademeli if deyimlerinin yerine switch yapısını kullanabiliriz.
switchdeyimi- örnek • Önceki kodun kademeli if yerine switchile yeniden yazımı şekildeki gibi olacaktır: switch(not){ case 5: Console.Write("Mükemmel"); break; case 4: Console.Write("iyi"); break; case 3: Console.Write("geçer"); break; case 2: Console.Write("zayıf"); break; case 1: Console.Write("kalır"); break; default: Console.Write("geçersiz not"); break; }
Switch • switchdeyimi bazı if-elsedeyimlerinin yaptığı işi daha az kodla yapar. • Genellikle karmaşık if-elsebloklarını kullanmaktansa switch yapısını kullanmak programın anlaşılırlığını artırır.
switchdeyimininyazım kuralı • switch yapısı ifadedeki duruma göre seçeneklerden sadece bir tanesini çalıştırır. switch(ifade) { casedeğer1: ifade1; … break; casedeğer2: ifade2; … break; default: ifadeN; … break; }
Switch ile ilgili bilinmesi gerekenler • switch ifadesindeki değer hangi case değerine karşılık gelir ise sadece o kısım çalışacaktır. not : 4 switch(not){ case 5: Console.Write("Mükemmel"); break; case 4: Console.Write("iyi"); break; case 3: Console.Write("geçer"); break; case 2: Console.Write("zayıf"); break; case 1: Console.Write("kalır"); break; default: Console.Write("geçersiz not"); break; } Eğer not 4 ise sadece case 4: kısmı çalışacaktır.
Switch ile ilgili bilinmesi gerekenler • switch ifadesinde aynı case tekrardan yazılamaz. switch(not) { case 5: Console.Write("Mükemmel"); break; case5: Console.Write("Harika"); break; ... default: Console.Write("geçersiz not"); break; } case tekrarlayamaz!
Switch ile ilgili bilinmesi gerekenler • switchifadesindeki değer herhangi bir case ifadesinde yoksa default kısmı çalışacaktır. not : 8 switch(not) { case 5: Console.Write("Mükemmel"); break; case 4: Console.Write("iyi"); break; case 3: Console.Write("geçer"); break; case 2: Console.Write("zayıf"); break; case 1: Console.Write("kalır"); break; default: Console.Write("geçersiz not"); break; } Eğer not 1,2,3,4,5 haricinde bir değer olursa default kısmı çalışacaktır.
Switch ile ilgili bilinmesi gerekenler • Switch ifadesi; sonucu hesaplanabilir bir ifade olabilir, • Fakat her bir case ifadesi kesinlikle sabit değer veya sabitlerden oluşmuş bir ifade olmak zorundadır. switch(sayı %3) { case0: Console.WriteLine("sayı 3n şeklinde ifade edilebilir"); break; case1: Console.WriteLine("sayı 3n+1 şeklinde ifade edilebilir."); break; case2: Console.WriteLine("sayı 3n+2 şeklinde ifade edilebilir."); break; }
Switch ile ilgili bilinmesi gerekenler • case ifadeleri gruplandırılabilir. • Her case kısmından sonra veya grubundan sonra kesinlikle break komutu kullanılmak zorundadır.
switch-case örnek-1 switch(rakam) { case0: Console.WriteLine("0'ın ne değeri var ki:)"); break; case2: case6: case8: Console.WriteLine("Bu bir çift sayı"); break; case1: case4: case9: Console.WriteLine("Bu başka bir sayının karesi"); break; case3: case5: case7: Console.WriteLine("Bu bir asal sayı."); break; default: Console.WriteLine("Sadece rakam girilebilir!"); break; }
switch– örnek-2 charislem; intsonuc; intdeger; … switch(islem) { case'+': sonuc+=deger; break; case'-': sonuc-=deger; break; case'*': sonuc*=deger; break; case'/': if(deger==0) { Console.WriteLine("Error: sıfıra bölme hatası "); Console.WriteLine(" işlem iptal edildi "); } else sonuc/=deger; break; default: Console.WriteLine("Geçersiz işlem!"); break; } /* end-switch */
Switch ile ilgili bilinmesi gerekenler • Eğer bir case ifadesinden başka bir case ifadesine gitmek istiyorsak goto anahtar sözcüğünü kullanabiliriz. int a ; ... switch (a) { case4: Console.Write("case 4'e geldi."); string b =Console.ReadLine(); Console.Write(b); break; case5: Console.Write("case 5'ten case 4'e git"); gotocase4; default: Console.Write("default kısmı"); break; } goto varken break kullanmaya gerek yoktur.
Switch üzerine notlar • case anahtar sözcüğünün yanındaki ifade mutlaka ya sabit ya da sabitlerden oluşan bir ifade olmalıdır. • default: kısmı case ifadelerinin arasına veya başa yazılabilir fakat tipik olarak sona yazılır. • case'lerinsırası önemli değildir. • Bir switch bloğunda default durumu bulunmak zorunda değildir. • switch'inparantezi içindeki ifade bir değişken, bir sabit ya da bir ifade olabilir.
Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL