HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Ruby günlüğü - gün 6

Şu aralar günlüğü biraz boşlamıştım açıkcası, farklı projeler içerisine girip Ruby'yi biraz unuttum, ama bugün bulduğum mis gibi bir kitapla tekrar kaldığım yerden devam ediyorum. Her programcının elinin altında bulunması gereken türden bir düzenli ifadeler kitabı.

En son değişkenler ve bazı koşullu ifadeler hakkında biraz yazmıştım. Şimdi sıra basit döngülerde.

Döngüler

Eğer programımız aynı işlemi tekrarlar halinde birden çok yapacaksa, bunu manuel olarak yapmamız oldukça meşakkatli olacaktır. Bunun çözümü ise döngü kurmaktan geçer.

Ruby'nin İngilizce bildiğiniz söylediğim konuda bir örnek yazmıştım;

5.times do puts "serhat" end

Bu kod ekrana 5 kez "serhat" yazdırıp, işlemini tamamlıyordu. Burada do ve end kullanmak yerine süslü parantezler kullanabiliriz. Genelde Ruby programcıları tek satırlık ifadeler için do ve end kullanmazlar, bunun yerine süslü parantezler kullanırlar;

5.times { puts "serhat" }

Bu yazım tarzı kodun daha okunur olmasını sağlamakta. Ruby'de döngü kurmal için iterator ismini verdiğimiz bir yapı bulunmakta. Iterator'a Türkçe'de "tekrarlayıcı" diyebiliriz veya bu anlamı doğuracak herhangi bir şey.

Şu ana kadar FixNum sınıfının bir metodu olan times'ı görmüştük. Şimdi upto, downto ve step gibi metodları yani fonksiyonları göreceğiz.

1.upto(5) { puts "serhat" }
10.downto(3) { puts "serhat" }
0.step(50, 5) { puts "serhat" }

Aslında kod çok açık, hatta şu noktada meraklı bir programcı adayı, hemen benim yaptığım gibi IDE'yi açıp bi sonuç görmek ister. O anda farklı birşeyle karşılaşır!

ruby-and-iterators
1.upto(5) { puts "serhat" }

1'den 5'e kadar sayar ve her sayışta ekrana bir tane "serhat" yazdırır. Yani toplamda 5 tane "serhat" yazdırılır.

10.downto(3) { puts "serhat" }

10'dan 3'e kadar geri geri sayar ve her sayışta ekrana bir tane "serhat" yazdırır. Yani toplamda 8 tane "serhat" yazdırılır.

0.step(50, 5) { puts "serhat" }

0'dan 50'ye 5'er 5'er sayar ve her sayışta ekrana bir tane "serhat" yazdırır. Yani toplamda 11 tane "serhat" yazdırılır. Peki ya ekrana, sayma işleminde geçilen adımları bastırmak istersek? Aslında demin IDE'nin bize söylediği tam olarak buydu:

ruby-and-iterators-2
1.upto(5) { |x| puts x }

Şimdi ekrana 1,2,3,4,5 basılacaktır. Bu kod parçasını daha açıklayıcı olacak şekilde şöyle de yazabilirdik:

1.upto(5) do |x|
  puts x
end

Küsürlü Sayılar (Floats)

Burada ki birçok şey Python programcılarına tanıdık gelecek.

puts 10/3
> 3

Sonuç 3 çıktı çünkü Ruby için integer/integer = integer'dır.

puts 10,0/3
3,333333333335

Çünkü float/integer = float'tır. Benzer şekilde integer/float = float ve float/float = float'tır.

Şimdi rakamları kendimiz girersek sorun yok, bir şekilde integer veya float olarak belirtebiliyoruz, fakat rakamları kullanıcıdan alacak olursak sorun olacaktır. O halde ne yapmak gerekir?

Integer'lar için to_f isimli bir metodumuz var, Fixnum sınıfının bir built-in metodu. Tam tersi olan Float'lar için ise to_i isminde bir metodumuz var, o da Fixnum'un bir metodu.

x = 10
y = 3
puts x.to_f / y.to_f

Bugünlük bu kadar. Başarılar.


Share this post!


Blog Comments powered by Disqus.