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
)
Başlaması benden oldu, geliştirmesi de sizlerden olsun artık.



Yorum Yapın