Hesap Makinesi – If – Else If ve Switch Koşulları

Hesap makinesi programımızda epey düzenleme yaptık. Ancak hala 4 işlemi beraber yaptırıyoruz ve kullanıcıya yeni bir işlem yapmak isteyip istemediğini sormuyoruz.

Bu çalışmamızda da gelin kullanıcıya seçme işlemi verelim. Bunu yapmanın farklı yolları bulunuyor.

1. Yöntem: If & Else If Yöntemi

If & Else If döngüleri aslında If Else’den çok farklı değildir. If Else kullanımında hatırlarsanız ilk koşul gerçekleşme bunu yap anlamı taşıyordu. Şimdi biraz daha ileri boyuta taşıyor ve o koşul olmazsa bunu dene, o da olmazsa bunu dene, o da olmazsa bunu dene diyerek çoğaltabiliyoruz. Kullanımına bakalım:
If (koşul)
{
}
else if (koşul)
{
}
else if(koşul)
{
}
.
.
.
else
{
}
else kapatabilir ya da öylece bırakabilirsiniz….

Yine aklımızda kolayca kalması için günlük hayattan bir örnek verelim. Diyelim ki araba almayı düşünüyorsunuz. Eğer paranız yetecekse 2.5 motorluk bir araç alacaksınız. Ama o kadar çıkmazsa 2.0 cc motorlu bir araç alacaksınız. Eğer o da çıkazsa 1.8’e bakacaksınız ve diyelim ki o da çıkmazsa 1.6’ya bakacaksınız. O da olmazsa almam dediyseniz bu kodu şöyle yapabiliriz

if(cebimdeki para==2.5’in parasına)
{
2.5;’i al
}
else if(cebimdeki para=2.0 parasına)
{
2.0’ı al
}
else if(cebimdeki para=1.8 parasına)
{
1.8’i al
}
else if(cebimdeki para=1.6 parasına)
{
1.6’yı al
}
else
{
hiç bir şey alma
}

Daha öncede söylemiştim C#’da kodlar yukarıdan aşağıya doğru okunur. Bu nedenle cebinizdeki para 2.5’e yetiyorsa hiç bir zaman 2.0’ın koşulu çalışmayacaktır.

Şimdi If – Else if yapısını kullanarak hesap makinesinde kullanıcıya nasıl bir seçim şansı verebiliriz?

Console.WriteLine(“Lütfen ilk sayıyı giriniz:”);
int ilkSayi = int.Parse(Console.ReadLine());

Console.WriteLine(“Lütfen ikinci sayıyı giriniz:”);
int ikinciSayi = int.Parse(Console.ReadLine());
//belki başka bir işlemi seçeceği için kullanıcı burada hemen 0 kuralını sorgulamayacağız

Console.WriteLine(“Lütfen yapmak istediğiniz işlemin simgesini seçiniz : \n + \n – \n * \n / “);
string islem = Console.ReadLine(); //burada kullanıcı artık yapmak istediği işlemi seçebilecek

if (islem==”+”)
{
Console.WriteLine(“Toplama işleminin sonucu:{0}”,ilkSayi+ikinciSayi);
}
else if (islem==”-“)
{
Console.WriteLine(“Çıkarma işleminin sonucu:{0}”, ilkSayi – ikinciSayi);
}
else if (islem==”/”)
{
while (ikinciSayi == 0)
{
Console.WriteLine(“Lütfen ikinci sayıyı 0 dan farklı giriniz:”);
ikinciSayi = int.Parse(Console.ReadLine());
}

float sonuc = (float)ilkSayi / ikinciSayi;
Console.WriteLine(“İki sayının bölümü:{0}”, sonuc);
}
else if (islem==”*”)
{
Console.WriteLine(“Çarpma işleminin sonucu:{0}”, ilkSayi * ikinciSayi);
}
else
{
Console.WriteLine(“uygun bir seçim yapmadınız”);
}

