Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Ruby Programlama Dilinin Temellerine Kapsamlı Bir Giriş: Başlangıç Rehberi

Ruby, Yukihiro 'Matz' Matsumoto tarafından 1990'ların ortalarında geliştirilen dinamik, açık kaynaklı bir programlama dilidir. Matz'ın temel felsefesi, programcıya odaklanarak yazılım geliştirme sürecini daha keyifli ve üretken hale getirmektir. Bu, Ruby'nin sezgisel ve doğal bir sözdizimine sahip olmasını sağlamıştır. Ruby, nesneye yönelik programlama (OOP) prensiplerini derinden benimser; öyle ki Ruby'de her şey bir nesnedir. String'ler, sayılar, hatta `true` ve `false` bile nesnedir. Bu makale, Ruby'nin temel kavramlarına ve sözdizimine detaylı bir giriş yapmayı amaçlamaktadır.

Ruby'nin Felsefesi ve Özellikleri:
Matz'ın dediği gibi: "İnsanların bilgisayarlarla değil, bilgisayarların insanlarla daha iyi anlaşmasını istiyorum." Bu felsefe, Ruby'yi geliştiricilerin mutluluğuna öncelik veren bir dil haline getirmiştir. Ruby, esnekliği, okunabilirliği ve güçlü metaprogramlama yetenekleriyle bilinir. Özellikle web geliştirmede Ruby on Rails framework'ü ile büyük popülerlik kazanmıştır, ancak sadece web için değil, otomasyon, veri analizi, komut dosyası oluşturma gibi birçok alanda kullanılmaktadır.

1. Ruby Kurulumu:
Ruby'ye başlamak için öncelikle onu sisteminize kurmanız gerekir. Ruby'nin birden fazla sürümünü yönetmek için genellikle RVM (Ruby Version Manager) veya rbenv gibi araçlar önerilir. Windows kullanıcıları için RubyInstaller pratik bir çözümdür.

Kurulumu tamamladıktan sonra terminalinizde `ruby -v` komutunu çalıştırarak Ruby'nin başarıyla kurulduğunu doğrulayabilirsiniz. Çıktı olarak yüklü Ruby sürümünü görmelisiniz.

2. Temel Sözdizimi ve Veri Tipleri:
Ruby'nin sözdizimi oldukça anlaşılır ve okunaklıdır. Noktalı virgül kullanımına genellikle gerek yoktur ve parantezler birçok durumda isteğe bağlıdır.

Değişkenler:
Ruby'de dört tür değişken bulunur:
  • Yerel Değişkenler: Küçük harfle veya alt çizgiyle başlar (örn: `isim`, `_yas`). Sadece tanımlandıkları kapsamda geçerlidirler.
  • Örnek Değişkenler: `@` işaretiyle başlar (örn: `@fiyat`, `@renk`). Bir sınıfın belirli bir nesnesine (instance) aittirler.
  • Sınıf Değişkenleri: `@@` işaretiyle başlar (örn: `@@toplam_nesne`). Bir sınıfın tüm nesneleri tarafından paylaşılır.
  • Genel Değişkenler: `$` işaretiyle başlar (örn: `$global_sayac`). Programın herhangi bir yerinden erişilebilirler ve genellikle kullanımları önerilmez.
  • Sabitler: Büyük harfle başlar (örn: `PI`, `MAX_HIZ`). Değerleri değiştirilmemesi beklenen değerlerdir, ancak Ruby'de teknik olarak değiştirilebilirler (sadece bir uyarı verir).

Kod:
# Değişken Tanımlama Örnekleri
mesaj = "Merhaba Ruby!" # Yerel değişken
@kullanici_adi = "developer" # Örnek değişken
@@uygulama_adı = "MyRubyApp" # Sınıf değişkeni
$sistem_versiyonu = "1.0" # Genel değişken
PI = 3.14159 # Sabit

puts mesaj

Veri Tipleri:
Ruby, dinamik tipli bir dildir, yani değişkenlerin tipini belirtmenize gerek yoktur. Çalışma zamanında Ruby bunu otomatik olarak anlar.

  • Sayılar:
  • Integer: Tam sayılar (örn: `10`, `-5`, `0`).
  • Float: Ondalık sayılar (örn: `3.14`, `-0.5`, `2.0`).
  • Dizgiler (Strings): Tek veya çift tırnak içinde metinler. String interpolation (değişkenleri string içine gömme) için çift tırnak kullanılır.
  • Diziler (Arrays): Sıralı nesne koleksiyonları. Köşeli parantezlerle tanımlanır.
  • Hash'ler: Anahtar-değer çiftlerinden oluşan sırasız koleksiyonlar. Süslü parantezlerle tanımlanır.
  • Boole Değerler: `true` ve `false`. Ruby'de yalnızca `false` ve `nil` değerleri yanlış (falsy) kabul edilir; diğer tüm değerler doğrudur (truthy).
  • Nil: Herhangi bir değerin yokluğunu temsil eder.
  • Semboller (Symbols): Değişmez, benzersiz tanımlayıcılardır. `:` ile başlar.

Kod:
# Veri Tipleri Örnekleri
sayi_tam = 100
sayi_ondalik = 25.75

dizgi_tek = 'Tek tırnaklı metin'
dizgi_cift = "Çift tırnaklı metin ve #{sayi_tam}"

dizi_ornek = [1, "iki", 3.0, :sembol]
hash_ornek = { "anahtar" => "deger", :sayi => 123 }

aktif_mi = true
bos_deger = nil

puts sayi_tam.class # => Integer
puts dizi_ornek[1] # => "iki"
puts hash_ornek[:sayi] # => 123

3. Operatörler:
Ruby, çoğu programlama dilinde olduğu gibi aritmetik, karşılaştırma, mantıksal, atama ve bit düzeyinde operatörlere sahiptir.

  • Aritmetik: `+`, `-`, `*`, `/`, `%` (modül), `**` (üssü).
  • Karşılaştırma: `==` (eşit mi), `!=` (eşit değil mi), `>`, `<`, `>=`, `<=`.
  • Mantıksal: `&&` (VE), `||` (VEYA), `!` (DEĞİL).
  • Atama: `=`, `+=`, `-=`, `*=`, `/=`, etc.
  • Üçlü (Ternary): `koşul ? doğru_ise : yanlış_ise`

Kod:
x = 10
y = 3

puts x + y # => 13
puts x == y # => false
puts (x > 5 && y < 5) # => true

sonuc = (x % y == 0) ? "Tam bölünebilir" : "Tam bölünemez"
puts sonuc # => "Tam bölünemez"

4. Kontrol Akışları:
Programınızın davranışını belirli koşullara göre yönlendirmek veya belirli kod bloklarını tekrarlamak için kontrol akış yapıları kullanılır.

Koşullu İfadeler:
  • if/elsif/else: En temel koşullu yapıdır.
  • unless: `if !` ifadesine benzer, koşul yanlış ise çalışır.
  • case: Birden fazla koşulu kontrol etmek için daha temiz bir yol sunar, özellikle string veya sayı değerlerine göre dallanma gerektiğinde.

Kod:
yas = 18

if yas >= 18
  puts "Reşitsiniz."
elsif yas >= 13
  puts "Ergensiniz."
else
  puts "Çocuksunuz."
end

# unless örneği
kayitli_mi = false
unless kayitli_mi
  puts "Kayıt olmanız gerekiyor."
end

# case örneği
not = 'B'
case not
when 'A'
  puts "Mükemmel"
when 'B'
  puts "İyi"
when 'C'
  puts "Geçer"
else
  puts "Başarısız"
end

Döngüler:
  • while: Belirtilen koşul doğru olduğu sürece çalışır.
  • until: Belirtilen koşul yanlış olduğu sürece çalışır.
  • for: Belirli bir aralık veya koleksiyon üzerindeki elemanlar üzerinde döner.
  • each: Koleksiyonlar (Array, Hash) üzerinde iterasyon yapmak için yaygın olarak kullanılan bir metottur.
  • loop: Sonsuz bir döngü oluşturur, `break` ile kırılır.
  • times: Belirli sayıda tekrarlama için kullanılır (sayı üzerinde çağrılır).

Kod:
# while döngüsü
sayac = 0
while sayac < 5
  puts "Sayac: #{sayac}"
  sayac += 1
end

# for döngüsü
for i in 1..3
  puts "For döngüsü: #{i}"
end

# each döngüsü (Array)
renkler = ["kırmızı", "mavi", "yeşil"]
renkler.each do |renk|
  puts "Renk: #{renk}"
end

# times döngüsü
5.times do |i|
  puts "Tekrar #{i+1}"
end

5. Metotlar (Fonksiyonlar):
Metotlar, belirli bir görevi yerine getiren yeniden kullanılabilir kod bloklarıdır. Ruby'de `def` anahtar kelimesi ile tanımlanır ve `end` ile biter.

Kod:
def selamla(isim)
  "Merhaba, #{isim}!"
end

def toplama(sayi1, sayi2)
  return sayi1 + sayi2 # return anahtar kelimesi isteğe bağlıdır, son satırın değeri döner
end

puts selamla("Zeynep") # => Merhaba, Zeynep!
puts toplama(10, 20) # => 30

6. Sınıflar ve Nesneler (OOP):
Ruby, saf bir nesneye yönelik programlama dilidir. Her şey bir nesnedir ve her nesne bir sınıfa aittir. Sınıflar, nesnelerin nasıl oluşturulacağını tanımlayan şablonlardır.

Temel OOP Kavramları:
  • Kapsülleme (Encapsulation): Veriyi (nitelikler) ve bu veri üzerinde çalışan metotları tek bir birimde bir araya getirme.
  • Miras Alma (Inheritance): Bir sınıfın (alt sınıf/türetilmiş sınıf) başka bir sınıfın (üst sınıf/temel sınıf) özelliklerini ve davranışlarını miras alabilmesi.
  • Çok Biçimlilik (Polymorphism): Farklı sınıflardaki nesnelerin aynı metoda farklı şekillerde yanıt verebilmesi.

Kod:
class Ogrenci
  # initialize metodu, bir nesne oluşturulduğunda otomatik olarak çağrılır (constructor)
  def initialize(isim, yas)
    @isim = isim # @ ile başlayanlar örnek değişkenleridir
    @yas = yas
  end

  # instance metodu
  def kendini_tanit
    "Merhaba, ben #{@isim} ve #{@yas} yaşındayım."
  end

  # Erişim Metotları (Getter/Setter)
  # attr_reader :isim # sadece okuma
  # attr_writer :yas # sadece yazma
  # attr_accessor :okul # hem okuma hem yazma

  def isim
    @isim
  end

  def yas=(yeni_yas)
    @yas = yeni_yas
  end
end

# Nesne oluşturma
ogrenci1 = Ogrenci.new("Ali", 20)
puts ogrenci1.kendini_tanit # => Merhaba, ben Ali ve 20 yaşındayım.
puts ogrenci1.isim # => Ali
ogrenci1.yas = 21
puts ogrenci1.kendini_tanit # => Merhaba, ben Ali ve 21 yaşındayım.

# Miras Alma Örneği
class MezunOgrenci < Ogrenci # < ile miras alınır
  def initialize(isim, yas, mezuniyet_yili)
    super(isim, yas) # Üst sınıfın initialize metodunu çağırır
    @mezuniyet_yili = mezuniyet_yili
  end

  def kendini_tanit
    "#{super} Mezuniyet yılım: #{@mezuniyet_yili}."
  end
end

mezun = MezunOgrenci.new("Ayşe", 24, 2022)
puts mezun.kendini_tanit # => Merhaba, ben Ayşe ve 24 yaşındayım. Mezuniyet yılım: 2022.

Erişim Belirleyiciler:
Ruby'de metotların erişilebilirliğini kontrol etmek için `public`, `private` ve `protected` anahtar kelimeleri kullanılır.
  • public: Varsayılan erişim seviyesidir. Metotlara sınıf dışından erişilebilir.
  • private: Metotlara sadece sınıfın kendi içinden erişilebilir. `self` olmadan çağrılmalıdır.
  • protected: Metotlara sadece sınıfın kendisinden veya alt sınıflarından erişilebilir.

