C++ | Birlikte Yazılım Öğrenelim Serisi - Çok Boyutlu Arraylar

YunusEmreOfficial

sudo rm -r /
Premium Üye
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.864
Çözümler
54
Beğeni
1.719
Puan
1.370
Ticaret Puanı
3
Bildiğiniz gibi bu seriye başlamıştım. Amacım kendim kod öğrenirken 1 satırda olsun okuyucuyada birşeyler katmak ve kendime not çıkartmaktı. Ama çeşitli sebeplerle ara vermem gerekmişti. Şimdi bu seriyi bitirmeyi planlıyorum. Paylaşımlarım son hızla devam edicek. Ancak şuanda hergün konu atmak yerine haftalık atmayı düşünüyorum bu arada da metin2 ile ilgili sistem vs ya da bu seri ile ilgili bilgilendirici mesajlar konular açabilirim. Haftanın belirli bi günü değilde sonraki konuyu ne zaman pekiştirir ve anlatmaya hazır bulursam kendimi o zaman gelip konu açacağım. Konuyla ilgili herhangi bir şeyde rahatsızlık vermekten çekinmeyin. Hemen gelin yazın ve kod arkadaşı olalaım. :D Şimdi konumuza geçelim. (Not: Konuları bodoslama yazıyorum aklımda kaldıkça kaynaklardan öğrendikçe sonra yapay zekaya atıp konusallaştırıyorum ki anlaşılması ve yazım hataları olmaması için. Eğer kötü görünüyosa ya da önerileriniz varsa mutlaka söyleyin. )
Bu dersimizde, temel array mantığının bir üst seviyesine çıkıp çok boyutlu array (multi-dimensional array) yapısını işleyeceğiz. Tek boyutlu dizilerde veriler tek bir satır halinde tutuluyorken, çok boyutlu diziler birden fazla boyutta veri saklamamızı sağlar. Özellikle tablo, matris, harita (map) gibi yapılar üzerinde çalışırken sıkça karşımıza çıkar.

📌 Çok Boyutlu Array Nedir?

Çok boyutlu array, array içinde array barındırır. Yani bir dizi elemanının kendisi başka bir dizidir. Arrayları bilmiyorsanız bu konuyu anlamanız zor olabilir. Öncelikle bir önceki konumuz olan "C++ | Birlikte Yazılım Öğrenelim Serisi - Arraylar" konusunu öğrenin.

Arraylar Şu şekilde tanımlanır:

veri_tipi(değişken_türü) dizi_adi[boyut];

Çoklu Arraylar ise :

veri_tipi(değişken_türü) dizi_adi[boyut1][boyut2];

Burada:
  • boyut1 → satır sayısı
  • boyut2 → sütun sayısı anlamına gelir.

📌 En Yaygın Tür: 2 Boyutlu Array (Matris)

Örnek tanımlama:


C++:
Genişlet Daralt Kopyala
int matris[3][4];
Bu yapı toplam 3 satır, 4 sütundan oluşan bir matristir.
Yani toplam eleman sayısı: 3 × 4 = 12 elemandır.

📌 Tanımlama + Değer Atama

Düz formatta:

C++:
Genişlet Daralt Kopyala
int sayilar[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

Satır satır gösterim:

  • 1.satır → 1 2 3
  • 2.satır → 4 5 6

📌 Çok Boyutlu Array’larda Eleman Erişimi


Elemanlara ulaşmak için [satır][sütun] şeklinde kullanılır.

Örnek:
C++:
Genişlet Daralt Kopyala
cout << sayilar[0][1]; // Çıktı: 2
cout << sayilar[1][2]; // Çıktı: 6

Çıktılar kafa karıştırabilir. Şöyle açıklayalım;
Önce diziyi hatırlayalım.
C++:
Genişlet Daralt Kopyala
int sayilar[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};


🔍 1)​

  • 0. satır → {1, 2, 3}
  • 1. sütun → Bu satırdaki ikinci eleman
📌 0. satır, 1. sütun → 2
Çıktı: 2

🔍 2)​

  • 1. satır → {4, 5, 6}
  • 2. sütun → Bu satırdaki üçüncü eleman
📌 1. satır, 2. sütun → 6
Çıktı: 6


✔️ Kısaca mantık:​

sayilar[satır_indeksi][sütun_indeksi]
İlk köşeli parantez → hangi satır?
İkinci köşeli parantez → o satırdaki hangi eleman?

Bildiğiniz gibi önceki konularımızda döngüleri görmüştük gelin onlarla arrayları inceleyelim.
Genellikle iki tane for döngüsü kullanılır:

C++:
Genişlet Daralt Kopyala
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        cout << sayilar[i][j] << " ";
    }
    cout << endl;
}

Bu kod satır satır tüm matrisi ekrana basar.

1763743063076.webp



Peki bunu kullanıcıdan almamız gerekirse ?

📌 Kullanıcıdan Çok Boyutlu Array Alma Örneği

C++:
Genişlet Daralt Kopyala
int tablo[2][2];

cout << "2x2 tablo için değer giriniz:\n";

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
        cin >> tablo[i][j];
    }
}
Girilen değerleri yazdırmak için yine aynı iki döngü kullanılır.

1763743223985.webp


Son olarak bu konuyla ilgili sık yapılabilecek hatalar.

❌ Boyutları karıştırmak​

C++:
Genişlet Daralt Kopyala
int d[3][4];
cout << d[3][0]; // HATA: son satır 2 indeksindedir

❌ İç içe döngü yazmayı unutmak​

Yalnızca tek döngüyle tüm matrisi yazdırmaya çalışmak hataya neden olur.

❌ Başlangıç değerlerini satır-sütun düzenine göre vermemek​

Aşağıdaki örnek derlenir ama mantıksal hata üretir:

C++:
Genişlet Daralt Kopyala
int x[2][3] = {1,2,3,4}; // eksik elemanlar otomatik 0 olur



Bu dersimizde C++ çok boyutlu array yapısını, kullanım amacını, tanımlama biçimlerini ve sıkça yapılan hataları ele aldık. Bir sonraki derslerde çok boyutlu dizilerin daha dinamik alternatifleri olan vector ve pointer tabanlı yapılara giriş yapacağız. Takipte kalın.



Not : Olası hata bildirimleri, iletişim veya gelişmelerden erken haber almak için discord kanalıma gelebilirsiniz.



Önemli not: Bu konu ve açacağım diğer konular tamamen kendime ait konular herhangi bir yerden alıntı değildir.
MMOTutkunlarına özel içeriktir.
Lütfen alacaksanız bile kaynak gösteriniz.
Sevgilerle
 
Geri
Üst