Sıfırdan Java programlama dersleri serisinde bu dersimizde ” Java Programlama Dersleri, Diziler ” konusuna değineceğiz. (Arrays)

Dizi Bildirimleri (Declaration)

 

C syntax dillerinin hepsinde ve Java’da dizilerin bildirimleri, köşeli parantez sembolleriyle yapılır. Diziler sıklıkla ingilizce karşılığı olan “Arrays” kavramı ile ifade edilir. Dizi tanımlamaları da normal değişken tanımlamaları gibidir, tek farkı köşeli parantezlere sahip olmasıdır.

kodu ile

ifadeleri aynıdır. Dizi tanımlarken kullanılan köşeli parantezler dizi isminin başına veya sonuna gelebilir. Birden fazla diziyi aynı anda tanımlayabiliriz:

Tek boyutlu diziler kısmına geçmeden önce döngüler konusunda fikri olmayanların “Java Programlama Dersleri, Döngüler”  konusunu okumaları şiddetle tavsiye edilir.

 

Tek Boyutlu Diziler

 

şeklindeki ifade ile  bellekte bu dizi için bir rezervasyon yapılmıştır ancak bellekte herhangi bir yer kaplamamaktadır. Yer kaplamasını istiyorsak new anahtar kelimesi ile tanımlanın kalanını yazmalıyız:

kodu ile 12 elemanlı her biri int tipinde olan bir dizi oluşturmuş olduk. Yani peş peşe 12 int değişken tanımlamak yerine tek bir kodla işimizi halletmiş olduk. Buraya kadarlık kısmı özetleyecek olursak dizilerin genel tanımı aşağıdaki gibidir :

Eşitliğin sol tarafındaki köşeli parantez diziAdi ifadesinin solunda veya sağında olabilir.

Diziler ardışık olarak hafızada tutulurlar. İlk elemanın index değeri 0 (sıfır) dır. Dizi elemanlarının her birine erişmek için dizi ismini yazdıktan sonra köşeli parantez içerisine sıra numarası (index) yazılır. Yani aylarDizisi’nin ilk dizi elemanı aylarDizisi[0], ikinci elemanı aylarDizisi[1] dir.

Java Programlama Dersleri Tek Boyutlu Diziler Arrays

Yaptığımız bu dizi tanımlamasında dizi elemanlarına ilk değer ataması yapmadığımız için default  {0,0,0,0,0….,0} değerlerine sahip oldular. İlk değer ataması için :

kodu ile dizi elemanların ilk 6 tanesine tek tek index numaraları ile erişip ayrı ayrı değer atamaları yapıldı. Dizilere bu şekilde tek tek değer ataması yapılabileceği gibi tek seferde de değer ataması yapılabilir:

sayi adında int bir dizi tanımlayıp içerisine ilk değer ataması yaptık. sayi dizisinin eleman sayısını belirtmememize rağmen atanan değerlerden yola çıkarak derleyici dizimizin 5 elemanlı olduğunu kabul eder. sayi dizisinin ilk elemanına 12 değeri son elemanına da 48 değeri atanmıştır.

Dizileri istediğimiz tipte tanımlayabiliriz. Şimdi de string bir dizi oluşturalım ve oluştururken ilk değer ataması yapalım.

Şimdi de bu dizi elemanlarından bir iki tanesini ekrana yazdıralım :

Programımızın sonucu aşağıdaki gibidir :

 

Dizi Elemanlarını Ekrana Yazdırma – Uygulama

 

Şimdi de buraya kadar öğrendiğimiz bilgileri kullanmak için dizi elemanlarını ekrana yazdıran ufak bir uygulama yapalım. Kodumuz :

Uygulamamızda ilk olarak sayi adında int tipinde 5 elemanlı bir dizi tanımlayarak ilk değer atamalarını yaptık. Ekrana “sayi Dizi Elemanları” yazdırıldıktan sonra for döngüsüne geçildi.

for döngüsündeki index ismiyle tanımladığımız int değişken dizi elemanlarının sıra numaları için kullanılacaktır. sayi.length ifadesi ise dizinin uzunluğunu ifade etmektedir ; 5. Döngü içerisindeki System.out.println metodu ile her bir dizi elemanını ekrana yazdırdık.

Daha öncede belirttiğimiz gibi dizi elemanlarını dizi ismi, köşeli parantez ve sıra numarası ile erişebilinir. Örnek vermek gerekirse dizinin 3.elemanının index değeri 2 olduğundan sayi[2] ifadesi ile dizinin 3.elemanına erişebiliriz.

Döngüden çıkıldıktan sonra ekrana “Dizi elemanları yazdırıldı” ifadesi yazılacaktır. Programımızın sonucu aşağıdaki gibidir :

İki Boyutlu Diziler

 

