Merhaba arkadaşlar.Bugün paylaşacağım şey mantık oluşturması açısından önemli bir örnek.Basit şekilde yapılmış bu program ileride yapacağımız bir fatura programında kullanılabilir.Bildiğiniz gibi faturalarda Toplam Tutar yazar.Hemen yanında veya altında Toplam Tutarın yazıyla basılmış halini görürüz.Bu yaptığımızı programda bunu tam olarak yapmasakta mantık oluşturması bakımından iyi olacaktır. Biz burada sadece 0 ile 1000 arasında girilen tam sayıları yazıya çevireceğiz.Geliştirmesi size kalmış:)
Öncelikli aşağıdaki formu hazırlıyoruz.
Gördüğünüz gibi formumuzda 1 adet Textbox 1 adet button 2 adet Label var.Bu formu oluşturduktan sonra button'a çift tıklayarak click olayına aşağıdaki kodları yazıyoruz.
private void button1_Click(object sender, EventArgs e)
{
int yuzler = 0, onlar = 0, birler = 0, girilen;
string sonuc = "";
girilen = Convert.ToInt32(textBox1.Text);
if (girilen <= 0 || girilen >= 1000)
MessageBox.Show("Lütfen 0 ile 1000 arasında bir sayı giriniz", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
if (girilen > 99)
{
yuzler = girilen / 100;
if (girilen - (yuzler * 100) == 0) goto ifSonu;
onlar = (girilen - (yuzler * 100)) / 10;
birler = girilen - ((yuzler * 100) + (onlar * 10));
}
else if (girilen > 9)
{
onlar = girilen / 10;
birler = girilen - (onlar * 10);
}
else
birler = girilen;
ifSonu:
if (yuzler > 0)
{
switch (yuzler)
{
case 1:
sonuc = "yüz";
break;
case 2:
sonuc = "ikiyüz";
break;
case 3:
sonuc = "üçyüz";
break;
case 4:
sonuc = "dörtyüz";
break;
case 5:
sonuc = "beşyüz";
break;
case 6:
sonuc = "altıyüz";
break;
case 7:
sonuc = "yediyüz";
break;
case 8:
sonuc = "sekizyüz";
break;
case 9:
sonuc = "dokuzyüz";
break;
}
}
if (onlar > 0)
{
switch (onlar)
{
case 1:
sonuc = sonuc + "on";
break;
case 2:
sonuc = sonuc + "yirmi";
break;
case 3:
sonuc = sonuc + "otuz";
break;
case 4:
sonuc = sonuc + "kırk";
break;
case 5:
sonuc = sonuc + "elli";
break;
case 6:
sonuc = sonuc + "altmış";
break;
case 7:
sonuc = sonuc + "yetmiş";
break;
case 8:
sonuc = sonuc + "seksen";
break;
case 9:
sonuc = sonuc + "doksan";
break;
}
}
if (birler > 0)
{
switch (birler)
{
case 1:
sonuc = sonuc + "bir";
break;
case 2:
sonuc = sonuc + "iki";
break;
case 3:
sonuc = sonuc + "üç";
break;
case 4:
sonuc = sonuc + "dört";
break;
case 5:
sonuc = sonuc + "beş";
break;
case 6:
sonuc = sonuc + "altı";
break;
case 7:
sonuc = sonuc + "yedi";
break;
case 8:
sonuc = sonuc + "sekiz";
break;
case 9:
sonuc = sonuc + "dokuz";
break;
}
}
label1.Text = sonuc;
}
En başta "girilen" diye bir değişken tanımladık.Bu int tipindeki değişkene klavyeden girdiğimiz sayıyı atıyoruz:
girilen = Convert.ToInt32(textBox1.Text);
Burada bu değişkeni int olarak tanımladık çünkü bizim küsüratlı sayılarla işimiz yok ve int kullanmamız burada bize büyük avantaj sağlayacak.Bunu programın gidişatında anlayabilirsiniz.
if (girilen <= 0 || girilen >= 1000)
MessageBox.Show("Lütfen 0 ile 1000 arasında bir sayı giriniz", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
Bu iki satıda girilen değerlerin kontrolünü yapıyoruz.0 ile 1000 arasındaki sayıları kabul ediyoruz sadece.Eğer bu koşula uymayan bir durum varsa messagebox nesnemiz çalışıyor.Messagebox'ın içine girilen ilk ifade göstermek isteğimiz uyarı mesajı ikinci ifade mesaj başlığımız üçüncüsü kullanılan button dördüncüsü ise messagebox içerisinde kullandığımız icon.Messagebox'ın birçok şekilde kullanımı vardır.
if (girilen > 99)
{
yuzler = girilen / 100;
if (girilen - (yuzler * 100) == 0) goto ifSonu;
onlar = (girilen - (yuzler * 100)) / 10;
birler = girilen - ((yuzler * 100) + (onlar * 10));
}
Girilen sayı üç basamaklı ise yukarıdaki bu kod parçacığı çalışacaktır.Örnek olarak 115 sayısını ele alalım.Bu 3 basamaklı bir sayı olduğu için burada işleme sokuyoruz.Bu sayıyı 100'e böldüğümüzde 1.15 çıkıyor.Ama biz değişken tiplerimizi int olarak belirttiğimiz için bunun sadece tam kısmını alıyoruz.Int olarak tanımlamamızın avatajı burada.yuzler=1 oldu.İkinci kısımda aynı şekilde onlar=1 diğerinde ise birler=5 çıkıyor.Buradaki mantık sayıyı tamamen parçalamak.Basamaklarına ayırdık ki daha kolay bir şekilde yazıya dökebilelim. if (girilen - (yuzler * 100) == 0) goto ifSonu; Bu cümlenin anlamı şudur.Girdiğimiz sayı düzse yani 100 200 300 gibi sayılarsa başka hiçbir işlem yapmadan goto ile gösterilen yere dallanıyor.Burada ifsonu diye bir etiket tanımlamışız.Eğer sayı böyle gelirse bütün işlemleri durdurup etiketin olduğu yerden devam ediyor.Bunu da programın bütününe bakarsanız göreceksiniz.
else if (girilen > 9)
{
onlar = girilen / 10;
birler = girilen - (onlar * 10);
}
Bu kısımda da aynı şekilde eğer 2 basamaklı bir sayı girilirse basamaklara bölüyoruz.
else
birler = girilen;
Zaten girilen tek basamaklı bir sayı ise bölmeye gerek yok direk birler değişkenimizin içine atıyoruz.
Son kısımda sayımızı basamaklara böldükten sonra herbir sayıya denk gelen yazılara isim veriyoruz. yuzler=1 ise bunun yazı karşılığı yüz olacaktır.Önemli nokta basamaklarımız 0 dan büyük ise isim verme olayı gerçekleşecektir.(if (onlar > 0))
Şart gerçekleştikten sonra switch case yapısıyla değişkenimizin hangi değerde olduğunu buluyoruz ve string tipindeki sonuc değişkenimizin içerisine ne yazması gerektiğini atıyoruz.Diğer yerlerdede aynısını yapıyoruz.Bu kısımda stiring ifadeleri toplamış oluyoruz. sonuc="yüz" ise sonuc=sonuc+"elli" dersek sonucu yazdığımız zaman "yüzelli" şeklinde olacaktır.En sonunda zaten label'a sonuc değişkenimizi atayıp olayı bitiriyoruz.
23 Kasım 2011 Çarşamba
21 Kasım 2011 Pazartesi
C# Hesap Makinesi(Basit)
Merhaba arkadaşlar.Bu yazımda c#'ta basit bir hesap makinesi nasıl yapılır onu anlatacağım.Çok basit bir program yazacağımız için bu yazının yeni başlayanlar için iyi olacağını düşünüyorum.
İlk olarak aşağıdaki formu hazırlayalım
Programımızın nasıl çalıştığından bahselim biraz.Formumuzda 3 adet Textbox 4 adet radiobutton 1 adet checkbox ve 1 adet button var.Sayı 1 ve sayı 2 kısmına rakam girip işlem seçiniz menüsünden seçtiğimiz işleme göre sonuç üretiyoruz.Eğer "Dialogta göster" checkbox'ı seçiliyse sonucu bir mesaj penceresiyle göstereceğiz.Eğer seçili değilse Textbox içerisinde göstereceğiz.Program çalıştıktan sonraki görüntü aşağıdaki gibi olacaktır.
Eğer checkbox seçili olursa butona bastığımızda görüntü aşağıdaki gibi olacaktır.
Radiobutton ile checkbox arasında büyük fark vardır.Formda 3 adet checkbox olduğunu düşünürsek hepsini bağımsız bir şekilde seçebiliriz.Ama radiobutton'da ise tek bir tanesini seçme şansımız vardır.Yani kullanıcıya sadece verdiğimiz seçeneklerden bir tanesi seçme şansı veriyoruz.Girdiğimiz iki değeri radiobutton'da seçilen değere göre işleme sokuyoruz ve ve sonucun nasıl gösterileceğini seçiyoruz.Tabiki bunların hepsini button'nun click olayına yazıyoruz.Kodlar aşağıdaki gibi olacak.
Arkadaşlar formu hazırladıktan sonra sağdaki properties kısmından nesne isimlerini değiştirmek işinizi kolaylaştıracaktır.Bu örnek nesnelerin adı ilk geldiği gibi değil.Mantıklı isimler vermeye çalıştım.Böyle yapmak nesneler çok olduğunda hangi nesne ne işe yarıyordu ne yapıyordu anlamamızı kolaylaştıracaktır.Programımızın kod bölümünü anlatayım biraz.
Button'un click olayına yazdığımızı daha önce söyledik.Bütün olaylar butona tıklanınca gerçekleşiyor.İlk olarak toplam diye bir double değişken tanımladık.Burada int olarak değilde double tanımlamamızın nedeni bölme işleminde sonucun küsüratlı olma ihtimali.Int olarak tanımlasaydık küsüratı göremezdik.
ikinci kısımda if (r_topla.Checked == true) bu ifadelerle hangi radiobutton'un seçili olduğunu bulmaya çalışıyoruz.Örnek r_topla seçeneği seçili ise onun altındaki kod parçacığı çalışacaktır.Bu if kontrollerini yaptıktan sonra içerisine hangi fonksiyonda ne çalışması gerekiyorsa o işlemi yaptırıyoruz.Textboxları convert ettikten sonra toplam değişkenin içine atıyoruz.Bu kod çalıştıktan sonra toplam değişkenimizin içi radioButton'un seçilmesine göre değer alacaktır.
Son kısımda ise toplam değişkenini yazdırmak kalıyor.Yani sonucu.Burada dikkat edilmesi gereken nokta checkbox seçilimi değil mi ?Eğer seçiliyse yani cb_isaret.Checked == true ise Messagebox ile ekrana gösterecek sonucu.Eğer seçili değilse textbox'a yazacak sonucu.MessageBox.Show("Sonuc :"+toplam.ToString(),"Hesap Makinesi"); bu fonksiyonla message olarak ekrana gösterebiliyoruz.Değilse txt_sonuc.Text = toplam.ToString(); bu kodla Textbox'a yazacak.
Son olarak radiobuttonlardan birinin forma açılırken seçili gelmesini istiyorsak formun load kısmına şu kodu yazdık : r_topla.Checked = true;
Bu yazımız bu kadar arkadaşlar.Umarım işinize yarar.Sorularınız olursa cevaplandırabilirim.
İlk olarak aşağıdaki formu hazırlayalım
Programımızın nasıl çalıştığından bahselim biraz.Formumuzda 3 adet Textbox 4 adet radiobutton 1 adet checkbox ve 1 adet button var.Sayı 1 ve sayı 2 kısmına rakam girip işlem seçiniz menüsünden seçtiğimiz işleme göre sonuç üretiyoruz.Eğer "Dialogta göster" checkbox'ı seçiliyse sonucu bir mesaj penceresiyle göstereceğiz.Eğer seçili değilse Textbox içerisinde göstereceğiz.Program çalıştıktan sonraki görüntü aşağıdaki gibi olacaktır.
Eğer checkbox seçili olursa butona bastığımızda görüntü aşağıdaki gibi olacaktır.
Radiobutton ile checkbox arasında büyük fark vardır.Formda 3 adet checkbox olduğunu düşünürsek hepsini bağımsız bir şekilde seçebiliriz.Ama radiobutton'da ise tek bir tanesini seçme şansımız vardır.Yani kullanıcıya sadece verdiğimiz seçeneklerden bir tanesi seçme şansı veriyoruz.Girdiğimiz iki değeri radiobutton'da seçilen değere göre işleme sokuyoruz ve ve sonucun nasıl gösterileceğini seçiyoruz.Tabiki bunların hepsini button'nun click olayına yazıyoruz.Kodlar aşağıdaki gibi olacak.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace hesap_makinesi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double toplam;
private void button1_Click(object sender, EventArgs e)
{
if (r_topla.Checked == true)
{
toplam = Convert.ToInt32(txt_ilk.Text) + Convert.ToInt32(txt_ikinci.Text);
}
else if (r_cikar.Checked==true)
{
toplam = Convert.ToInt32(txt_ilk.Text) - Convert.ToInt32(txt_ikinci.Text);
}
else if (r_carp.Checked==true)
{
toplam = Convert.ToInt32(txt_ilk.Text) * Convert.ToInt32(txt_ikinci.Text);
}
else if (r_bol.Checked==true)
{
toplam = Convert.ToDouble(txt_ilk.Text) / Convert.ToDouble(txt_ikinci.Text);
}
if (cb_isaret.Checked == true)
{
MessageBox.Show("Sonuc :"+toplam.ToString(),"Hesap Makinesi");
}
else
{
txt_sonuc.Text = toplam.ToString();
}
}
private void Form1_Load(object sender, EventArgs e)
{
r_topla.Checked = true;
}
}
}
Arkadaşlar formu hazırladıktan sonra sağdaki properties kısmından nesne isimlerini değiştirmek işinizi kolaylaştıracaktır.Bu örnek nesnelerin adı ilk geldiği gibi değil.Mantıklı isimler vermeye çalıştım.Böyle yapmak nesneler çok olduğunda hangi nesne ne işe yarıyordu ne yapıyordu anlamamızı kolaylaştıracaktır.Programımızın kod bölümünü anlatayım biraz.
Button'un click olayına yazdığımızı daha önce söyledik.Bütün olaylar butona tıklanınca gerçekleşiyor.İlk olarak toplam diye bir double değişken tanımladık.Burada int olarak değilde double tanımlamamızın nedeni bölme işleminde sonucun küsüratlı olma ihtimali.Int olarak tanımlasaydık küsüratı göremezdik.
ikinci kısımda if (r_topla.Checked == true) bu ifadelerle hangi radiobutton'un seçili olduğunu bulmaya çalışıyoruz.Örnek r_topla seçeneği seçili ise onun altındaki kod parçacığı çalışacaktır.Bu if kontrollerini yaptıktan sonra içerisine hangi fonksiyonda ne çalışması gerekiyorsa o işlemi yaptırıyoruz.Textboxları convert ettikten sonra toplam değişkenin içine atıyoruz.Bu kod çalıştıktan sonra toplam değişkenimizin içi radioButton'un seçilmesine göre değer alacaktır.
Son kısımda ise toplam değişkenini yazdırmak kalıyor.Yani sonucu.Burada dikkat edilmesi gereken nokta checkbox seçilimi değil mi ?Eğer seçiliyse yani cb_isaret.Checked == true ise Messagebox ile ekrana gösterecek sonucu.Eğer seçili değilse textbox'a yazacak sonucu.MessageBox.Show("Sonuc :"+toplam.ToString(),"Hesap Makinesi"); bu fonksiyonla message olarak ekrana gösterebiliyoruz.Değilse txt_sonuc.Text = toplam.ToString(); bu kodla Textbox'a yazacak.
Son olarak radiobuttonlardan birinin forma açılırken seçili gelmesini istiyorsak formun load kısmına şu kodu yazdık : r_topla.Checked = true;
Bu yazımız bu kadar arkadaşlar.Umarım işinize yarar.Sorularınız olursa cevaplandırabilirim.
Kaydol:
Kayıtlar (Atom)