Duruma göre bazen bir metni 10 kez yazdırmak isteyebilirsiniz. Bunu “print” komutu ile yapabilirsiniz ancak döngü kurarak yapmak daha basit olacaktır. Yapmanız gereken tek şey yazmak istediğiniz kod bloğuna belli bir sayıda aynı işlemi yapacak bir döngü kurmak. Ruby dilinde kaç çeşit döngü var ve bu döngüleri nasıl kurabiliriz onları incelemeye başlayalım:
WHILE DÖNGÜSÜ
While döngüsü yapı olarak çok basittir. İstenilen şart doğru(true) bir değere sahip olduğu sürece tekrar tekrar kodu çalıştırır.
Sözdizimi:
while şart [do] # do tercihe bağlı kod bloğu end
Örnek bir kaynak kod ile While döngüsünün çalışma mantığını görmeye çalışalım.Mesela 1 den 10 a kadar sayıları sıra ile yazdıran basit bir işlem yapalım.
x = 1 while x <= 10 print "#{x} " x += 1 end
Kodumuzun çıktısı şu şekilde olacaktır.
#=> 1 2 3 4 5 6 7 8 9 10
Kodumuz mevcut sayıyı yazdırdıktan sonra “x += 1” komutu ile sayımızı bir artırıp bir sonraki adıma geçiyor. Sayımız son adımda tekrar artırılıp 11 olduğunda while döngüsünün şartını sağlamadığı için döngüye girmez ve döngü sonlandırılır.
Yukarıdaki kodu daha kısa ve farklı bir şekilde de yazabiliriz.
x = 0 x +=1 while x < 10 print "x " # 10'u da yazdırır.
C ve JAVA dillerindeki do-while dongü yapısı ile aynı şekilde çalışan yapının Ruby’ deki karşılığı şu şekildedir. Bu yapıda “begin” komutunu kullanırız.Yukarıdaki kodu tekrar ele alalım.
x = 0 begin x += 1 end while x < 10 print "#{x} "
Kodumuz döngüye girmeden önce bir kez istenilen durumu çalıştıracak ve daha sonra döngünün şartına uyup uymadığını kontrol edecektir.
UNTIL DÖNGÜSÜ
Until döngüsünü mantıken while döngüsünün tersi olarak düşünebiliriz. While da şartın doğruluğu sağlandığı takdirde döngümüz çalışırken until de tam tersi durumda yani şartımız yanlış(false) değer aldığında döngü çalışır.
Sözdizimi:
until şart [do] # do tercihe bağlı kod bloğu end
While da kullandığımız örnek kodu until ile tekrar yazalım bakalım nasıl olacak:
x = 1 until x > 10 print "#{x} " x += 1 end
Yazdığımız kodun çıktısı şu şekilde olacaktır.
#=> 1 2 3 4 5 6 7 8 9 10
Görüldüğü gibi aynı sonucu aldık. Ancak bu sefer döngü şartımız bahsettiğimiz gibi yanlış(false) değer alıyor ve bu sebepten döngü çalıştırıyor. x değerimiz en son adımda 11 değerini aldığında şartımız doğru(true) değer verdiğinden döngü de sonlandırılıyor.
Until döngüsünü de daha kısa ve farklı şekilde yazabilmemiz mümkündür.
Sözdizimi:
kod bloğu until şart VEYA kod bloğu end until şart
Aynı örneği bu durum içinde kullanalım ve kullanışını görelim.
x = 0 x +=1 until x > 10 print "#{x} " #11 i de yazdırır.
FOR DÖNGÜSÜ
Diğer yazılım dillerinde olduğu gibi, Ruby de for döngüsüne sahiptir.
Söz dizimi:
for degisken in ifade [do] kod bloğu end
– While ve until gibi “do” tercihe bağlıdır.
– For döngüsü, each döngüsüne benzer
– For döngüsünün sonuç değeri, break kullanılmadığı sürece
yinelenen değerdir.
– Ruby geliştiricileri for döngüsünü çok nadiren tercih ederler.
For döngüsü ile örnek bir kod yazıp çıktısını inceleyelim.
for x in (1..4) do # do tercihe bağlı print "#{x} " end
#=> 1 2 3 4
Çıktımızda for döngüsü, kendisine şart olarak verilen bir aralıktaki değerleri esas alarak çalışır.
BREAK DURUMU
Ruby’ de döngümüzü istenilen değerden önce sonlandırmak için break durumunu kullanırız. Ayrıca bazı durumlarda döngümüzün sonsuz döngüye girmesini engellemek amacı ile de kullanılır.
Sözdizimi:
break if Şart
Break kullanımı bir kaynak kod üzerinde görelim
x = 0 while true print "#{x} " x += 1 break if x > 5 end
Kodumuzun çıktısı şu şekilde olacaktır.
#=> 1 2 3 4 5
Döngümüzün çalışma şartı true olduğundan normalde sonsuz bir döngü olması beklenirken break şartı olarak x > 5 değerini girdiğimiz için x değerimiz 6 olduğunda döngü sonlandırılacaktır.
NEXT DURUMU
Bir döngü esnasında yinelemenin mevcut durumunun kalanını es geçmek için next anahtar sözcüğünü kullanırız.
For döngüsü ile örnek bir kullanımını inceleyelim
for x in 0..6 if x > 3 next end puts "X değeri : #{x}" end
Bu örnek kodun çıktısını da görelim
#=> X değeri : 0
X değeri : 1
X değeri : 2
X değeri : 3