Ruby ile Denemeler Bölüm 1

Ruby kılavuzunun Türkçe çevirisini yaparken sıra Tcl/Tk gelmiştiki dayanamadım ve biraz kafa dağıtma amaçlı bir hesap makinesi yazma işine girişeyim dedim. Öyle çok gelişmiş birşey olmayacak ve basit 4 işlem yapabilen bir program olmasını istiyordum. Birden kodlar takır takır dökülmeye başladı.

require 'tk'
def geri
c=$e.value.length
k=$e.value.split("")
son2=k[0..c-2]
son1=son2.join("")
$e.value=son1.to_i
end

def topla
$is=1
$say=$e.value
$e.value=""
end

def fark
$is=2
$say=$e.value
$e.value=""
end

def carpma
$is=3
$say=$e.value
$e.value=""
end

def bolme
$is=4
$say=$e.value
$e.value=""
end

def hesap

 if $is ==1

 	$sonuc=$say.to_i+$e.value.to_i

 	$e.value=""

 	$e.value=$sonuc

 	puts $sonuc

 end

 if $is==2

 	$sonuc=$say.to_i-$e.value.to_i

 	$e.value=""

 	$e.value=$sonuc

 end

 if $is ==3

 	$sonuc=$say.to_i*$e.value.to_i

 	$e.value=""

 	$e.value=$sonuc

 end

 if $is==4

 	$sonuc=$say.to_f/$e.value.to_f

 	$e.value=""

 	$e.value=$sonuc

 end

end

$e=TkEntry.new.pack
frame4=TkFrame.new.pack('side'=>'left','fill'=>'y')
frame5=TkFrame.new.pack('side'=>'right','fill'=>'y')
frame1=TkFrame.new(frame4).pack('side'=>'left')
frame2=TkFrame.new(frame5).pack('side'=>'left')
frame3=TkFrame.new(frame4).pack('side'=>'right')
TkButton.new(frame1,'text'=>'1','command'=>proc{$e.value=$e.value+"1"}).pack
TkButton.new(frame1,'text'=>'2','command'=>proc{$e.value=$e.value+"2"}).pack
TkButton.new(frame1,'text'=>'3','command'=>proc{$e.value=$e.value+"3"}).pack
TkButton.new(frame1,'text'=>'4','command'=>proc{$e.value=$e.value+"4"}).pack
TkButton.new(frame3,'text'=>'5','command'=>proc{$e.value=$e.value+"5"}).pack
TkButton.new(frame3,'text'=>'6','command'=>proc{$e.value=$e.value+"6"}).pack
TkButton.new(frame3,'text'=>'7','command'=>proc{$e.value=$e.value+"7"}).pack
TkButton.new(frame3,'text'=>'8','command'=>proc{$e.value=$e.value+"8"}).pack
TkButton.new(frame2,'text'=>'9','command'=>proc{$e.value=$e.value+"9"}).pack
TkButton.new(framef,'text'=>'0','command'=>proc{$e.value=$e.value+"0"}).pack
TkButton.new(frame2,'text'=>'+','command'=>proc{topla}).pack
TkButton.new(frame2,'text'=>'-','command'=>proc{fark}).pack
TkButton.new(frame5,'text'=>'*','command'=>proc{carpma}).pack
TkButton.new(frame5,'text'=>'/','command'=>proc{bolme}).pack
TkButton.new(frame5,'text'=>'=','command'=>proc{hesap}).pack
TkButton.new(frame5,'text'=>'<--','command'=>proc{geri}).pack

Tk.mainloop

şimdilik basit 4 işlem yapmakta tabi bu işlemlerde sadece bölme sırasında ondalık kısımları kullanıyor diğerleri hep tam sayı olarak veriliyor. Buna ek olarak bir basamak geri almak için <– tuşu koydum böylece yanlış yazılma anında geri alabiliriz.

Benim aklımda ilk olarak ekranı temizleme buranı CE var, tabi bilimsek ifadeler de eklenebilir aslında ama Frame içerisinde tam oturtamadım butonları zor geldi açıkcası. Bir de entry için kullanılan bileşenin sadece veri çıkışı yapmak için kullanılması da bir yenilik olabilir(şimdi aklıma geldi gerçi smile.gif )
Başlaması benden oldu, geliştirmesi de sizlerden olsun artık. :)

~ yazan: tutkudalmaz Ocak 2, 2007.

Yorum Yapın