Koşul İfadeleri-2

Download Report

Transcript Koşul İfadeleri-2

BPR151 ALGORİTMA VE
PROGRAMLAMA - I
Öğr. Gör. Bayram AKGÜL
[email protected]
http://bmyo.bartin.edu.tr/akgul
Bu Günkü Konular
• Koşul İfadeleri
– Koşullu atama operatörü  ? :
– switch-case ifadesi
2
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:
min = (a < b) ? a : b;
min’in değeri a ve b den minimum olanı olur
a = (b >= 0) ? b : -b;
a’nın değeri b’nin mutlak değeri olur.
3
İki sayıdan küçük ve büyük olanını bulma
using System;
class Program
{
static void 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();
}
}
4
switch deyimi
• Bazen bir karşılaştırmada bir çok değerden hangisi
olduğunu seçmek isteye biliriz.
– Bu durumda kademeli if yapısını aşağıdaki gibi kullanabiliriz.
if (not
else if
else if
else if
else if
else
== 5)
(not ==
(not ==
(not ==
(not ==
4)
3)
2)
1)
Console.Write("Mükemmel");
Console.Write("iyi");
Console.Write("geçer");
Console.Write("zayıf");
Console.Write("kalır");
Console.Write("geçersiz not");
• Buna alternatif olarak:
• kademeli if deyimlerinin yerine switch yapısını kullanabiliriz.
5
switch deyimi- örnek
• Önceki kodun kademeli if yerine switch ile 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;
}
6
Switch
• switch deyimi bazı if-else deyimlerinin
yaptığı işi daha az kodla yapar.
• Genellikle karmaşık if-else bloklarını
kullanmaktansa switch yapısını kullanmak
programın anlaşılırlığını artırır.
7
switch deyiminin yazım kuralı
• switch yapısı
ifadedeki duruma
göre seçeneklerden
sadece bir tanesini
çalıştırır.
switch(ifade)
{
case değer1:
ifade1;
…
break;
case değer2:
ifade2;
…
break;
default:
ifadeN;
…
break;
}
8
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.
9
Switch ile ilgili bilinmesi gerekenler
• switch ifadesinde aynı case tekrardan
yazılamaz.
switch(not)
{
case 5: Console.Write("Mükemmel");
break;
case 5: Console.Write("Harika");
break;
case tekrarlayamaz!
...
default: Console.Write("geçersiz not");
break;
}
10
Switch ile ilgili bilinmesi gerekenler
• switch ifadesindeki 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.
11
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)
{
case 0:
Console.WriteLine("sayı 3n şeklinde ifade edilebilir");
break;
case 1:
Console.WriteLine("sayı 3n+1 şeklinde ifade edilebilir.");
break;
case 2:
Console.WriteLine("sayı 3n+2 şeklinde ifade edilebilir.");
break;
}
12
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.
13
switch-case örnek-1
switch (rakam)
{
case 0:
Console.WriteLine("0'ın ne değeri var ki:)");
break;
case 2:
case 6:
case 8:
Console.WriteLine("Bu bir çift sayı");
break;
case 1:
case 4:
case 9:
Console.WriteLine("Bu başka bir sayının karesi");
break;
case 3:
case 5:
case 7:
Console.WriteLine("Bu bir asal sayı.");
break;
default:
Console.WriteLine("Sadece rakam girilebilir!");
break;
}
14
switch – örnek-2
char islem;
int sonuc;
int deger;
…
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 */
15
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)
{
case 4:
Console.Write("case 4'e geldi.");
string b = Console.ReadLine();
Console.Write(b);
break;
case 5:
Console.Write("case 5'ten case 4'e git");
goto case 4;
default:
Console.Write("default kısmı");
break;
}
goto varken
break
kullanmaya
gerek yoktur.
16
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'lerin sırası önemli değildir.
• Bir switch bloğunda default durumu
bulunmak zorunda değildir.
• switch'in parantezi içindeki ifade bir
değişken, bir sabit ya da bir ifade olabilir.
17
DINLEDIĞINIZ IÇIN
TEŞEKKÜRLER…
Öğr. Gör. Bayram AKGÜL
18