Bir önceki başlığımızda Javada tek boyutlu dizilerden bahsetmiştik. Bu bölümde iki boyutlu dizi nedir, nasıl atama yapılır, nasıl tanımlanır? sorularına cevap vererek aklınızda canlanmasına yardımcı olacağız.

Aşağıdaki şeklimize bakalım. Tek boyutlu dizilerin tek sıradan oluşmuş bir yapı olduğunu, iki boyutlu dizilerde ise satır ve sütunlardan oluşmuş bir yapı olduğunu fark etmişsinizdir.

Yukarıdan aşağıya doğru inen yapı satırları, soldan sağa doğru giden yapı da sütunları ifade eder. İki Boyutlu Diziler şeklindeki, 0,1 ve 2 satırları ifade ederken 0,1,2 ve 3 rakamlarının alt kısmında bulunan kareler de sütunları ifade eder.

Java Programlama Dersleri, iki boyutlu diziler

Aşağıdaki şeklimizde 1 nolu şekilde iki boyutlu dizilerin yapısını 2.şekilde ise hafıza saklanış biçimlerini gösterdik.

Java Programlama Dersleri İki boyutlu dizilerin yapısı

Tek boyutlu diziler;  sayilar[4] şeklinde tek köşeli parantezle ifade edilirken, iki boyutlu dizilerde sayilar [3][4] şeklinde iki köşeli parantezli yapı kullanmalısınız. sayilar[3][4] ifadesinde 3 ile belirtilen satırlar 4 ile belirtilen ise sütunlardır. Yani 3’e 4 bir diziyi ifade eder.

kodu ile 3 satır ve 4 sütundan oluşan bir dizi tanımlaması yapmış olduk. İki boyutlu dizilerin yapısı şeklinde dizi elemanları (i,j) şeklinde ifade edebilirir.[ i , j ] ; i. satır j.sütundaki elemanı ifade eder. Dizi elemanlarının index değerlerinin 0 dan başladığını da hatırlatalım.

Şimdi de iki boyutlu dizilere ilk değer atamaları nasıl yapılıyor, bunu görelim. Kodumuz aşağıdaki gibidir :

Kodumuzu inceleyelim. İlk olarak sayi adında int tipinde boyutunu belirtmediğimiz bir tanımlama yapmışız. Sonrasında { , , , } operatörünü kullanarak ilk değerleri atamışız. {  } ifadesi içerisinde 3 adet {  } ifadesi daha bulunmaktadır. Bu bizim dizimizin 3 satır olduğu anlamına gelir.

{  } içerisindeki değerlere baktığımızda yan yana 4 sayısal değerin virgüllerle ayrılarak verildiğini görüyoruz. Bu değerler bizim iki boyutlu dizimizin sütunlarını ifade eder. Demek ki dizimiz 4 sütunluymuş. Toparlayacak olursak bu tanımlama ile 3 satır 4 sütunluk bir dizi tanımlamasıdır.

Dizi eleman sıralarının sıfırdan başladığını söylemiştik. sayi[0][0] ifadesi dizinin 0.satır, 0.sütun elemanını temsil eder. Kendi dilimize çevirirsek, 1.satır 1.sütun elemanını ekrana yazdırmak istiyor. Bu 1 değeridir.

sayi[1][2] ifadesi de 1.satır 2.sütun yani 2.satır, 3.sütun olan 7 değerini getirir. sayi[2][3] ifadesi ise 3.satır 4.sütun olan 12 değerini getirir. Programımızın sonucuna bakalım.

 

Uygulama

 

İki boyutlu diziler ile alakalı verdiğimiz teorik bilgileri pratiğe dökecek bir uygulama yapalım. Uygulama kodları aşağıdaki gibidir :

Kodumuzu inceleyelim. İlk olarak sayilar adında int tipinde [3][4] yani 3 satır 4 sütunluk bir dizi tanımladık. Sonrasında k adında ilk değeri 0 olan bir int değişken tanımladık. Sonrasında 2 adet for döngüsü kullandık. Bunlardan ilki değer atamak, diğeri de değerleri yazdırmak için kullanıldı.

İlk for döngümüzün içerisinde iki adet for döngüsü olduğunu, yani iç içe 2 for döngüsü kullandığımızı fark etmişsinizdir. Satırları simgeleyen i değeri 0 olduğunda içerideki for döngüsü 4 sütun için 4 kez dönecektir.Sonrasında i 1 olduğunda da gene aynı şekilde devam edecektir.

sayilar[i][j] = k ifadesi ile dizimizin her elemanına k değişkeninin artan değerlerinden biri atanmıştır. İlk for döngüsü bu şekilde tamamlanarak 2.for döngüsüne geçilmiştir.

2.for döngüsü de iç içe iki for döngüsünden oluşan bir yapıya sahip. Bu yapının amacı da dizi elemanlarını ekrana yazdırmaktır. Programın sonucu aşağıdaki gibidir :