7. Modüller ve Mixin'ler:
Ruby'de çoklu kalıtım doğrudan desteklenmez. Bunun yerine modüller kullanılır. Modüller, metotlar ve sabitler içerebilen, ancak nesnesi oluşturulamayan koleksiyonlardır. Bir sınıf, `include` anahtar kelimesiyle bir modülü "mixin" olarak içine alabilir ve o modülün metotlarına kendi metotları gibi erişebilir.

Kod:
module Selamlama
  def selamla_dunyalilari
    "Merhaba Dünya!"
  end
end

class Insan
  include Selamlama # Selamlama modülünü Insan sınıfına dahil et

  def konus
    "Ben bir insanım."
  end
end

insan = Insan.new
puts insan.selamla_dunyalilari # => Merhaba Dünya!
puts insan.konus # => Ben bir insanım.

8. Hata Yönetimi:
Ruby'de istisnaları (hataları) yönetmek için `begin`, `rescue`, `ensure` ve `raise` yapıları kullanılır.

Kod:
def bolme(a, b)
  begin
    raise ArgumentError, "İkinci argüman sıfır olamaz!" if b == 0
    a / b
  rescue ArgumentError => e # ArgumentError hatasını yakala
    puts "Hata: #{e.message}"
    nil # Hata durumunda nil döndür
  rescue ZeroDivisionError # Sıfıra bölme hatasını yakala
    puts "Sıfıra bölme hatası oluştu."
    nil
  rescue => e # Diğer tüm hataları yakala
    puts "Beklenmedik bir hata oluştu: #{e.class} - #{e.message}"
    nil
  ensure # Hata olsa da olmasa da her zaman çalışır
    puts "Bölme işlemi denendi."
  end
end

puts bolme(10, 2) # => 5
puts bolme(10, 0) # => Hata: İkinci argüman sıfır olamaz!
                   # => Bölme işlemi denendi.
                   # => (nil)
puts bolme(nil, 5) # => Beklenmedik bir hata oluştu: NoMethodError - undefined method `/' for nil:NilClass
                    # => Bölme işlemi denendi.
                    # => (nil)

9. Giriş/Çıkış (I/O) İşlemleri:
Ruby, kullanıcıdan girdi alma ve dosya işlemleri gibi temel G/Ç operasyonlarını destekler.

Kod:
# Kullanıcıdan girdi alma
puts "Adınız nedir?"
adi = gets.chomp # gets: girdi alır, chomp: yeni satır karakterini kaldırır
puts "Merhaba, #{adi}!"

# Dosya Okuma/Yazma
file_name = "ornek.txt"

# Dosyaya yazma
File.open(file_name, "w") do |file|
  file.puts "Bu bir deneme metnidir."
  file.puts "Ruby ile dosya yazma örneği."
end
puts "'#{file_name}' dosyasına yazıldı."

# Dosyadan okuma
if File.exist?(file_name)
  File.open(file_name, "r") do |file|
    puts "'#{file_name}' içeriği:"
    file.each_line do |line|
      puts line
    end
  end
else
  puts "Dosya bulunamadı: #{file_name}"
end

Sonuç:
Bu makale, Ruby programlama dilinin temellerine kapsamlı bir giriş sunmuştur. Değişkenlerden kontrol akışlarına, metotlardan nesneye yönelik programlamaya kadar birçok temel konuyu ele aldık. Ruby, geliştirici dostu yapısı, esnekliği ve güçlü topluluğu sayesinde öğrenmesi ve kullanması oldukça keyifli bir dildir. Özellikle Ruby on Rails gibi framework'lerle birleştiğinde web uygulaması geliştirmede inanılmaz bir hız ve verimlilik sağlar.

Ruby öğrenmeye devam ederken, resmi dokümantasyonu incelemenizi, pratik uygulamalar yapmanızı ve Ruby topluluğuna katılmanızı şiddetle tavsiye ederiz. Unutmayın, pratik yapmak ve sürekli öğrenmek, herhangi bir programlama dilinde ustalaşmanın anahtarıdır. İyi kodlamalar!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected