Ruby Programlama Dili
5 Mayıs 2014 Pazartesi
Ruby Hızlı Bakış
Evet Ruby programlama hakkında hızlı bir tur atmaya ne dersiniz,Pınar Yanardağ'ın hazırlamış olduğu slayt show ile hızlı bir ruby turu yapalım.
Slayt show'un sahibi olan pinguar'a teşekkürlerimi sunarım.
Ruby Programlama-Koşullu Dallanmalar
Ruby Programlama-Koşullu Dallanmalar (if, unless, ternary ve case)
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.
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.
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
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.
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.
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
Etiketler:
rubyde dallanmalar,
rubyde else işlemi,
rubyde elsif işlemi,
rubyde if işlemi,
rubyde kısa if işlemi,
rubyde kontrol yapıları,
rubyde ternary operatörü,
rubyde unless işlemi
10 Mart 2013 Pazar
Ruby Programlama - Kontrol Yapıları
if ve unless
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ıkladır.
yas = 23
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" unless yas > 23
Farklı durumlar için 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
? ifadesi
Bu ifadeyi kısatma olarak düşünebiliriz. Fakat okuduğum kaynaklar bunun pek kullanılan bir ifade olmadığını yazıyordu, bu yüzden daha public projeler üzerinde çalışacaksak klasik metodlara yakın durmamız iyi olacak gibi duruyor.
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 bir üstte ki örnekte ki yöntemi kullanmalı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
elsif
Burada yazarken “elsif” yerine “elif” yazarsam bilin ki Python’dan gelen bir alışkanlıktır, siz onu düzelterek “elsif” yapın.
Keşke bir standart olsa değil mi? “elseif”, “else if”, “elif”, “elsif”… Hangi dilde, hangi ifadeydi, devamlı karışmazdı.
Burada uzun uzun, if-elsif-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.
if için çoklu şartlı ifade :
browser = "firefox"
isletimsistemi = "ubuntu"
hata = "tarayicinizda bir sorun var" if browser == "internet explorer"
hata = "işletim sisteminizde bir sorun var" if isletimsistemi == "windows"
hata = "sisteminiz uyumlu" if browser == "firefox" && isletimsistemi == "ubuntu"
puts hata
* Bir kontrol bloğu içerisinde (end ile bitene dek) birçok “elsif” ifadesini ardarda kullanabilirsiniz, ancak sadece 1 tane if ve else kullanabilirsiniz.
Örneğin şu kod çalışmayacaktır :
browser = "internet explorer"
isletimsistemi = "windows"
if browser == "internet explorer"
puts "hata 1"
if isletimsistemi == "windows"
puts "hata 2"
end
Çünkü 2 tane “if” kullandık ancak kontrol bloğunda tek bir tane “end” var. Çalışması için 1 tane daha end girerek, 2.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
Sonuc :
hata 1
hata 2
* elsif ve else durumları yalnızca “if” ile belirttiğimiz şartın yanlış dönmesi durumunda çalışırlar.
Yukarıda ki ö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ı.
case
“case” şartlı ifadesi daha anlaşılır ve okunaklı bir kod yazabilmek için oldukça kullanışlı. Temel olarak durumları kontrol eder, eşleşen varsa onun taşıdığı işlemi yapar, eşleşme yoksa “else”e geçerek orada ki kodu işletir.
isletimsistemi = "ubuntu"
case isletimsistemi
when "windows"
puts "onu da severiz"
when "windows mobile"
puts "ooo zenginiz demek"
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 işletmek :
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” kullanmadan :
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
while ve until
“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, harhangi bir şekilde :
yas = 28
while yas < 40
puts yas += 2
end
until, İ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.
Yazı : Mustafa Serhat Dündar'a Aittir.
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ıkladır.
yas = 23
puts "Yasiniz yeni yasalara gore alkol almak icin cok kucuk" unless yas > 23
Farklı durumlar için 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
? ifadesi
Bu ifadeyi kısatma olarak düşünebiliriz. Fakat okuduğum kaynaklar bunun pek kullanılan bir ifade olmadığını yazıyordu, bu yüzden daha public projeler üzerinde çalışacaksak klasik metodlara yakın durmamız iyi olacak gibi duruyor.
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 bir üstte ki örnekte ki yöntemi kullanmalı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
elsif
Burada yazarken “elsif” yerine “elif” yazarsam bilin ki Python’dan gelen bir alışkanlıktır, siz onu düzelterek “elsif” yapın.
Keşke bir standart olsa değil mi? “elseif”, “else if”, “elif”, “elsif”… Hangi dilde, hangi ifadeydi, devamlı karışmazdı.
Burada uzun uzun, if-elsif-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.
if için çoklu şartlı ifade :
browser = "firefox"
isletimsistemi = "ubuntu"
hata = "tarayicinizda bir sorun var" if browser == "internet explorer"
hata = "işletim sisteminizde bir sorun var" if isletimsistemi == "windows"
hata = "sisteminiz uyumlu" if browser == "firefox" && isletimsistemi == "ubuntu"
puts hata
* Bir kontrol bloğu içerisinde (end ile bitene dek) birçok “elsif” ifadesini ardarda kullanabilirsiniz, ancak sadece 1 tane if ve else kullanabilirsiniz.
Örneğin şu kod çalışmayacaktır :
browser = "internet explorer"
isletimsistemi = "windows"
if browser == "internet explorer"
puts "hata 1"
if isletimsistemi == "windows"
puts "hata 2"
end
Çünkü 2 tane “if” kullandık ancak kontrol bloğunda tek bir tane “end” var. Çalışması için 1 tane daha end girerek, 2.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
Sonuc :
hata 1
hata 2
* elsif ve else durumları yalnızca “if” ile belirttiğimiz şartın yanlış dönmesi durumunda çalışırlar.
Yukarıda ki ö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ı.
case
“case” şartlı ifadesi daha anlaşılır ve okunaklı bir kod yazabilmek için oldukça kullanışlı. Temel olarak durumları kontrol eder, eşleşen varsa onun taşıdığı işlemi yapar, eşleşme yoksa “else”e geçerek orada ki kodu işletir.
isletimsistemi = "ubuntu"
case isletimsistemi
when "windows"
puts "onu da severiz"
when "windows mobile"
puts "ooo zenginiz demek"
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 işletmek :
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” kullanmadan :
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
while ve until
“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, harhangi bir şekilde :
yas = 28
while yas < 40
puts yas += 2
end
until, İ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.
Yazı : Mustafa Serhat Dündar'a Aittir.
6 Şubat 2013 Çarşamba
Ruby Programlama Dersleri 1
Ruby Programlama dili nedir?
Ruby, 1990'ların ortalarında Japonya'da ortaya çıkmış, nesne yönelimli bir programlama dilidir.C++, Java gibi diğer birçok dilin aksine * her şey, ama * her şey birer nesnedir(int, float da dahil).Herşeyin nesne olması gibi birçok özelliğini ilk dinamik nesne yönelimli programlama dili olan Smalltalk'tan almıştır(dinamiklik konusuna umarım daha sonra gelicez) ve perl'le de syntax açısından çeşitli benzerlikleri bulunmaktadır.Derlenen değil de, yorumlanan bir dil olduğu için hız konusunda bi miktar yavaş kalır ama 1.9 sürümünden itibaren gelen bytecode compiler ile bir miktar hızlanmıştır.
Merhaba Dünya!
**Bunu yazmadan geçmek mümkün değil**
Perl'ün "Bir işi yapmanın birden fazla yolu var" anlayışına (bir yere kadar) sahip olan ruby'de tabi ki ekrana "Merhaba Dünya!" yazdırmanın birçok yolu var.
Kod: 1
print "Merhaba Dünya!"
Kod: 2
puts "Merhaba Dunya!"
Kod: 3
p "Merhaba Dunya!"
Kod: 4
$stdout << "Merhaba Dunya!"
Bu kadar yolun farkı ne diyorsanız, print ve $stdout << yazdırılan şeyin sonuna yeni satır karakteri eklemezken, puts ekliyor. p ise raw bir şekilde ekrana yazdırdığından dolayı bu örnekte başına ve sonuna tırnak işareti koyuyor.
Nesneler ve Mesajlar
Daha önce de bahsettiğim gibi ruby'de * her şey bir nesnedir ve bunlara çeşitli mesajlar gönderilebilir ("mesaj gönderme", diğer birçok dilde metod çağırma olarak geçer").Örneğin;
Kod:
-3.abs
satırında Fixnum sınıfına ait bir nesneye "abs" mesajını gönderiyoruz, bu Fixnum sınıfının abs fonksiyonunu ve bu sayının mutlak değeri olan 3 ü elde ediyoruz.Ruby'de bir fonksiyon çağırırken eğer argument yollamıyorsak paranteze ihtiyaç yoktur, dolayısıyla sanki bir değişkene erişiyormuş gibi fonksiyon çağırabiliriz.
Kod:
3 + 5=> 8
bu satırda da aslında 3 nesnesine "+" mesajını 5 argümanıyla yolluyoruz ve 8 sonucunu alıyoruz.Yani operatörler de aslında mesaj gönderiyor
Bir başka örnek;
Kod:
a = [1,3,true,["asd",3.5]].size
=> 4 # Bu "#" işareti ruby'de yorum karakteridir ve o satırın sonuna kadar geçerlidir.
#Ayrıca => işareti ile belirttiğim şey yukarıdaki işlemin sonucudur.
Ruby'de dynamic typing sayesinde değişken tanımlamaya gerek yoktur.Direkt olarak bir değişkene atama yaparsanız o değişken tanımlanmış olur.Ayrıca yine bu nedenle listelerde veya fonksiyon argümanlarında sınıf kısıtlaması yoktur.
Bir örnek daha;
Kod:
3.times { puts "ubuntu" }
Bu kod, ekrana 3 kez "ubuntu" yazdırır.Burada 3'e times mesajını bir blokla yolluyoruz.Bir blok, bir ruby kodu parçasıdır ve küme parantezleri yada do...end anahtar sözcükleriyle sınırlandırılır.Bloklar, güvenin bana, gerçekten çok yararlıdırlar.
Kontrol Yapıları
ruby'de de if ler diğer bir çok dildeki gibidir
örneğin;
Kod:
if 3 + 5 == 8
puts "heyoo!!"
end
ekrana tahmin edebileceğiniz gibi "heyoo!!'" yazdırır.C syntaxlı dillerden farklı olarak if teki ifadenin etrafına parantez koymak gereksizdir(ki döngü vs. lerde de gerek yoktur).Diğer bir çok kod bloğu gibi if ler de "end" ile bitirilir.
ayrıca, "unless" keywordü de "if not" anlamına gelir ve eğer verilen ifade yanlışsa o bloktaki kodu çalıştırır
if vs. için bir diğer kullanım şekli de;
"ifade if koşul" biçimindedir.Örneğin;
Kod:
puts "heyoo!! if 3 + 5 == 8
bir üstteki if ile aynı sonucu verecektir.Bu yöntem unless, while gibi şeyler için de kullanılabilir
Döngüler
Ruby'de de while döngüsü bulunur ve diğer dillerdeki while lara benzer.Sadece bir örnekle geçiştireceğim bunu;
Kod:
a = 1
b = 5
c = 3
while a < b
c += 1
a += 1
end
c
=> 7
burada pek görülecek * bir şey yok
ruby'de for döngüsü de bulunur ancak aslında bu döngüye hiç ihtiyaç yoktur.Çünkü for döngüsünün 2 temel kullanım amacını karşılayan farklı yöntemler vardır.bir şeyi belli bir kez yapmak için int'lerin "times" metodu kullanılır ki yukarıda bahsedip örnek göstermiştim.Ama hadi yeni bir özellik göstererek bir örnek daha veriyorum;
Kod:
sonuc = 0
5.times do |i|
sonuc += i
end
sonuc
=> 10
burada, bu blokta "|" karakterleri arasında verdiğimiz i, bu bloğun argümanıdır ve "times" metodu her dönüşünde 0'dan başlayarak bir sayı döndürür bu argümana ancak bu argümanın oraya konulması zorunlu değildir.
for döngüsünün 2. kullanım amacı olan array'lerin her elemanıyla *bir şeyler yapma ise, Array vb. sınıflarda bulunan "each" metoduyla halledilir.Örneğin;
Kod:
arr = [ 1,2,3,4,5,6,7 ]
arr.each do |a|
p a**2
end
bu kod, arr arrayinin tüm elemanlarının karesini ekrana yazdırır(** operatörü kuvvet alma işlemi için kullanılır). each metodu bir blok alır ve argüman olarak o arrayin o sıradaki elemanını verir.
20 Ekim 2012 Cumartesi
Mobil Programlama
Mobil uygulamalar için ruby programlama dilini kullanmak için çeşitli örneklerin bulunduğu bir site ile karşılaştım geçenlerde sitede java programlama mobil uygulama yazılımı için java teknolojileri kullanma,android uygulamaları için mobil programlama,ios yani iphone ve ipad uygulamaları geliştirmek için kullanılan objective-C dili ile ilğili bir çok kod örneği ve ipucu verilmiş mobil programlama ile ilğili çalışmalarınız var ise bu siteyi ziyaret etmenizi tavsiye ederim.
9 Temmuz 2012 Pazartesi
Ruby Programlamaya Giriş
- Öncelikle sisteminizde Ruby'nin kurulu olup olmadığına bakalım. Kabuk istemcisinden (burada "$" ile temsil edilmiştir o yüzden $ işaretini yazmanıza gerek yok) aşağıdaki kodu yazalım:
$ ruby -v
(-v ruby'nin sürüm bilgilerini yazmasını sağlar), ve sonra da Enter tuşuna basalım. Eğer sisteminizde Ruby kuruluysa aşağıdakine benzer bir satır görmeniz gerekecek:ruby 1.6.6 (2001-12-26) [i586-linux]
Eğer Ruby yüklü değilse, sistem yöneticinizle görüşebilir ya da kendiniz kurabilirsiniz.Artık Ruby ile oynamaya başlayabiliriz. -e seçeneği ile Ruby yazılımlarını doğrudan komut satırına yerleştirebilirsiniz:$ ruby -e 'print "merhaba dunya\n"' merhaba dunya
Daha uzlaşımsal olarak bir Ruby yazılımı bir dosyada saklanabilir.$ cat > test.rb print "merhaba dunya\n" ^D $ cat test.rb print "merhaba dunya\n" $ ruby test.rb merhaba dunya
^D, control-D'yi ifade eder. Yukarıdakiler sadece UNIX ve türevleri için geçerlidir. Eğer DOS kullanıyorsanız şunu deneyin:C:\ruby> copy con: test.rb print "merhaba dunya\n" ^Z C:\ruby> type test.rb print "merhaba dunya\n" C:\ruby> ruby test.rb merhaba dunya
Daha kapsamlı yazılımlar geliştirirken, muhtemelen gerçek bir metin düzenleyiciye ihtiyaç duyacaksınız!Bazen şaşırtıcı biçimde karmaşık ve kullanışlı yazılımlar komut satırına sığabilecek minyatür yazılımlarla yapılabilmektedir. Örneğin aşağıdaki yazılım, çalışılan dizindeki tüm C kaynak ve başlık dosyalarında bulunan foo'ları bar ile değiştirir ve orjinal dosyaların .bak uzantısıyla yedeklerini alır.% ruby -i.bak -pe 'sub "foo", "bar"' *.[ch]
Bu yazılım UNIX'in cat komutu gibi çalışır (ama cat'ten daha yavaş çalışır):$ ruby -pe 0 file
Ruby Nedir?
- Ruby 'hızlı ve kolay', nesneye yönelik yazılım geliştirmeye yarayan yorumlanan bir betik dilidir.Peki bu ne anlama gelmektedir?Yorumlanan betik dili:
- Doğrudan işletim sistemi çağrılarını yapabilme yeteneği
- Güçlü dizge işlemleri ve düzenli ifadeler
- Geliştirme sırasına anında geribesleme
Kolay ve hızlı:- Değişken bildirimleri gerekmez
- Değişken türleri yoktur
- Sözdizimi basit ve tutarlıdır
- Bellek yönetimi özdevinimlidir
Nesneye dayalı olmak:- Herşey birer nesnedir
- Sınıflar, kalıtım, yöntemler, vs.
- Tekil yöntemler
- Modüllerle çalışılabilir
- Yineleyiciler ve sonlandırıcılar
Ayrıca:- Çoklu duyarlıklı tamsayılar
- Olağandışılık işleme modeli
- Özdevimli yükleme
- Evreler
Yukardaki kavramların bazılarına yabancıysanız, endişelenmeyin, okumaya devam edin. Ruby dili çabuk ve kolay öğrenilir.
Kaydol:
Kayıtlar (Atom)