Dikkat ederseniz burada 0’a bölünmeme kuralını ve bölme işleminin tam yapılmasını sağlayan kodları da görebilirsiniz.

2. Yöntem: Switch Kontrlü
Dikkat ettiyseniz bu işlem If Else if ile yapılabiliyor ancak kodlar çok uzun ve karmaşık. Eğer 4 işlemden daha karmaşık bir işlem yaptırmak isteseydik bu kadar döngü içinde kaybolabilirdik. Daha basit bir yolu bulunuyor: Switch kontrolü.
Switch kontrlünde bir koşul aranmaz. Yani if kullanımında olduğu gibi eğer x 10’dan büyükse çalış şeklinde bir koşul yapamazsınız. Bu kontrol tam olarak seçimler için hazırlanmış bir kontroldür. Tam olarak anlatımı buysa bu kodu çalıştırdır anlamı.

Kullanım şekli:
Switch(değişken)
case 1:
break;
case 2:
break;
default:
break;
Buradaki değişken case kelimesinin hemen sonrasındaki değerle kıyaslanır. Burada 1 yazıyor. değişken eğer 1’e eşitse break yazan bölüme kadar olan kodlar çalıştırılacaktır. Eğer değişken 2’ye eşitse alttaki çalıştırılacaktır. Eğer buradaki case’lerden herhangi birine uymuyorsa da default yazan yerden break yazan yere kadar olan kodlar çalıştırılacaktır. case’den sonra bir string ifade ya da başka bir tipten değişken de yazabilirsiniz.

Yine günlük hayattan bir örnekle açıklarsam anahtarlığınızda 2 tane anahtar olsun. Kapıya geldiğinizde hangi anahtarın açtığını bilmediğinizi düşünelim. Her iki anahtarıda dener ve hiç biri açmazsa zili çalarsınız. Bunu switch kontrlü ile şöyle yazarsınız:

Switch(anahtar deliği)
case “1. anahtar”:
kapıyı aç;
break;
case “2. anahtar”:
kapıyı aç;
break;
deafult:
zili çal;
break;

Bakalım bizim hesap makinesinde kullanıcıya işlem seçtirmemizi nasıl yazabiliyoruz:

Console.WriteLine(“Lütfen ilk sayıyı giriniz:”);
int ilkSayi = int.Parse(Console.ReadLine());

Console.WriteLine(“Lütfen ikinci sayıyı giriniz:”);
int ikinciSayi = int.Parse(Console.ReadLine());
//belki başka bir işlemi seçeceği için kullanıcı burada hemen 0 kuralını sorgulamayacağız

Console.WriteLine(“Lütfen yapmak istediğiniz işlemin simgesini seçiniz : \n + \n – \n * \n / “);
Console.ForegroundColor = ConsoleColor.Yellow;
string islem = Console.ReadLine(); //burada kullanıcı artık yapmak istediği işlemi seçebilecek

Console.ForegroundColor = ConsoleColor.White;
switch (islem)
{
case “+”:
Console.WriteLine(“Toplama işleminin sonucu:{0}”, ilkSayi + ikinciSayi);
break;
case “-“:
Console.WriteLine(“Çıkarma işleminin sonucu:{0}”, ilkSayi – ikinciSayi);
break;
case “*”:
Console.WriteLine(“Çarpma işleminin sonucu:{0}”, ilkSayi * ikinciSayi);
break;
case “/”:
while (ikinciSayi == 0)
{
Console.WriteLine(“Lütfen ikinci sayıyı 0 dan farklı giriniz:”);
ikinciSayi = int.Parse(Console.ReadLine());
}

float sonuc = (float)ilkSayi / ikinciSayi;
Console.WriteLine(“İki sayının bölümü:{0}”, sonuc);
break;
default:
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine(“uygun bir işlem seçmediniz”);
break;
}

Sizce de daha okunabilir bir kod blogu olmadı mı?

No comments yet... Be the first to leave a reply!

Yorum Yaz

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

%d blogcu bunu beğendi: