Üst Düzey Ruby Eğitimi #6 (Multidimensional Arrays, throw-catch)

Bunjo

Uzman üye
14 Ara 2020
1,587
1,885
HTTParty

Merhaba ben Bunjo, bu konuda Ruby dilinde olan "try-catch" ve "multidimensional arrays" kavramlarını anlatacağım.




Bir önceki eğitimler;

"net/http": Üst Düzey Ruby Eğitimi #5 (net/http)
"tk": Üst Düzey Ruby Eğitimi #4 (Görsel Programlama)
"regexp": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"functions": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"symbols": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"structs": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"variables": Üst Düzey Ruby Eğitimi #1 (Değişkenler, Puts)



Try-Catch Kullanımı


Ruby'de catch ve throw ifadeleri, programın normal akışını kesmek ve belirli bir noktadan diğerine atlamak için kullanılır. catch ve throw beraber kullanılarak benzer işlevi gerçekleştirirler.


Ruby:
def find_number numbers, target
  result = catch :found do
    numbers.each do |number|
      if number == target
        throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
      end
    end
    "Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
  end

  puts result
end

numbers = [1, 2, 3, 4, 5]
find_number numbers, 3

Çıktı:



Eğer "number" listesinde olmayan bir değer gönderseydik:
Ruby:
def find_number numbers, target
  result = catch :found do
    numbers.each do |number|
if number == target
        throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
      end
    end
    "Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
  end

  puts result
end

numbers = [1, 2, 3, 4, 5]
find_number numbers, 1936

Çıktı:



Not: Normal koşullarda bunu daha önceden false olarak tanımladığımız bir bool ifadesini while döngüsünün içinde if koşuluna sokup 3'e eşit olduğunda true döndürerekte yapabilirdik ama Ruby dilinin bize sağlamış olduğu esnekliklerle beraber sağladığı hız avantajları da vardır, tabii ki yukarıdaki basit bir örnek olsa bile throw-catch ifadeleri büyük datalarla çalışacağınız zaman büyük avantaj sağlayabilir bende bundan dolayı bu kadar detaya girdim.


Multidimensional Arrays
Kısacası "Çok Boyutlu Diziler" anlamına gelir. Ruby'de çok boyutlu diziler, iç içe yerleştirilmiş dizilerdir. Bu, her bir elemanın başka bir dizi olabileceği anlamına gelir. Çok boyutlu diziler, özellikle matrisler veya tablolar gibi iki boyutlu veri yapılarını temsil etmek için kullanılır. Ruby'de çok boyutlu diziler oluşturmak oldukça basittir.

Ruby:
# İki boyutlu dizi oluşturma
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

# Elemanlara erişim
puts matrix[0][0] # 1
puts matrix[1][2] # 6
puts matrix[2][1] # 8

Ruby:
# Üç boyutlu dizi oluşturma
cube = [
  [
    [1, 2],
    [3, 4]
  ],
  [
    [5, 6],
    [7, 8]
  ]
]

# Elemanlara erişim
puts cube[0][1][0] # 3
puts cube[1][0][1] # 6

Çok boyutlu dizilerde fazla detaya girmiyorum bu üst düzey bir eğitim 0'dan programlama eğitimi değil. Kısa olarak dizi indekslemesini açıklayayım listenin içinde olan elemanlara erişmek için örneğin matrix = [1,2,3] olarak bir liste(dizi) tanımlarsak bu listedeki 1 elemanını çağırmak için matrix[0] kullanırım yani elemanlar 0'dan başlayarak numaralandırılır, çok boyutlu dizilere gelirsek de bu yine aynı şekildedir dizi içinde dizi vardır, her dizi bir elemandır ve "matrix[1][2]" ve "cube[1][0][1]" gibi şekillerde çağırılabilir.

Daha sonradan dizi ve hash metodlarını anlatacağım örneğin .append .pop .shfit gibi metodları daha sonra olan konularda göreceğiz bu konuda daha fazla kafa karıştırmak istemedim.

Okuduğunuz için teşekkür ederim kafanıza takılan bir soru için her zaman açığım.

