Dört İşlem Gelişmiş Hesap Makinesi


Değişken tanımlamaları ve tiplerinin daha iyi kavranması adına olmazsa olmaz konulardan biri de hesap makinesidir. Hocaların da mutlaka ödev verdiği bir konudur. Birlikte bir tane yapalım madem biraz uzun ve biraz da karışık olabileceği için kaynak kodlarını dosya şeklinde en altta bulabilirsiniz. İlk önce tasarım ekranını ben bu şekilde yaptım daha kullanışlı olması açısından fakat karışık gelirse sadece 4 işleme yetecek bileşenleri tutabilirsiniz. Formumuzun tasarımı şu şekilde olacak ;


Görüldüğü üzere bir tane textbox ve 20 tane de buton dan oluşan tasarımımız var (Resim uçarsa diye belirteyim dedim). Eğer isterseniz butonları 5’e düşürüpte kullanabilirsiniz. Çünkü adım adım herşeyi anlatacağım. Tasarım sırasında bileşenlere anlaşılır isimler vermeniz kod sırasında karışmalarını önleyecektir. Ben textbox’a “txtSonuc” , butonlarada hangi işe yaradığına göre btnArtı, btnEksi, btnEsittir ve sayıların bulunduğu butonlara da button0 ‘dan button9’ a kadar isim verdim. İsimleri de verdikten sonra kod kısmına geçebiliriz;

1-Öncelikle değişkenlerimizi tanımlıyouz;
double girilenSayi1;
double girilenSayi2;
double sonuc;
string islem;

2-Daha sonra üzerinde rakam bulunan butonları tıklanma olaylarını yazıyoruz.(Click Event)
private void button0_Click(object sender, EventArgs e)
{
if (txtSonuc.Text == "0")
{
txtSonuc.Text += "";
}
else
{
txtSonuc.Text += "0";
}
}

Burada sıfır için bir kontrol oluşturuyoruz eğer zaten textbox’ta sadece sıfır yazılı ise sıfır yazma şeklinde. Çünkü bunun işlemler için bir faydası olmayacaktır.
private void button1_Click(object sender, EventArgs e)
{
txtSonuc.Text += "1";
}
private void button2_Click(object sender, EventArgs e)
{
txtSonuc.Text += "2";
}

Bu şekilde bütün rakamların tıklanma olaylarını giriyoruz. devamı tamamen aynı olduğu için buraya yazmıyorum.

3-Virgüllü sayılar için bir virgül butonu eklemiştik ve bunun da tıklanma olayına sıfırda olduğu gibi kontrollü olarak giriş yaptırmalıyız.
private void buttonVirgul_Click(object sender, EventArgs e)
{
if ((txtSonuc.Text == "") | (txtSonuc.Text.EndsWith(",")))
{
txtSonuc.Text += "";
}
else
{
txtSonuc.Text += ",";
}
}

Burada txtSonuc.Text.EndsWith(“,”) textbox’taki metnin virgül ile bitiyor olması veya boş olması durumlarında bu tuş bir şey yapmayacaktır. Böyle değilse virgül koyar.

4-Toplama işlemi için toplama butonu tıklama olayına ;
private void buttonArti_Click(object sender, EventArgs e)
{
if (txtSonuc.Text == "")
{
txtSonuc.Text = "";
}
else
{
girilenSayi1 = Convert.ToDouble(txtSonuc.Text);
txtSonuc.Text = "";
islem = "arti";
}
}

Toplama işleminde textboxa ilk girilen değeri girilenSayi1 değişkenine atıyoruz sonra textbox’ı sıfırlıyoruz.
Çıkarma,Çarpma ve Bölmede de aynı şeyleri yapıyoruz. Sadece işlem isimleri değişiyor.
Daha sonra bu isimleri kullanacağız.

5– Negatif/Pozitif butonumuz için de şu kodları giriyoruz;
private void buttonArtiVeEksi_Click(object sender, EventArgs e)
{
if (txtSonuc.Text.StartsWith("-"))
{
txtSonuc.Text = txtSonuc.Text.Replace("-", "+");
}
else if (txtSonuc.Text.StartsWith("+"))
{
txtSonuc.Text = txtSonuc.Text.Replace("+", "-");
}
else
{
txtSonuc.Text = "-" + txtSonuc.Text;
}
}

