IhsanErdem

Ihsan Erdem - blogRuby: Okunabilirlik ve Gücün Buluşma Noktası

Title Image

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.