Ukalaca yorumlar gelmeye devam ediyor umursamıyorum.
 
Son düzenleme:

invisible blood

Uzman üye
15 Eyl 2023
1,177
442

Merhaba ben Bunjo, bu konuda Ruby dilinde olan "try-catch" ve "multidimensional arrays" kavramlarını anlatacağım.




Bir önceki eğitimler;

"net/http": Üst Düzey Ruby Eğitimi #5 (net/http)
"tk": Üst Düzey Ruby Eğitimi #4 (Görsel Programlama)
"regexp": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"functions": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"symbols": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"structs": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"variables": Üst Düzey Ruby Eğitimi #1 (Değişkenler, Puts)



Try-Catch Kullanımı


Ruby'de catch ve throw ifadeleri, programın normal akışını kesmek ve belirli bir noktadan diğerine atlamak için kullanılır. catch ve throw beraber kullanılarak benzer işlevi gerçekleştirirler.


Ruby:
def find_number numbers, target
  result = catch :found do
    numbers.each do |number|
      if number == target
        throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
      end
    end
    "Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
  end

  puts result
end

numbers = [1, 2, 3, 4, 5]
find_number numbers, 3

Çıktı:



Eğer "number" listesinde olmayan bir değer gönderseydik:
Ruby:
def find_number numbers, target
  result = catch :found do
    numbers.each do |number|
if number == target
        throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
      end
    end
    "Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
  end

  puts result
end

numbers = [1, 2, 3, 4, 5]
find_number numbers, 1936

Çıktı:



Not: Normal koşullarda bunu daha önceden false olarak tanımladığımız bir bool ifadesini while döngüsünün içinde if koşuluna sokup 3'e eşit olduğunda true döndürerekte yapabilirdik ama Ruby dilinin bize sağlamış olduğu esnekliklerle beraber sağladığı hız avantajları da vardır, tabii ki yukarıdaki basit bir örnek olsa bile throw-catch ifadeleri büyük datalarla çalışacağınız zaman büyük avantaj sağlayabilir bende bundan dolayı bu kadar detaya girdim.


Multidimensional Arrays
Kısacası "Çok Boyutlu Diziler" anlamına gelir. Ruby'de çok boyutlu diziler, iç içe yerleştirilmiş dizilerdir. Bu, her bir elemanın başka bir dizi olabileceği anlamına gelir. Çok boyutlu diziler, özellikle matrisler veya tablolar gibi iki boyutlu veri yapılarını temsil etmek için kullanılır. Ruby'de çok boyutlu diziler oluşturmak oldukça basittir.

Ruby:
# İki boyutlu dizi oluşturma
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

# Elemanlara erişim
puts matrix[0][0] # 1
puts matrix[1][2] # 6
puts matrix[2][1] # 8

Ruby:
# Üç boyutlu dizi oluşturma
cube = [
  [
    [1, 2],
    [3, 4]
  ],
  [
    [5, 6],
    [7, 8]
  ]
]

# Elemanlara erişim
puts cube[0][1][0] # 3
puts cube[1][0][1] # 6

Çok boyutlu dizilerde fazla detaya girmiyorum bu üst düzey bir eğitim 0'dan programlama eğitimi değil. Kısa olarak dizi indekslemesini açıklayayım listenin içinde olan elemanlara erişmek için örneğin matrix = [1,2,3] olarak bir liste(dizi) tanımlarsak bu listedeki 1 elemanını çağırmak için matrix[0] kullanırım yani elemanlar 0'dan başlayarak numaralandırılır, çok boyutlu dizilere gelirsek de bu yine aynı şekildedir dizi içinde dizi vardır, her dizi bir elemandır ve "matrix[1][2]" ve "cube[1][0][1]" gibi şekillerde çağırılabilir.

Daha sonradan dizi ve hash metodlarını anlatacağım örneğin .append .pop .shfit gibi metodları daha sonra olan konularda göreceğiz bu konuda daha fazla kafa karıştırmak istemedim.

Okuduğunuz için teşekkür ederim kafanıza takılan bir soru için her zaman açığım.
Ellerinize sağlık bunjo hocam.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.