Hesap Makinesi – If Else ve While

Bir önceki yazımızda bir hesap makinesi yapmaya başlamıştık. Ancak bu hesap makinesi 4 işlemi birden yapıyor, 0’a bölünmelerde nasıl cevap vereceğini bilemiyor, bölüme sonucu çıkan rakam tam sayı (küsürleri yok) ve bir daha yapıp yapmak istemediğimizi bile sormayacak kadar kaba!

O halde her şey elimizde, hemen kodumuzu iyileştirmeye başlayalım.

İlk önce şu 0’a bölünmesi istenirse engelleyecek çalışmayı yapalım. Bir sayı 0’a bölünmeye çalışırsa bu anlamsız bir veri olur. Yani şöyle düşünün 3’de kaç tane 0 vardır? Bu sorunun cevabı sonsuzdur. Hesap makinesi ile deneyin sonucu E olarak (error) verecektir. O halde bizim yazdığımız kod’da da kullanıcının bunu yapmasını engellemeli ve uyarmalıyız.

Şimdi bu yapının adımlarını çıkaralım:

1- Kullanıcıdan ilk sayıyı iste
2 – Kullanıcıdan ikinci sayıyı iste
3 – işlemi seçtir
3.1 Eğer bölme işlemi ise ikinci sayının 0 olup olmadığını kontrol et
3.1.1 Eğer ikinci sayıyı 0 girmişse, düzeltmesi için mesaj ver
3.1.2 Yeni ikinci sayıyı iste
3.1.3 3.1’den tekrar kontrol ettir
3.2 sayı 0’dan farklı ise işlemi yap
4. Diğer tüm işlemleri gerçekleştir

Bu şekilde rakam rakam yazında biraz anlaşılması güç oluyor değil mi? O halde algoritmasını çizelim:

Daha anlaşılır oldu mu? Sizde mutlaka bir projeye başlamadan önce nasıl bir şey yapacağınızı çizin. Böylece daha hızlı kod yazabilirsiniz.

Bu şemayı C# kodlarına dökersek:

1. Deneme: If – Else döngüleri ile

Dikkat ettiyseniz neler yapacağımızı yaparken Eğer öyle olursa, eğer böyle olursa diye ifadeler kullandık. Eğer kelimesinin İngilizce karşılığı “If”, “öyle olmazda böyle olursa”nın karşılığı da “Else”. C#’da bunu aynı şekilde kullanıyor.

Kullanım şekli şöyle:
If (koşul)
{
}
Bunun anlamı şudur. Eğer parantez içinde yazan koşul gerçekleşirse süslü parantezler arasında kalan kodları çalıştır. Biraz eğlenceli olması açısından günlük hayattan bir örnek verirsem:

if (yemek tuzsuzsa)
{
yemeğe tuz at
}
yemeği ye

Yemek tuzsuzsa yemeğe tuz atacak ve sonra yiyecektir. Eğer yemek tuzlu ise sadece yeme komutunu verir.

If – Else kullanımında ise şöyledir.
if (koşul)
{
}
else
{
}

Bu şu demektir. Eğer koşul gerçekleşirse ilk süslü parantezdeki kodları çalıştır. Eğer koşul doğru değilse – karşılanmıyorsa, ikinci süslü parantezdeki işlemi gerçekleştir. Yine günlük hayattan bir örnek vereyim:

if (otobüs dolu)
{
taksiye bin
}
else
{
otobüse bin
}
işe git

Bu kod bloğu da şu mantıkla çalışır. Eğer otobüs boşsa işe otobüsle gidecektir. Eğer dolu ise işe taksiyle gidecektir. Dikkat edin, işe her koşulda gidiyor, çünkü o süslü parantezlerin dışında kalan bir komut.

Şimdi ilk denememizi yapalım. Bakalım ikinci sayı 0 ise if – else ile bu durumu çözebilecek miyiz?

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());

if (ikinciSayi==0)
{
Console.WriteLine(“Lütfen 0’dan farklı bir sayı giriniz:”);
ikinciSayi = int.Parse(Console.ReadLine());
Console.WriteLine(“İki sayının bölümü:{0}”, ilkSayi / ikinciSayi);
}
else
Console.WriteLine(“İki sayının bölümü:{0}”, ilkSayi / ikinciSayi);
Bu koda baktığımızda ilk defa ikinci sayı için 0 girdiğinde çalıştığını ama ikinci defa da 0 girdiğinde çalışmadığını görürüz.

Bunun nedeni if blogunun içinde ikinciSayi için başka bir kontrol yapılmamasıdır. O nedenle ikinci defa 0 girildiğinde sonuçta size bu hatayı verir.

Bunu engellemek için iç içe bir sürü if yazabiliriz. Ancak kaçıncı denemeye kadar? Kullanıcı belki 1000 defa sıfır girecek diye bizim de 1000 tane if döngüsü mü yapmamız lazım? Tabiki değil, bunun daha kolay başka bir çözümü var.

2. Deneme: While kullanımı

While kelimesinin Türkçesi sırasında, süre, iken, zaman gibi anlamlara karşılık gelir. Şu şöyle olduğu müddetçe anlamında kullanılır C#’da. Örneğin kullanıcı 0 girmeye devam ettiği müddetçe gibi.

Kullanımı ise şu şekildedir:

While(koşul)
{
}

Parantez içinde yazan koşul doğru, yani C# true ifadesini verdiği müddetçe aşağıdaki süslü parantezler arasındaki kodlar çalıştırılır. Yine günlük hayattan bir örnek verelim. Bakkaldan bir şey aldınız ve cebinizde sadece bozuk paralar var.

While(bozuk para != (eşit değil) hesap)
{
cebinden para çıkarmaya devam et
}

Bakalım 0’a bölünme işlemini while ile çözebilecek miyiz?

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());

while (ikinciSayi==0)
{
Console.WriteLine(“Lütfen ikinci sayıyı 0 dan farklı giriniz:”);
ikinciSayi = int.Parse(Console.ReadLine());
}

Console.WriteLine(“İki sayının bölümü:{0}”, ilkSayi / ikinciSayi);
Çalıştırıp sonucuna bakalım:

İşte gördüğünüz gibi biz kaç tane 0 yazarsak yazalım, biz 0’dan farklı bir rakam girene kadar bu devam edecektir.

İşte 0’a bölünme problemini çözdük.

Bir sonraki yazıda bölme işleminde küsürlü sayıyı nasıl verebiliriz onu anlatacağım.

İLGİNİ ÇEKEBİLİR

Bağımlılık yapan zombi oyunu Zombie Tsunami iPad ve iPhone’da!

Zombie

Zombie Tsunami, iPhone, iPod touch ve iPad ile uyumlu ücretsiz ama son derece eğlenceli bir oyun. Tüm dünya, Amerika, Mısır, Fransa hatta Himalayalar bile zombilerin işgali altında ve sen de onlardan birisin! Görevin: İnsan ırkını yok etmek 🙂

Mobigame tarafından yapılan ve App Store’dan buraya tıklayarak ücretsiz indirebileceğin oyunda, zombilerin tipleri hayli komik, kocaman ağızlarıyla karşılarına çıkan insan, araba, otobüs, tank benzeri ne varsa silip süpürüyorlar.

Yazının devamı >>

Reklamlar

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: