Ihsan Erdem - blogRuby: Okunabilirlik ve Gücün Buluşma Noktası
İçerik
Kısaca Ruby
Ruby 1993 yılında Yukihiro Matz tarafından geliştirilen, okunabilirlik, geliştirici mutluluğu ve geliştirme hızına odaklı tam anlamıyla nesne yönelimli olanbir yazılım dilidir.
Ruby tam anlamlı bir nesne yönelimli programlama dilidir, bundan kast ettiğiniz nedir diye sorarsanız da Ruby dilinde her şey ama her şey bir nesnedir, en basit veri tipleri bile.
Değişkenler ve Basit Aritmetik Operatörler
Değişkenler bize yazılımımızdaki verilere isim verme kabiliyetini tanırlar. Değişkenleri üzerinde bir etiket bulunan klasörler olarak düşünebilirsiniz. Bu klasörlerin içlerinde barındırdııkları veriler var ve klasörün ismi ise bizlere klasörün içerisindeki veri hakkında bilgi verir.
Ruby dinamik tipli bir yazılım dilidir. Yani tanımladığımız değişkenlere belirli bir tip atamamıza gerek yoktur.
Ruby dilinde değişkenler snake_case ile adlandırılınır örnek vermek gerekirse:
bu_bir_örnek
11 + 1
22 - 1
32 * 2
410 / 5
52**2
68 % 2
710 % 4
817 / 5.to_f
915 / 3.to_f
1018 / 5.to_i
116.even?
127.odd?
138.odd?
14"Welcome" + "to" + "my blog"
15"Welcome" << "to" << "my blog"
16"Welcome".concat("to").concat("my blog")
17"hello"[0]
18name = "burak".capitalize
19"Hello #{name}"
20name.upcase
21
Input Ve Output
Ruby'de kullanıcıdan bir girdi almak için "gets" metodu, ekrana bir çıktı yazdırmak için ise "puts" metodunu kullanırız.
1name = gets.chomp ##Ihsan
2puts "Hello, my name is #{name}!" ##Hello my name is Ihsan
3
Koşul İfadeleri
Yazılımınızda bulunan bir kod bloğunun sadece belirli koşullar altında gerçekleşmesini istiyorsanız koşul ifadeleri kullanmanız gerekir.
Ruby dilinde if, elsif, else ve unless koşul ifadeleri kullanılınır. Koşul doğruysa ilgili kod bloğu çalıştırılır, diğerleri atlanır.
If & Elsif
If ifadeleri ile, belirttiğimiz koşul sağlandığı sürece kod bloğu çalıştırılınır, eğer koşulun sağlanmadığı durumlarda farklı bir kod bloğunun çalıştırılmasını istiyorsak else ifadesini kullanırız.
Elsif ifadesini ise ilk koşulumuza ek olarak farklı bir koşulun doğru olup olmadığını değerlendirmek istiyorsak kullanırız.
1brain_cooked = true
2if brain_cooked == true
3 puts "time to play games"
4 puts "lets go"
5end
6puts "inline conditional statement" if 2 < 3
7
8if brain_cooked == true
9 puts "time to play games"
10 puts "lets go"
11elsif brain_cooked == "maybe"
12 puts "study a bit more"
13else
14 puts "time to study"
15end
16puts "time to study" if brain_cooked != true
17puts "study a bit more" if brain_cooked == "maybe" && time_to_study == true
18puts "study a bit more" if brain_cooked == "maybe" || brain_cooked == false
19
20
Case İfadeleri
Ruby'de case ifadeleri, birden fazla koşul ifadesini düzenlibir şekilde yönetmek için kullanılır. İlk eşleşen koşulun sonucu döndürülür ve işlem durur. Else ifadesi ile varsayılan değer belirlenir.
1grade = gets.chomp
2case grade
3when "A"
4 puts "Lets go brother"
5when "B"
6 puts "Ehhh ok"
7when "C"
8 puts "You can do better!"
9else
10 puts "You need to study more!"
11end
12puts
Unless İfadesi
Unless ifadesiif ifadesine zıt bir şekilde çalışır. Koşul sağlanmadığı sürece kod bloğu yürütülür.
1grade = gets.chomp
2unless age > 25
3 puts "If you dont have your priorities set straight you might be in trouble"
4end
5puts age > 25 ? "You are good to go" : "You might be in trouble"
6
Ternary Operatörü
Ternary operatörü sayesinde bir if-else ifadesini tek bir satırda yazabiliriz.
1siralama= 1
2cevap= siralama!=1 ? "Tebrikler Birinci oldunuz" : "Maalesef birinci olamadiniz"
3puts cevap
Boolean İfadeler
Eğer karşılaştırılan ifadeler eşit == ise truth döndürülünür
15 == 5 ##true
25 == 6 ##false
Eğer karşılaştırılan ifadeler eşit değil != ise false döndürülünür
15 != 6 ##true
25 != 5 ##false
Eğer operatörün solundaki ifade sağındaki ifadeden büyük > ise true döndürülünür
16 > 5 ##true
25 > 6 ##false
Eğer operatörün solundaki ifade sağındaki ifadeden küçük < ise true döndürülünür
16 < 7 ##true
26 < 5 ##false
Eğer operatörün solundaki ifade sağındaki ifadeye eşit veya daha büyük ise >= ise true döndürülünür.
<=(küçük eşit) ile ise operatörün solundaki ifade sağındaki ifadeden daha küçük veya eşit ise true döndürülünür.
1## >= büyük eşit
26 >= 5 ##true
36 >= 6 ##true
45 >= 4 ##false
5
6## <= küçük eşit
75 <= 6 ##true
86 <= 6 ##true
93 <= 4 ##false
Eğer operatörün iki tarafındaki ifade true
döndürüyor ise &&(ve/AND)operatörü sonuç olarak true
döndürür.
1##ev_yeni true
2#vakit_az true
3
4if ev_yeni && vakit_az
5 puts "tadilata gerek yok"
6end
7
Eğer operatörün herhangi tarafındaki bir ifade true
döndürüyor ise | |(veya/OR) operatörü sonuç olarak true
döndürür.
1##ev_yeni true
2#para_az true
3
4if ev_yeni && para_az
5 puts "para çok istediğini yap"
6end
7
Döngüler
Loop
Loop döngüsü ile sonsuz döngüler oluşturabiliriz ve döngülerimizi durdurmak istediğimiz zaman ise break ifadesini kullanırız . Break ifadesini bir koşul ile kullanmak mümkündür.
1i=0
2loop do
3 puts "i is {i}"
4 i += 1
5 break if i == 10
6end
While
While döngüsüile döngülerimiz belirtilen koşul sağlandığı sürece çalışırlar.
1i=0
2while i < 10 do
3 puts "i is {i}"
4 i += 1
5end
Until
Until döngüsü ile döngümüz belirlenen koşul sağlanana kadar çalışmaya devam eder.
1i=0
2until i <=10 do
3 puts "i is {i}"
4 i += 1
5end
For
For döngüleriyle belirli bir aralık için veya koşul sağlanana dek döngümüz çalışır
1for i in 0..10 do
2 puts "i is {i}"
3 i += 1
4end
5
Times
Times döngüsü ile döngümüz belirttiğimiz sayı kadar döner/çalışır.
15.times do |number|
2 puts "1'den 5'e kadar sayıyorum #{number}"
3end
Arrays
Diziler, birden fazla veriyi tek bir değişkende saklamamızı sağlayan veri yapılarıdır. Bir dizinin içerisindeki her elemanın bir sıra numarası vardır.
1num_array = [1, 2, 3, 4, 5]
2str_array = ["Ben", "bir", "insanım"]
3
Bir dizideki elemanlara o elemanın sıra numarasını girerek erişim sağlayabiliriz
1str_array = ["Ben", "bir", "insanım"]
2
3str_array[0] #=> "Ben"
4str_array[1] #=> "bir"
5str_array[2] #=> "insanım"
6
Dizilerin ilk ve son elemanlarına "first" ve "last" methodlarıyla erişebiliriz.
Aynı şekilde "push" ve "<<" methodlarıyla diziye eleman ekleyebiliriz.
"pop" methodu ile dizinin en sonki elemanını çıkarabiliriz.
"unshift" methodu ile dizinin başına eleman ekleyip "shift" methodu ile en baştaki elemanı silebiliriz.
Hashler
Hashler anahtar-değer çiftleri şeklinde veri saklamamıza olanak sağlayan bir veri yapısıdır. Dizilerin aksine hashler belirli bir sıraya göre sıralanmazlar.