Ruby ile yazdığım kodu nasıl daha iyi yaparım

merhaba arkadaşlar ben bugünlerde ruby öğrenmeye başladım ve şimdilik bu kodu yazabildim. bu kodu nasıl daha kısa yaparım veya ne gibi özellikler eklerim

while true # böylece bu olayları sonsuz bir döngü içine aldım
puts "yapacağın işlemi seç"
puts "[1] toplama"
puts "[2] çıkarma"
puts "[3] çarpma"
puts "[4] bölme"
puts "[5] üçgenin çevresini hesapla"
puts "[6] karenin çevresini ve alanını hesapla"
puts "[7] dikdörtgenin çevresini veya alanını hesapla"
print "cevabın : " 
$cevap = gets.chomp
if $cevap == '1' 
    print 'birinci sayı : '
    $bir = gets.to_i
    print "ikinci sayı : "
    $iki = gets.to_i
    $toplam = ($bir + $iki).to_s
    puts "çıkan sonucunuz : "+$toplam
elsif $cevap == '2'
    print 'birinci sayı : '
    $bir = gets.to_i
    print "ikinci sayı : "
    $iki = gets.to_i
    $sonuç = ($bir - $iki).to_s
    puts "çıkan sonucunuz : "+$sonuç
elsif $cevap == '3'
    print 'birinci sayı : '
    $bir = gets.to_i
    print "ikinci sayı : "
    $iki = gets.to_i
    $sonuç = ($bir * $iki).to_s
    puts "çıkan sonucunuz : "+$sonuç
elsif $cevap == '4'
    print 'birinci sayı : '
    $bir = gets.to_i
    print "ikinci sayı : "
    $iki = gets.to_i
    $sonuç = ($bir / $iki).to_s
    puts "çıkan sonucunuz : "+$sonuç
elsif $cevap == '5'
    print "birinci kenarı : "
    $kenarx = gets.to_i
    print "ikinci kenarı : "
    $kenary = gets.to_i
    print "üçüncü kenarı : "
    $kenarü = gets.to_i
    $toplam = ($kenarx + $kenary + $kenarü).to_s
    puts "üçgeninizin çevresi : "+$toplam
elsif $cevap == '6'
    puts "birini seç"
    puts "[1] karenin alanını hesapla"
    puts "[2] karenin çevresini hesapla"
    print "cevabınız : "
    $cevap = gets.chomp
    if $cevap == '1'
        print "karenin bir kenarı : "
        $kenar = gets.to_i
        $sonuç = ($kenar * $kenar).to_s 
        puts "sonucunuz : "+$sonuç
    elsif $cevap == '2'
        print "karenin bir kenarı : "
        $kenar =  gets.to_i
        $sonuç = ($kenar * 4).to_s
        puts "sonucunuz : "+$sonuç
    else
        puts "maalesef girdiğiniz sayı geçerli değil"
    end
elsif $cevap == '7'
    puts "birini seç"
    puts "[1] dikdörtgenin alanını hesapla"
    puts "[2] dikdörtgenin çevresini hesapla"
    print "cevabınız  : "
    $cevap = gets.chomp
    if $cevap == '1'
        print "küçük kenar : "
        $küçük_kenar = gets.to_i
        print "büyük kenar : "
        $büyük_kenar = gets.to_i
        $sonuç = ($büyük_kenar * $küçük_kenar).to_s
        puts "sonucunuz : "+$sonuç
    elsif $cevap == '2'
        print "küçük kenar : "
        $küçük_kenar = gets.to_i
        print "büyük kenar : "
        $büyük_kenar = gets.to_i
        $toplam = $büyük_kenar + $küçük_kenar
        $sonuç = ($toplam * 2).to_s
        puts "sonucunuz : "+$sonuç
    else
        puts "bu numara geçerli değil"
    end
end 
end

evet arkadaşlar yardımlarınızı bekliyorum

Her satırı tek tek yazmak yerine \n kullanın.

Bu global elemanı döngü içinde kullanmanıza gerek yok.

.to_i ile int’e dönüştürüp işlem yapın.

Bu bir fikir verebilir.

arr = [1,2,3,4,5,6,7]
def topla
	print "Birinici sayı:"
	bir = gets.to_i

	print "İkinci sayı:"
	iki = gets.to_i
end
def çıkar
	print "Birinci:"
	bir  = gets.to_i

	print "İkinci sayı:"
	iki = gets.to_i 
end
while true
	puts """Yapacağınız işlemi seçin:
	[1] toplama
	[2] çıkarma
	[3] çarpma
	[4] bölme
	[5] üçgen çevresi
	[6] kare çevresi ve alanı
	[7] dikdörtgen çevresi ve alanı"""
	cevap = gets.to_i
	arr.each do |i|
		if i == cevap
			==begin
			buralar kodları yazarsınız
			==end
		end
	end
end
	

sizin kodlarınızdaki algoritma çok daha iyi tamam teşekkür ederim

haklısınız tamam öyle yapacağım

to_i ile int yapınca orada
if $cevap == 1
(toplama yapıyor)
end
eğer chomp ile yaparsam zaten gets kullanıcıdan gelen değeri str olarak alıyor ama ruby o değerin sonuna \n koyuyor ben chomp ile onu kaldırıyorum yani arada pek fark yok chomp ile şöyle oluyor

chomp :
if $cevap == ‘2’
(çıkarma yapıyor)
end

derken ne demek istediniz
bu arada siz verdiğiniz kodlarda girintiye çok dikkat etmişsiniz ama rubyde girintileme yok onun yerine end kullanılıyor değil mi

Okunurluğu arttırıyor.

Eğer bu($) işareti bir değişkenin başına koyarsanı o glabal bir değişken olur ve sınıf,fönksiyondan değiştirilebilir.

$a = 10

def arttır(i)
	$a += i
end

arttır(2)
puts $a