Diziler (Array) Nedir ve Nasıl Kullanılır? Temel Bilgiler
Diziler (Array), bilgisayar programlama dünyasında aynı veri tipine sahip birden fazla değeri tek bir değişken adı altında, düzenli bir sırada saklamamıza olanak tanıyan en temel veri yapılarıdır. Yazılım geliştirme sürecinde binlerce veriyi tek tek yönetmek yerine, bu verileri diziler yardımıyla gruplandırmak, veriye erişim hızını artırır ve kodun çok daha okunabilir olmasını sağlar. Günlük hayattan bir örnek vermek gerekirse, bir apartmandaki her bir daireyi ayrı bir değişken olarak düşünmek yerine, apartmanı bir dizi, daire numaralarını ise bu dizinin içindeki elemanların adresleri (indeksleri) olarak hayal edebilirsiniz.
- Dizilerin mantıksal yapısını ve programlamadaki hayati önemini kavrayacaksınız.
- İndeks (index) kavramını ve elemanlara nasıl erişildiğini öğreneceksiniz.
- Tek boyutlu ve çok boyutlu diziler arasındaki farkları ayırt edebileceksiniz.
- Diziler ile döngüleri (loops) birleştirerek algoritmik çözümler üretebileceksiniz.
- Farklı programlama dillerinde dizi tanımlama tekniklerini göreceksiniz.
- Tanım: Benzer verilerin oluşturduğu sıralı listedir.
- İndeksleme: Dizilerde sayma işlemi genellikle 1’den değil, 0’dan başlar.
- Erişim: Belirli bir elemana ulaşmak için o elemanın sıra numarası kullanılır.
- Esneklik: Bazı dillerde boyutu sabitken (Static), bazılarında dinamik (Dynamic) olabilir.
Dizi (Array) Kavramını Anlamak
Programlamaya yeni başlayanlar için değişkenler, içinde tek bir değer tutan kutulara benzer. Örneğin, bir öğrencinin adını saklamak için “ogrenci_adi” isimli bir kutu oluşturursunuz. Ancak bir sınıfta 30 öğrenci varsa, 30 ayrı kutu oluşturmak ve bunları yönetmek imkansız hale gelir. İşte bu noktada diziler devreye girer. Diziler, yan yana dizilmiş kutular topluluğudur. Her kutunun bir numarası vardır ve bu numara sayesinde istediğimiz öğrenciye anında ulaşabiliriz.
Diziler, bellekte (RAM) ardışık olarak saklanır. Bu durum, bilgisayarın dizinin herhangi bir elemanına çok hızlı bir şekilde erişmesini sağlar. Eğer bir dizinin başlangıç adresini ve ulaşmak istediğiniz elemanın kaçıncı sırada olduğunu biliyorsanız, bilgisayar karmaşık işlemler yapmadan doğrudan o adrese gider. Bu özellik, büyük veri setleriyle çalışırken dizileri vazgeçilmez kılar.
Neden Dizilere İhtiyaç Duyarız?
Dizilerin kullanılmadığı bir senaryoyu hayal edelim. Bir marketteki 100 farklı ürünün fiyatını saklamak istiyorsunuz. Dizi kullanmasaydınız, “fiyat1”, “fiyat2”, …, “fiyat100” şeklinde tam 100 tane değişken tanımlamanız gerekecekti. Bu fiyatların ortalamasını almak istediğinizde ise 100 değişkeni tek tek toplamanız gerekirdi. Bu hem zaman kaybıdır hem de hata yapma olasılığını inanılmaz artırır.
Diziler sayesinde bu 100 fiyatı tek bir “urun_fiyatlari” dizisinde toplayabilirsiniz. Bir döngü yardımıyla sadece birkaç satır kod yazarak tüm fiyatları toplayabilir, en yüksek fiyatı bulabilir veya fiyatları küçükten büyüğe sıralayabilirsiniz. Diziler, veriyi organize etmenin yanı sıra kodun bakımını da kolaylaştırır. Yeni bir ürün eklendiğinde değişken ismini değiştirmek zorunda kalmazsınız, sadece dizinin boyutunu bir artırırsınız.
İndeks (Index) Kavramı ve 0’dan Başlama Kuralı
Dizilerle ilgili öğrenilmesi gereken en kritik kural, bilgisayar bilimlerinde saymanın genellikle 0’dan başlamasıdır. Bir dizinin ilk elemanına erişmek istediğinizde “1. eleman” demezsiniz, “0. indeksteki eleman” dersiniz. Bu durum başlangıçta kafa karıştırıcı gelse de, bellekteki adresleme mantığından kaynaklanır.
Elimizde [“Elma”, “Armut”, “Muz”, “Çilek”] şeklinde bir meyveler dizisi olsun:
- 0. İndeks: Elma (İlk eleman)
- 1. İndeks: Armut
- 2. İndeks: Muz
- 3. İndeks: Çilek (Son eleman)
Eğer bu dizide 4 eleman varsa, en büyük indeks numarası her zaman (Eleman Sayısı – 1) olan 3’tür.
| Özellik | Değişken (Variable) | Dizi (Array) |
|---|---|---|
| Veri Kapasitesi | Tek bir değer saklar. | Birden fazla değer saklar. |
| Erişim Yöntemi | İsim ile doğrudan erişim. | İsim ve İndeks numarası ile erişim. |
| Bellek Yapısı | Bağımsız alanlar. | Ardışık (sıralı) bellek alanları. |
Farklı Programlama Dillerinde Dizi Kullanımı
Dizilerin mantığı her dilde aynı olsa da, yazım şekilleri (syntax) farklılık gösterebilir. Günümüzde en popüler olan dillerden bazılarında dizi kullanımına göz atalım. Bu örnekler, temel programlama kavramlarını somutlaştırmanıza yardımcı olacaktır.
Python’da Diziler (Listeler)
Python dilinde diziler genellikle “Liste” (List) olarak adlandırılır ve oldukça esnektir. Python’da bir listeye farklı türden veriler (sayı, metin vb.) bir arada koyulabilir.
# Liste oluşturma
meyveler = ["Elma", "Armut", "Muz"]
# Elemana erişim
print(meyveler[0]) # Çıktı: Elma
# Eleman ekleme
meyveler.append("Çilek")
# Listenin uzunluğunu bulma
print(len(meyveler)) # Çıktı: 4
JavaScript’te Diziler
Web geliştirmenin vazgeçilmezi olan JavaScript’te diziler dinamik yapıdadır. Yani dizi oluşturulduktan sonra boyutu istenildiği gibi değiştirilebilir.
let sayilar = [10, 20, 30, 40]; // Eleman güncelleme sayilar[1] = 25; // 20 değeri 25 ile değiştirildi // Dizinin son elemanını çıkarma sayilar.pop(); console.log(sayilar); // [10, 25, 30]
Diziler ve Döngüler Arasındaki İlişki
Diziler, tek başlarına güçlü olsalar da asıl yeteneklerini döngülerle birleştiklerinde gösterirler. Bir dizinin içindeki tüm elemanları ekrana yazdırmak veya belirli bir kritere uyan elemanları ayıklamak için “for” veya “while” döngülerini kullanırız. Algoritmik düşünmenin temeli, bir veri kümesi (dizi) üzerinde tekrar eden işlemler yapmaktır.
Adım adım bir algoritma kuralım: Bir sınıftaki öğrencilerin notlarını içeren bir dizimiz olsun. Amacımız ortalamayı bulmak. Algoritmamız şu şekilde işleyecektir: 1. Bir toplam değişkeni oluştur ve 0 değerini ver. 2. Dizinin başından sonuna kadar her bir elemana git. 3. Gittiğin her elemandaki notu toplam değişkenine ekle. 4. Döngü bittiğinde toplamı eleman sayısına böl.
Çok Boyutlu Diziler (Multidimensional Arrays)
Şu ana kadar gördüğümüz diziler tek bir satırdan oluşan listelerdi. Ancak bazen verileri bir tablo veya matris formunda saklamamız gerekir. Örneğin bir satranç tahtası veya bir Excel tablosu, satır ve sütunlardan oluşur. Bu tür verileri saklamak için “dizi içinde dizi” yani çok boyutlu dizileri kullanırız.
En yaygın çok boyutlu dizi türü 2 boyutlu dizilerdir. Burada bir elemana ulaşmak için hem satır indeksini hem de sütun indeksini belirtmeniz gerekir. Örneğin `tablo[2][1]` ifadesi, tablonun 3. satırındaki 2. sütun elemanını temsil eder (unutmayın, sayma 0’dan başlar).
Bir harita uygulamasında X ve Y koordinatlarını saklamak için 2 boyutlu diziler kullanılır. [ [0,0], [1,5], [3,8] ] gibi bir yapı, harita üzerindeki üç farklı noktanın konumunu temsil edebilir. Bu sayede karmaşık geometrik hesaplamalar tek bir veri yapısı üzerinden yürütülebilir.
Dizilerle Çalışırken Hata Ayıklama (Debugging) İpuçları
Yazılım geliştirirken dizilerle ilgili hatalar kaçınılmazdır. İşte bu hataları en aza indirmek için bazı profesyonel ipuçları:
- Sınırları Kontrol Edin: Döngü kurarken indeksin dizi boyutunu aşmadığından her zaman emin olun. Genellikle `i < dizi.uzunluk` ifadesi güvenlidir.
- Veri Türü Uyumu: Statik dillerde (C++, Java gibi) dizinin her elemanının aynı türde olması gerektiğini unutmayın. Bir tam sayı dizisine metin eklemeye çalışmak hata verecektir.
- Boş Dizi Kontrolü: Bir dizinin elemanlarına erişmeden önce dizinin boş olup olmadığını kontrol edin. Boş bir diziden eleman çekmeye çalışmak programın durmasına neden olur.
- Yazdırarak Kontrol Edin: Karmaşık dizi işlemlerinde, ara basamaklarda dizinin durumunu ekrana yazdırarak (console.log veya print) verilerin doğru değişip değişmediğini gözlemleyin.
Öğrendiklerinizi Pekiştirin
Diziler, programlamanın temel yapı taşlarından biridir ve bu konuyu iyi kavramak, ileri düzey veri yapılarını (Yığınlar, Kuyruklar, Ağaçlar) öğrenmek için kritik bir adımdır. Kendi projelerinizde veya küçük alıştırmalarınızda dizileri kullanarak pratik yapmanız, bu mantığın zihninize yerleşmesini sağlayacaktır. Unutmayın, en karmaşık yazılımlar bile aslında çok sayıda basit dizinin bir araya gelmesinden oluşur.
- 5 elemanlı bir dizinin son elemanına erişmek için hangi indeks numarası kullanılır?
- İndeksleme neden 1 yerine 0’dan başlar?
- Çok boyutlu bir dizide (örneğin 3×3 bir matris) tam ortadaki elemanın indeksi nedir?
- Bir dizinin tüm elemanlarını toplamak için hangi programlama yapısını (döngü, koşul vb.) kullanmalısınız?
- Diziler, aynı türden verileri gruplandırmak için kullanılan sıralı yapılardır.
- Her elemanın “indeks” adı verilen benzersiz bir sıra numarası vardır.
- İndeksleme kuralı gereği ilk eleman her zaman 0. indekstedir.
- Döngüler, diziler üzerindeki işlemleri otomatize etmek için en büyük yardımcıdır.
- Çok boyutlu diziler, karmaşık verileri (tablo, matris) saklamak için kullanılır.
- Bellek verimliliği ve hızlı erişim, dizilerin en büyük avantajlarıdır.
Pratik Yapma Zamanı
Bu makalede edindiğiniz bilgileri kalıcı hale getirmek için şimdi bilgisayarınızın başına geçip basit bir dizi oluşturun. Kendi sevdiğiniz kitapların isimlerinden oluşan bir dizi tanımlayın ve bir döngü kullanarak bu kitapları ekrana yazdırın. Ardından dizinin ortasındaki bir kitabı değiştirip tekrar yazdırmayı deneyin. Bu küçük adımlar, sizi büyük bir yazılımcı olma yolunda ileriye taşıyacaktır. Bir sonraki dersimizde döngülerin derinliklerine ve dizilerle olan ileri düzey ilişkilerine daha yakından bakacağız.