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

Ruby günlüğü - gün 11

Ruby'de if, elsif, else, unless gibi pek çok kontrol yapısı bulunmaktadır. Bu yazıda kontrol yapılarına ilişkin bazı örnekler gösterceğim.

Ruby'de if ve unless koşulu

Tek satır için basit bir örnek:

yas = 23
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" if yas < 24

Multiple satır için basit bir örnek :

yas = 23
if yas < 23
  puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk"
end

unless şart ifadesi ise if'in tam tersidir. Diğer dillerden aşina olabileceğiniz if not'ın Ruby'de ki karşılığıdır. Kullanımı if ile aynı mantıktadır.

yas = 23
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" unless yas > 23

Farklı durumlar için if ve unless'i birlikte kullanabiliriz :

yas = 24
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" unless yas > 23
puts "Afiyet bal seker olsun" if yas >= 24

Aynı işlemi else ile daha kolayca yaptırabilirdik:

yas = 24
if yas < 23
  puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk"
else
  puts "Afiyet bal seker olsun"
end

Ruby'de '?' koşulu

Bu ifadeyi kısatma olarak düşünebiliriz. Ruby kodu yazarken bu ve benzeri pek çok kısaltma ifadesinden sıkça yararlanılır. Bu gibi kısaltma ifadeleri bazı durumlarda kod okunurluğunu arttırdığı için de tercih edilebilirler.

yas = 24
x = yas < 30 ? "cocuksun" : "yetiskinsin"
puts "Sen bir " + x

Bu kod parçasının yapacağı iş oldukça açık. Bunu kısaltma olmadan yazmak için if, else ve end ifadelerinden oluşan bir yapı kurmalıydık. ? kullanımı şöyle not edilebilir:

<şart ifadesi> ? <şart doğru ise"> : <şart yanlış ise>

Daha farklı bir örnek:

yas = 24
puts "Sen bir " + (yas < 30 ? "cocuksun" : "yetiskinsin")

Daha klasik bir tarz ile:

yas = 24
x = "cocuksun" if yas < 30
x = "yetiskinsin" unless yas < 30
puts "Sen bir " + x

Ruby'de elsif koşulu

Burada uzun uzun, if, elsif ve else mantığına değinmeyeceğim, bunu harici bir kaynaktan okuyup öğrenebilirsiniz. Bütün diller için bu mantık hemen hemen aynıdır. "Programlama dillerine giriş" ders kaynaklarında veya beginner seviye herhangi bir programlama kitabında detaylı bilgiler bulabilirsiniz.

elsif için çoklu şartlı ifade örneği şu şekilde olabilir:

browser = "firefox"
isletimsistemi = "ubuntu"
hata = "tarayicinizda bir sorun var" if browser == "internet explorer"
hata = "işletim sisteminizde bir sorun var" elsif isletimsistemi == "windows"
hata = "sisteminiz uyumlu" elsif browser == "firefox" && isletimsistemi == "ubuntu"
puts hata

Bir kontrol bloğu içerisinde (end ile bitene dek) bir çok elsif ifadesini art arda kullanabilirsiniz, ancak sadece bir tane if ve else kullanabilirsiniz.

Örneğin şu kod doğru çalışmayacaktır:

browser = "internet explorer"
isletimsistemi = "windows"
if browser == "internet explorer"
  puts "hata 1"
if isletimsistemi == "windows"
  puts "hata 2"
end

Çünkü iki tane if kullandık ancak kontrol bloğunda tek bir tane end var. Bu konud çalışması için bir tane daha end girerek, ikinci kontrol bloğunu oluşturmuş olmalıyız.

browser = "internet explorer"
isletimsistemi = "windows"
if browser == "internet explorer"
  puts "hata 1"
end
if isletimsistemi == "windows"
  puts "hata 2"
end

Bu kod çalıştırıldığında ekrana şunu basar:

hata 1
hata 2

elsif ve else durumları yalnızca if ile belirttiğimiz şartın yanlış dönmesi durumunda çalışırlar.

Yukarıdaki örneği elsif ile yapsaydık:

browser = "internet explorer"
isletimsistemi = "windows"
if browser == "internet explorer"
  puts "hata 1"
elsif isletimsistemi == "windows"
  puts "hata 2"
end

Alacağımız sonuç yalnızca hata 1 olacaktı.

Ruby'de case koşulu

case şartlı ifadesi daha anlaşılır ve okunaklı bir kod yazabilmek için oldukça kullanışlı. Bu ifade temel olarak belirtilen durumları kontrol eder, eşleşen varsa onun taşıdığı işlemi yapar, eşleşme yoksa else'e geçerek oradaki kodu işletir.

isletimsistemi = "ubuntu"
case isletimsistemi
when "windows"
  puts "onu da severiz"
when "windows mobile"
  puts "hmmmm. başarısız."
when "ubuntu"
  puts "open source"
else
  puts "bilemedik beyim"
end

Başka bir örnek:

yas = 28
case
when yas < 24
  puts "Yasiniz #{yas} ve 24 yasiniza tam #{24-yas} yil var"
when yas == 24
  puts "Yasiniz #{yas}. Rahat rahat alkol alabilirsiniz"
when yas > 24
  puts "Yasiniz #{yas} ve #{yas-24} yildir rahat rahat icebiliyorsunuz"
end

when yapılarını tek satırda şöyle işletebiliriz:

yas = 28
case
when yas < 24 then puts "Yasiniz #{yas} ve 24 yasiniza tam #{24-yas} yil var"
when yas == 24 then puts "Yasiniz #{yas}. Rahat rahat alkol alabilirsiniz"
when yas > 24 then puts "Yasiniz #{yas} ve #{yas-24} yildir rahat rahat icebiliyorsunuz"
end

then ifadesini kullanmadan ise şöyle yazabilirdik:

yas = 28
case
when yas < 24 : puts "Yasiniz #{yas} ve 24 yasiniza tam #{24-yas} yil var"
when yas == 24 : puts "Yasiniz #{yas}. Rahat rahat alkol alabilirsiniz"
when yas > 24 : puts "Yasiniz #{yas} ve #{yas-24} yildir rahat rahat icebiliyorsunuz"
end

Ruby'de while ve until koşulları

Ruby'de while ve until ile loop (döngü) işlemleri yapabiliriz.

yas = 28
while yas < 40
  puts yas
end

Bu bir sonsuz döngü örneğidir. Program boyunca yas değeri "28" olacağından devamlı olarak, ekrana "28" yazdırılacaktır. Bunu sonlu bir döngü haline getirelim:

yas = 28
while yas < 40
  puts yas += 2
end

until'de aynı İngilizce'de ki anlamıyla Ruby'de kullanılır:

yas = 28
until yas > 100
  puts yas
  yas *= 1.2
end

Bu örnek yas değişkeni 100 değerine ulaşana kadar, onu 1.2 ile çarparak ekrana yazdırır.

Başarılar.


Share this post!


Blog Comments powered by Disqus.