25 Haziran 2012 Pazartesi

Methodlar


Ruby'de methodlar fonksiyonlarla çok benzerlerdir.Ruby çalışırken en çok şaşırdığım şey bir methodun aynı anda birden fazla değer return edebiliyor olmasıydı.Okulda gördüğüm C'de bir fonksiyon en fazla bir değer return edebilirdi(işaretçi ya da başka birşey kullanmadan).O zamanlar küçüktüm programlama dillerinin genel bir standartı var hepsi için sanardım.Sonra anladım ki yokmuş :) .Örnek kodda görelim :
----------------------------------------------------------------------------------------------------------------------------------

def test
   a = 4
   b = 3
return a,b
end
puts test
----------------------------------------------------------------------------------------------------------------------------------
Methodların bir başka tanımlanma biçimide şu şekilde :
----------------------------------------------------------------------------------------------------------------------------------

def ornek(*parametreler)
   for i in 0...parametreler.length
      puts " *  #{parametreler[i]}"
   end
end
ornek 12,"Ebru","Ali","Aysechan"
ornek 3,8
----------------------------------------------------------------------------------------------------------------------------------
Burada methoda kac tane parametre alıcağını methodu çağırdığımız yerde belirtiyoruz.Parametre sayısının değişebildiğini belirtmek içinde * işaretini kullanıyoruz.

Methodlarda Alias Tanımlama

Alias mahlastır aslında bir bakıma.Fonksiyonun adına istedigin başka bir isim verip öylede çağırabilirsin demek.
----------------------------------------------------------------------------------------------------------------------------------
def oldmtd
  "oldmtd 1. fonks"
end
alias newmtd oldmtd
puts oldmtd;
puts newmtd
----------------------------------------------------------------------------------------------------------------------------------
Burada oldmtd adında bir method tanımladık.Sonra ona newmtd diye başka bir isim daha verdik.Artık aynı işi yapan farklı iki isim var.Ruby kodları yukarıdan aşağıya yorumlayarak okuduğu için methodlardan önce aliasları tanımlayamayız.Bu arada Ruby nin ; yazsakta yazmasakta hata vermediğini söylemiş olsam iyi olur :)

Ruby Sınıf Yapısı


Ruby nesneye yönelik bir programlama dili oldugu için şu özellikleri içerir
  • Data Encapsulation
  • Data Abstraction
  • Polymorphism
  • İnheritance

Ruby'de Sınıflarda Kullanılan Değişkenler

  • Yerel Değişkenler : Yerel değişkenlerin yaşam alanı bulundukları methodlar içerisinde geçerlidir.Yerel değikenler küçük harfle ya da _ karakteriyle başlamak zorundadır.
  • Örnek Değişkenler : @ işaretiyle tanımlanırlar.Bir sınıftaki methodda kullanılan instance(örnek) değişkene aynı sınıfın başka bir methodunda erişebiliriz.
  • Sınıf Değişkenleri : Bir sınıfın içinde tanımladığımız bir değişkene sınıfın içindeki her yerden erişebiliriz.
  • Global Değişkenler : Global değişkenleri başına $ ifadesini getirerek tanımlarız.Global değişkenlere kodun her yerinden ulaşmak mümkündür.
----------------------------------------------------------------------------------
$global = 12
class Sinif
        def ogrenci_bilgisi(no,isim)
                @isim_ = isim
                @no_ = no
        end
        def goster
                puts "OGrenci isim : #{@isim_}"
                puts "Ogrenci no : #{@no_}"
                print "Global degiskenin degeri : #{$global} \n"
        end
end
nesne = Sinif.new
nesne.ogrenci_bilgisi(123,"Ali")
nesne.goster
----------------------------------------------------------------------------------
Kodumuzu test.rb diye kaydedip çalıştıralım alacağımız çıktı şöyle olucaktır :
ebru@ubuntu:~$ ruby test.rb 
Ogrenci isim : Ali
Ogrenci no : 123
Global degiskenin degeri : 12 


24 Haziran 2012 Pazar

Ruby'e Giriş

Ruby Yukihiro Matsumoto tarafından yazılmıştır. Nesneye yönelik yorumlanabilen bir dildir.Söz dizimi Perl ve Python ile benzerlik gösterir.Ancak Ruby'de Python'daki gibi girintilerin önemi yoktur.Bu yuzden yazımı Python'a göre daha rahattır. (En azından bana göre öyle:)

Ruby'de Kodlar Nasıl Çalıştırılır

Kodlarımızı herhangi bir metin editöründe yazıp .rb uzantısıyla kaydedelim. Sonra konsoldan
ruby dosya_adi.rb 
yazıp calıstırabilriz.Bir diger secenek ise konsolda irb yazıp oradan da çalıştırabiliriz.

Nesneyim,Nesnesin,Nesne :)

Ruby'de herşey bir nesnedir.Örneğin 5 sayısı bile bir nesnedir.Eğer irb de 2.class yazarsak alacagımız sonuc Fixnum ' dur.İşte sayılarda bu Fixnum sınıfına ait nesnelerdir.

Hello World

İlk kodumuzu yazalım
---------------------------------
puts "Batsın bu dunya :)"
---------------------------------
ile en temel kodumuzu yazdık.

Yorum Satırları

--------------------------
#yorum satırı ya da    
------------------------     
=begin                          
yorum icin                
blok olusturduk          
=end                          
--------------------------
şeklinde yorum ekleyebiliriz.

İf-Else yapısı

Ruby'de else-if yapıları " end " lerle sonlandırılmak zorundadır.Bu nedenle Python 'daki gibi insanı çileden çıkaran 5 arşın içerden yazdın 3 karış beriden yazdın problemi yoktur :) #buna Python'da cok #sinir oluyorumda  
----------------------------------------------------------------------------------------------------------------------------------
a = 3
b=1
if a == 3 
     puts a
else if a == 4
      puts a
else
   puts "a degeri 3 ya da 4 degildir"
end
----------------------------------------------------------------------------------------------------------------------------------
Ruby'de if ' e benzeyen bir diger yapıda " unless " dir.Şu şekilde
----------------------------------------------------------------------------------------------------------------------------------

x = 1
unless x>2
        print "Merhaba Dunya\n"
end
----------------------------------------------------------------------------------------------------------------------------------
burada unless ifadesiyle x 2 den büyük değil mi diye bakıyoruz . Evet x 2 den büyük değil o zaman bloktaki işlemleri gerçekleştiriyoruz.

While Döngüsü

While bir ifade sağlandığı müddetçe blokların arasındaki işlemler yapılır.
----------------------------------------------------------------------------------------------------------------------------------
$i = 0
$sum = 0
while $i < 101
   $sum = $sum + $i
   $i = $i + 1
end
puts "Birden 100 e kadar olan sayıların toplamı : #{$sum} dır"
---------------------------------------------------------------------------------------------

For Döngüsü

For da ise yapılması gereken işin sayısı bellidir.
---------------------------------------------------------------------------------------------
for i in 1..10
    puts i
end
---------------------------------------------------------------------------------------------