Birçok programlama dilinde programın akışı koşullu dallanmalar kullanılarak değiştirilebilir. Elbette Ruby’de de bu mümkündür. Bu tür dallanma işlemlerinde birşeyin doğruluğu ya da yanlışlığına göre programın gidişatına yön verilir.

Programın akışını kontrol etmek için birden fazla yöntem mevcut. Bunlar yazının başlığında da geçtiği üzere if, unless, ternary ve case. Şimdi sırasıyla bunların nasıl kullanıldığına bakarak örneklerle nasıl çalıştıklarını görelim.

if işlemi ve kullanım örneği

sayi = 3

if sayi==3
print "sayi 3e esit" #bu satır çalışacaktır
end

if sayi==5
print "sayi 5e esit" #bu satır çalışmayacaktır
end


Peki if işlemini tek satırda yapmak istiyorsanız ne yapmalısınız. Ruby’de bunu yapabilmek isteyeceğinizi de düşünmüşler. Bunun için then komutunu kullanmanız yeterli.

sayi = 3
if sayi == 3 then print "3e esit" end


if, elsif ve else işlemleri

Bir şartın doğru olmasının yanında yanlış olması da bizi ilgilendiriyorsa bu durumda else komutunu da kullanırız. Bir şartla ilgili birden fazla karşılaştırma yapmak istiyorsak da elsif komutu işimize yarayacaktır.

Örnek else işlemi:

sayi = 4
if sayi==3
print "sayi 3"
else
print "sayi 3 degil"
end
#burada sayımız 3 olmadığı için elseden sonraki print komutu çalışacaktır


Örnek elsif işlemi:

gun = 4
if gun==1
print "Pazartesi"
elsif gun==2
print "Sali"
elsif gun==3
print "Carsamba"
elsif gun==4
print "Persembe"
elsif gun==5
print "Cuma"
elsif gun==6
print "Cumartesi"
else
print "Pazar"
end
#ekrana -Persembe- yazdıracaktır


Son örneğimizde elsif ve else işlemini aynı anda kullandık.

unless işlemi

Unless işlemini if işleminin tersi gibi düşünebilirsiniz. If işleminde eğer şart doğruysa belirlediğimiz kod bloğu çalışıyordu. Unless işleminde ise şart yanlışsa belirlediğimiz kod bloğu çalışacaktır.

sayi = 3
unless sayi == 4
print "sayi 4 degil" #ekrana yazdıracaktır
end


“Peki unless işlemini tek satırda kullanabili miyiz?” diye soranlarınız olacaktır. Elbette if işleminde olduğu gibi unless işleminde de işlemi tek satırda yapmanız mümkündür.

sayi = 3
sayi==4 unless print "sayi 4 degil"
#sayımız 3 olduğundan print komutu çalışacaktır


ternary(kısa if) işlemi

Her ne kadar if işlemini tek satırda kullanabiliyor olsak da bazen tek satırda hem karşılaştırmayı yaptırıp hemde ekrana yazdırmak isteyebiliriz. Bu gibi durumlarda kısa if denilen ya da doğru adıyla ternary operatöründen yararlanabiliriz. Ternary operatörü çoğu programlama dilinde mevcuttur. Daha detaylı açıklama için buradaki yazımı inceleyebilirsiniz. Aşağıdaki kodlarda ternary işleminin Ruby’deki kullanımına örnektir.

sayi = 3
print sayi==3?"Sayi3e esit":"Sayi 3e esit degil"
#burada -Sayi 3e esit yazacaktır
sayi = 4
print sayi==3?"Sayi 3e esit":"Sayi 3e esit degil"
#burada -Sayi 3e esit degil yazacaktır


case işlemi

Yukarıda haftanın günlerinde olduğu gibi bir şarta bağlı birden fazla işlem için elsif kullanmıştık. Case işlemi işte buna alternatif olarak kullanabileceğimiz oldukça kullanışlı bir işlemdir. Case işleminin birden fazla kullanım şekli bulunmaktadır. Aşağıda da bu kullanım şekillerine ait örnekler yer almaktadır.

case ile haftanın günleri örneği 1:

gun = 5
case
when gun==1 then print "Pazartesi"
when gun==2 then print "Sali"
when gun==3 then print "Carsamba"
when gun==4 then print "Persembe"
when gun==5 then print "Cuma"
when gun==6 then print "Cumartesi"
when gun==7 then print "Pazar"
end
#ekrana -Cuma- yazacaktir


case ile haftanın günleri örneği 2:

gun = 2
case gun
when 1 then print "Pazartesi"
when 2 then print "Sali"
when 3 then print "Carsamba"
when 4 then print "Persembe"
when 5 then print "Cuma"
when 6 then print "Cumartesi"
when 7 then print "Pazar"
end
#ekrana -Sali- yazacaktir


Case işleminde karşılaştırma yaparken aralık belirtme işlemi de yapabilmekteyiz. Aşağıdaki örnekte hem aralık belirtme hemde else komutunu case ile nasıl yapabileceğimizi daha rahat görebilirsiniz.

case aralık ve else örneği:
sayi = 27
case sayi
when 0..20 then print "0-20 araliginda"
when 21..40 then print "21-40 araliginda"
when 41..60 then print "41-60 araliginda"
when 61..80 then print "61-80 araliginda"
when 81..100 then print "81-1000 araliginda"
else print "belirtilen aralikta degil"
end
#ekrana -21-40 araliginda- yazacaktır


Kaynak: Ruby’de Koşullu Dallanmalar(if, unless, ternary ve case)