Ruby Dersleri 1

Başlatan barış, 01 Ocak 2010 - 19:05:18

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

barış

Ruby 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.

print "Merhaba Dünya!"
puts "Merhaba Dunya!"
p "Merhaba Dunya!"
$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;
-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.

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;
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;
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;
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;
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;
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;
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;
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.

KAYNAK
Kendim okudum, anlatım tarzı oldukça hoşuma gitti ve paylaşmak istedim. Devamı gelecek...

sema

Alıntı yapılan: terrordrone - 01 Ocak 2010 - 19:05:18
Kendim okudum..

Yazıyı 'kendim okudum, kısmı bitirdi beni :D
17 yaşında... Aferin sana.. C'leri de öğren o zaman, anlattıklarına çok yakındır-lar..
susema

barış

Alıntı yapılan: semagkyz - 01 Ocak 2010 - 19:13:01
Alıntı yapılan: terrordrone - 01 Ocak 2010 - 19:05:18
Kendim okudum..

Yazıyı 'kendim okudum, kısmı bitirdi beni :D
17 yaşında... Aferin sana.. C'leri de öğren o zaman, anlattıklarına çok yakındır-lar..
C++ ve php biliyorum çat pat :D
C++ ile matematik programları yazmıştım. (Liseler için kredi hesaplama programı falan)

badhero

Kaynak da belirtseydin keşke. Nerden geliyor bu derenin suyu diye merak edenler olabilir.

barış

Alıntı yapılan: bethiro - 01 Ocak 2010 - 19:19:10
Kaynak da belirtseydin keşke. Nerden geliyor bu derenin suyu diye merak edenler olabilir.
Bende öyle düşündüm ama başka bir forum sitesinden taşıdım bunu. Reklam olmasın ?

sema


Reklam olmaz merak etme, olsa da iyi yönde olur.. Hem belki de alıntı yaptığın yerde sadece kaynak belirtilmek suretiyle izin veriliyordur, alıntıya.. Mantıklı olan da bu..

Tebrik ederim ayrıca..
susema

barış


heartsmagic

Bu platformda paylaşımına müsaade edilen kaynakları forum, site, kişi adı belirterek alıntı yapmak kesinlikle reklam değildir. Klasik forum zihniyetinden çok ama çok uzak bir yerdir bu platform.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

barış


badhero

Sana karşı söylediği bir şey değil bu. İçinden geldi söyledi. Arada olur bu forumda böyle şeyler. :)

barış

Biliyorum zaten beni azarlamak için demedi. Belki de onun için dedi. Gerçi azarlamak için dese de demese de ben anlamam gerekeni anladım =)

heartsmagic

Ne azarlaması, bilakis daha rahat davranasın diye söyledim :)
Zira bilirim bizim "çöp" forumlarda birisi bir başka yerden bağlantı verdiği zaman "Hop koçum, neden reklam yapıyorsun, YASAAAK" diyerek bir azarlama olur. Zihniyet bellidir: Arak yapacaksın, yazıyı cillop gibi o foruma aitmiş gibi kullanacaksın, birisi kaynak sorunca da "sana mı düştü kaynağı sormak, Google'dan bulduk" diyeceksin, es kazara kaynak vereni de reklam diye azarlayıp, gerekiyorsa (gerekmiyorsa da) yasaklayacaksın.

Uzağız, uzağız, çok uzağız bu zihniyete.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

sema


Alıntı yapılan: heartsmagic - 02 Ocak 2010 - 14:40:41
Uzağız, uzağız, çok uzağız bu zihniyete.

:D Uzağız uzağız..
susema

barış

ubuntu'da ruby derleyicisini calıstıramadım.
sudo apt-get install ruby dedim yükledim şimdi ruby diyorum bekliyo öyle calısmıyor :( napıcam.. (kirlilik olmasın die burda verdim)

canosayan

Alıntı yapılan: heartsmagic - 02 Ocak 2010 - 14:40:41
Ne azarlaması, bilakis daha rahat davranasın diye söyledim :)
Zira bilirim bizim "çöp" forumlarda birisi bir başka yerden bağlantı verdiği zaman "Hop koçum, neden reklam yapıyorsun, YASAAAK" diyerek bir azarlama olur. Zihniyet bellidir: Arak yapacaksın, yazıyı cillop gibi o foruma aitmiş gibi kullanacaksın, birisi kaynak sorunca da "sana mı düştü kaynağı sormak, Google'dan bulduk" diyeceksin, es kazara kaynak vereni de reklam diye azarlayıp, gerekiyorsa (gerekmiyorsa da) yasaklayacaksın.

Uzağız, uzağız, çok uzağız bu zihniyete.

hım

paylaşımın için teşekkürler olayına ne diyeceğiz?

benim en gıcık olduğum ise şu mesaj yazmadıkça konuyu okuyamadığınız forumlar. sadece interneti kirletiyorlar.
Chmod bizim işimiz.

raspacı

Alıntı yapılan: terrordrone - 02 Ocak 2010 - 17:57:18
ubuntu'da ruby derleyicisini calıstıramadım.
sudo apt-get install ruby dedim yükledim şimdi ruby diyorum bekliyo öyle calısmıyor :( napıcam.. (kirlilik olmasın die burda verdim)
Konsol etkileşim için sanırım irb kurulması gerekiyor. sudo apt-get install irb sonra irb diyerek çalıştırıyorsun konsoldan.
nereye gidersen git kendini de götürürsün.

muzir

           Ruby yüklü olsa bile terminale sadece ruby yazdığımızda terminalde altta doğru siyah ekranın devam ettiğini görürüz. Yani bir değişiklik olmaz.Öncelikle ruby nin kurulup kurulmadığından emin olmak istiyorsak, "ruby --version" komutuyla sistemimizde kurulu olan ruby nin versioyonunu görebiliriz, şayet ruby kurulmamışsa zaten bu komutta belli olur. Ardından "ruby hello.rb" şeklinde ruby kodlamaya başlayabiliriz. Zira bende yeni başladım :D
Bir Tellioğlu asla geç kalmaz...