Burada da bir kontrol oluşturmalıyız eğer sayı pozitifse negatif negatifse pozitif yapıyoruztxtSonuc. Text.Replace(“-““+”); isminden de anlaşılacağı üzere – gördüğü yere + yazacaktır.

6– Bir de Bütün işi yapacak olan eşittir butonumuz var. Onun da tıklanma olayına şunları yazıyoruz;
private void buttonEsittir_Click(object sender, EventArgs e)
{
girilenSayi2 = Convert.ToDouble(txtSonuc.Text);
switch (islem)
{
case "arti":
sonuc = girilenSayi1 + girilenSayi2;
txtSonuc.Text = sonuc.ToString();
break;
case "eksi":
sonuc = girilenSayi1 - girilenSayi2;
txtSonuc.Text = sonuc.ToString();
break;
case "carpma":
sonuc = girilenSayi1 * girilenSayi2;
txtSonuc.Text = sonuc.ToString();
break;
case "bolme":
sonuc = girilenSayi1 / girilenSayi2;
txtSonuc.Text = sonuc.ToString();
break;
}

}

7-C butonunda herşeyi sıfırlıyoruz.
private void buttonC_Click(object sender, EventArgs e)
{
txtSonuc.Text = "";
girilenSayi1 = 0;
girilenSayi2 = 0;
sonuc = 0;
}

8-CE butonunda ise sadece textbox a girileni sıfırlıyoruz
private void buttonCE_Click(object sender, EventArgs e)
{
txtSonuc.Text = "";
}

9– Son olarak geri tuşu için de yazıyoruz.
private void buttonGeriTusu_Click(object sender, EventArgs e)
{
string degisken = txtSonuc.Text.Substring( 0,(txtSonuc.Text.Length - 1));
txtSonuc.Text = degisken;
}

Burada geri tuşunda textbox daki yazının 0 dan başlayıp karakter uzunluğunun 1 eksiğine kadar alıp değişkene atıyoruz ve textboxa gösteriyoruz.

Kaynak Kodları buradan indirebilirsiniz :

http://rapidshare.com/files/229845334/DortIslemHesapMakinasi.rar

23 comments on “Dört İşlem Gelişmiş Hesap Makinesi

  1. Eline koluna sağlık, programlama temelleri dersi görüyorum ve hocam bana dönem ödevi olarak bir hesap makinesi vermişti, bu hesap makinesi ödevimde hayatımı kurtardı diyebilirim. Allah senden razı olsun eline emeğine sağlık…

  2. hocam bi sorum daha olacaktı bu textbox un sıfırlanmaması için yapabileceğimiz birşey varmıdır ? windowsun hesap makinesinde sıfırlanmıyor mesela ?

  3. sıfırlamak değil sıfırlanmasın istiyorum 😀 1+1+2 islemini yaparken ekrana 1+1+2 yazsın yani birde hata var hesap makinesinde 😀 1+1+2 yazınca 3 yazıyor 4 demesi gerekirken 😦

  4. hocam bu 1+1+2 deyince 3 deme hatasını düzeltme imkanınız var mı ben beceremedim 😦 daha öğrenciyim programlama mantığım yeni yeni gelişmekte yaparsanız çok teşekkür ederim 🙂 ard arda işlem yaptırmam lazım….

    • Biraz inceledim de kodlar bayaa eski 🙂 2 değişkenle çalışıyor hesap makinesi ama sen onun yerine girilen sayıları bir dizide tutabilirsin, yada 3 değişkene çıkarabilirsin…

  5. Daha programlama temelleri dersini yeni görüyorum yani bi dizide nasıl tutabileceğimi biraz daha açıklayabilirsen sevinirim 🙂

    kaynak kodları sana atabilirim fakat nerden atıcağımı söylemen lazım mail adresine atabilirim mesela

  6. HOCAM 2. KISMI YAPIŞTIRIYORUM ŞU HATAYI VERİYOR THE NAME TXTSONUC DOES NOT EXİST İN THE CURENNT CONTEXT.. ACİL YARDIM EDERMSİNİZ DÖNEM ÖDEVİM YARINA .S

  7. ard arda 2+3-5/6 gibi bir işlem yaptırıcam ve bunları textbox gorucem fakat nasıl yapmam gerektiği konusunda hala bırsey bulamadım lütfen yardımcı olur musunuz ?

Yorum bırakın