Üç Boyutlu Diziler

 

Tek boyutlu diziler tek sıra halindeki değişkenleri ifade eden bir yapıydı. İki boyutlu dizilerde satır sütun yapılarını gördük. Üç boyutlu dizilerde ise 3.bir boyut olarak derinlik devreye giriyor. Aşağıdaki şeklimize bakınız.

Java Programlama Dersleri 3 boyutlu diziler

3 boyut kavramı insanın kafasını karıştıran bir kavram olsada 3 boyutu arka arkaya konulmuş 2 boyut diziler olarak düşünebilirsiniz.

Normalde iki boyutlu dizi de i satır iken j sütundu.[i] [j] olarak ifade ettik. 3 boyutta bir de derinlik işin içine girdiğinden üç boyutu [k] [i] [j]; derinlik, satır ve sütun olarak değerlendirmeniz gerekecek.

3 boyutun arka arkaya getirilmiş 2 boyut diziler olarak düşünebilirsiniz demiştim. Kaç tane 2 boyut dizinin arka arkaya geleceğini k belirlerken, i  bu 2 boyutlu dizilerin satırlarını, j de sütunlarını ifade edecek. Bir uygulama üzerinde görelim :

sayilar adında int tipinde 3 boyutlu [3][4][5] olacak şekilde bir dizi tanımladık. 3 rakamı arka arkaya gelecek olan 2 boyutlu dizi sayısını veriyor. 4 satır numarasını, 5 de sütun numarasını verecektir. int tipinde bir değer değişkeni tanımlayıp ilk değer olarak 1 ataması yaptık.

2 for döngüsünden ilki dizi elemanlarına ilk değer ataması yaparken ikincisi değerlerini ekrana yazdırmak için kullanıldı. Programın sonucu aşağıdaki gibidir :

System.out.println() metodu ile System.out.print() metodu arasındaki fark bir enter farkıdır. println() çıktıdan sonra imleci bir alt satıra getirirken, print() metodu imleci hemen yan tarafa getirir.

 

Değişken Boyutlu Diziler

 

Şimdiye kadar tek boyutlu, iki boyutlu ve üç boyutlu dizileri gördük. Bu dizilerin hepsinin ortak özelliği; satır ve sütun sayıların sabit olmasıydı. 2 boyutlu 3×4 yani 3 satır 4 sütun bir dizi düşünün. 0., 1., 2 satırlarda hep 4 sütunu vardır.

Java değişken yapılı dizileri de desteklemektedir. Bunu kelimelere dökmek benim için hayli zor olduğundan şeklini çizdim. Aşağıdaki resme bakınız :

Java Programlama Dersleri Değişken Boyutlu Diziler

Şekildeki dizi için 4 satırlı deriz, ancak sütun sayıları her satır da değiştiğinden belli bir sütun değeri ifade edemeyiz. Bu tip dizileri nasıl tanımlarız ve kullanırız? Bir uygulama yapalım. Uygulamamızda “Değişken Boyutlu Diziler” resmindeki dizi kullanılacaktır:

Uygulamamıza

bir dizi tanımlaması ile başladık. Bu dizi tanımlamasında ilk değer olan satır değerini vermek zorundayız, ikincisini yani sütun eleman sayısını vermek zorunda değiliz. Satır sayısının zaten sabit olduğunu görüyoruz.

Java Programlama Dersleri Değişken Boyutlu Diziler örnek

Bu resimde tüm şekli komple bir dizi gibi görmek yerine her bir satırı ayrı ayrı tek boyutlu bir dizi gibi düşünün. Çünkü tanımlamaları bu mantık üzerinden yapacağız:

Görüldüğü gibi 0.satır daki tek boyutlu dizi 1 elemanlı olduğundan ” new int [1] ” şeklinde ifade ettik. Diğerleri de 2,3 ve 4 elemanlı olacak şekilde tanımlandı.

int tipindeki deger elemanını dizi elemanlarına ilk değer ataması yapmak için kullanacağız. Sonraki 2 for döngüsüne oldukça aşinasınız. İlk for döngüsünü diğer örneklerimizde olduğu gibi ilk değer ataması yapmak için kullanırken diğerini değerleri ekrana yazdırmak için kullandık.

Programımızın çıktısı aşağıdaki gibidir :

Java programlama dilindeki Diziler konusunu burada noktalıyoruz. Umarım faydalı bir çalışma olmuştur. Anlamadığınız takıldığınız noktaları aşağıdaki yorum panelini kullanarak bizlerle paylaşabilirsiniz.

 

Pin It on Pinterest

Daha fazla Java
Java Programlama Dersleri, break, continue ve return
Java Programlama Dersleri, break, continue ve return

Sıfırdan Java programlama dersleri serisine  “ Java Programlama Dersleri, break, continue ve return” konusu ile devam ediyoruz.

Kapat