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
Gerial tuşu ve eşittir tuşları, 0 veya boşsa hataya düşmemesi için neler yapılabilir
try catch bloğu kullanabilirsiniz….
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…
Yardımcı olabildiysem ne mutlu !! Ama aynen vermemişsindir umarım 🙂 biraz da öğrenmek lazım…
Tabiki aynen vermedim 🙂 tasarımını değiştirdim ve internetten biraz daha araştırarak değişik butonlar ekledim… pi sayısı ve karekok alan butonlar gibi… ama hesap makinen ana bölümlerde çok işime yaradı . Bilmediğim bazı kodlar var = StartsWith , Replace ve Endswith kodlarını ilk kez burda görüyorum ne işe yaradıklarını anlatman mümkün mü ?
Arkadaş burada anlatmış, benim anlatmama gerek yok sanırım…
Replace ise şurada 🙂
tekrar teşekkür ederim 🙂
ne demek her zaman 🙂
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 ?
sıfırlamaktan kastın içini temizlemek ise textBox1.text = “”; şeklinde bir kod işini görür…
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 😦
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….
Şuanda Kaynak kodlara ulaşamıyorum 🙂 rapidshare’den uçmuş, ulaşabilirsem bakarı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…
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
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
formda txtSonuc isimli bir textbox bulunmuyor demek… Yani o isimde bir textbox eklemelisin…
Addddddaaamsııın =)))) Bizim hoca cot. tan. log. log10 gibi bi kaç şey daha istedi bunun üstüne onları da bi şekilde yaparım. Ellerine sağlık hocam =)
Link Kırılmış Güncelleyebilirmisiniz ?
Maalesef, kaynak kodları bulamadım. Bulduğum zaman eklerim…
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 ?
Kardeş buldun mu
kod anlaşılır çok güzel ama bende çalışmıyor.yani tuşlara bastıgımda rakamlar çıkmıyor