Ruby ile Hesap Makinesi Yapımı (Metinsel İçerik)

Ruby programlama dili günümüzdeki en hızlı gelişim gösteren ve yaygınlığını da aynı oranda sağlayan bir dildir. Ruby ile terminal üzerinden işleyen programlar geliştirebileceğiniz gibi rails ve sinatra gibi popüler web frameworkleri sayesinde web uygulamaları da geliştirebilirsiniz. Sadece bu kadar ile de kalmayıp konumuzun oluşmasına da destek sağlayan Shoes ile masaüstü uygulamalar da geliştirebilirsiniz.


Shoes, Ruby için geliştirilmiş bir grafik arayüz kütüphanesidir içerisinde kullanıma hazır element tanımlamaları bulunmaktadır. Bunları kullanarak kolaylıkla işlevsel programlar üretebiliriz. Shoes sayesinde bir kez Ruby ile programlayarak birden fazla platformda uygulamamızı çalıştırabiliriz. Ruby yükleyebildiğimiz tüm platformlarda bunu gerçekleştirebilmemiz mümkün. (Windows, Mac Os ve Linux )

Ruby kurulum aşamasını gerçekleştirdiğimizi varsayarak ilk işlemimize başlıyoruz. Shoes gem pakedini yüklemek için aşağıda belirttiğimiz komutu terminal vasıtası ile işletiyoruz.

gem install green_shoes

Kurulum işlemi 20-25 saniye içerisinde bitecektir. Geldik şimdi programımızı yazma kısmına. Favori metin editörünüz ile hesap_makines.rb isminde bir dosya oluşturun ve içerisine aşağıda belirttiğimiz kodları uygulayın.

require 'green_shoes'

Shoes.app(title: "Hesap Makinesi", width: 200, height: 240) do
end

Kodlarımızıa kaydettikten sonra terminalden dosyamızı kaydettiğimiz dizine geçiş sağlayalım ve programımızı çalıştırmak için ruby komutu ile porgramımızı çalıştıralım.

ruby hesap_makinesi.rb

Görselde de görüldüğü üzere uygulamamız başarı ile çalıştır ve belirttiğimiz boyutlarda ekrana geldi. Kodları açmaya pek gerek duymuyorum çünkü okunduğundan anlaşılacak türden bir yazımı mevcut buda Ruby’nin bir kolaylığı 🙂

Gelelim işimizin devam eden kısmına şimdi ekranımızda 3 farklı alan olacak rakamların görüntüleneceği kısım, temizleme butonunun bulunacağı alan ve tüm rakamların bulunduğu butonlarla birlikte 4 işlemi gerçekleştireceğimiz butonların olduğu kısım. Şimdi do ve end bloklarının arasına bu kısımları oluşturmak için kodumuzu yazalım.

flow width: 200, height: 240 do
   flow width: 0.7, height: 0.2 do
     background rgb(0, 157, 228)
   end

   flow width: 0.3, height: 0.2 do
   end

   flow width: 1.0, height: 0.8 do
     background rgb(139, 206, 236)
   end
 end

Kodlarımızı ekledikten sonra tekrar terminal vasıtası ile uygulamamızı çalıştıralım ve görüntüye göz atalım.

Görüntüde yer alan koyu mavi alanda butonlara tıkladığımızda ve işlem sonucunda ekrana yazdırılacak rakamlar görüntülenecek. Sağ üst alanda bulunan beyaz kısımda ise temizleme işlemini gerçekleştirecek butonumuz yer alacak. Alt kısımda bulunan büyük açık mavi alanda ise butonlarımız yer alacak. Durmayalım kodlayalım ;

 sayi_alani = nil
 @sayi = 0
 flow width: 200, height: 240 do
 flow width: 0.7, height: 0.2 do
 background rgb(0, 157, 228)
 sayi_alani = para @sayi, margin: 10
 end

 flow width: 0.3, height: 0.2 do
 button 'Sil', width: 1.0, height: 1.0 do
 end
 end

 flow width: 1.0, height: 0.8 do
 background rgb(139, 206, 236)
 end
 end

Sırası ile yaptığımız işlem sayı alanı isimli bir değişken tanımlayarak bu alanı değersiz kılmak oldu. Akabininde bir instance değişken tanımladık. Yani dinamik bir değişken. Bu şekilde bir değişkenin değeri sürekli değişeceğini belirtmektedir.

Programımız başarılı bir şekilde çalışıyor ve biz mutluyuz 🙂 Ancak henüz bitmiş değil sıra geldi geri kalan kısmı tamamlamaya.

require 'green_shoes'

Shoes.app(title: "Hesap Makinesi", width: 200, height: 240) do

  sayi_alani = nil
  @sayi = 0
  flow width: 200, height: 240 do
    flow width: 0.7, height: 0.2 do
      background rgb(0, 157, 228)
      sayi_alani = para @sayi, margin: 10
    end

    flow width: 0.3, height: 0.2 do
      button 'Sil', width: 1.0, height: 1.0 do
      end
    end

    flow width: 1.0, height: 0.8 do
      background rgb(139, 206, 236)
      %w(7 8 9 + 4 5 6 - 1 2 3 / 0 . = *).each do |btn|
        button btn, width: 50, height: 50 do
        end
      end
    end
  end


end

Kodumuzun son halinde eklediğimiz kısım içerisinde 1 den 9 a kadar tüm sayıları ve 4 işlemi each ile buton içerisine aktararak döndürdük. Bakalım ekran görüntümüze.

Görüntü gayet yerinde istediğimiz sonuca ulaşmış durumdayız şimdi bu butonları çalıştırmak gerekli bunuda yaptığımızda programımız tam manası ile çalışacak ve biz Ruby ile geliştirilmiş bir hesap makinesine sahip olacağız.

require 'green_shoes'

Shoes.app(title: "Hesap Makinesi", width: 200, height: 240) do

  sayi_alani = nil
  @sayi = 0
  flow width: 200, height: 240 do
    flow width: 0.7, height: 0.2 do
      background rgb(0, 157, 228)
      sayi_alani = para @sayi, margin: 10
    end

    flow width: 0.3, height: 0.2 do
      button 'Sil', width: 1.0, height: 1.0 do
        @sayi = 0
        sayi_alani.replace(@sayi)
      end
    end

    flow width: 1.0, height: 0.8 do
      background rgb(139, 206, 236)
      %w(7 8 9 + 4 5 6 - 1 2 3 / 0 . = *).each do |btn|
        button btn, width: 50, height: 50 do

          case btn
          when /[0-9]/
            @sayi = @sayi.to_i * 10 + btn.to_i

          when '='
            @sayi = @previous.send(@op, @sayi)
          else
            @previous, @sayi = @sayi, nil
            @op = btn
        end
        sayi_alani.replace(@sayi)   

        end
      end
    end
  end


end

Son eklemelerimizle birlikte hesap makinemiz artık çalışıyor. Mantık gayet basit aslında bloklar arasında eklenen farklar göz önünde. Daha detaylı bilgi almak için ve aklınıza takılan noktalarla ilgili soru sormak için yorum kısmını kullanabilirsiniz.

 

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir