TEK BOYUTLU DİZİLER : Bir dizi oluşturmak için öncelikle istenilen tipte bir dizi değişkeni oluşturmak gerekir. Genel formülü şu şekildedir.
tip değişken adı[];
int month_days [];
Köşeli parantez açıp kapatmak dizi oluşturulduğu anlamına gelir. Dizi oluşturacaksak mutlaka bu parantezleri açıp kapatmak gerekir.
Şimdi gelelim en önemli yere ; int month_days[] şeklinde bir dizi tanımladık, fakat bu dizinin değeri şuan null'dur. Dizinin herhangi bir değeri yoktur.Diziye değer ataması yapmak için bellekte yer ayırmalı ve bunu dizi değişkenine atamalıyız. Önceden de gördüğümüz üzere new kelimesi bellekte bizim için yer ayıran kelimedir. Bunu aşağıdaki ifade ile yaparız:
month_days = new int[];==>> month_days isminde int tipinde değişkenleri olan dizi için bellekte bir yer açtık.Daha sonra dizinin elemanlarını doldurmaya başlayabiliriz.Bunu bir örnekte görecek olursak kodlar aşağıdaki gibi olur :
![]() |
--BASİT BİR DİZİ OLUŞTURMA-- |
Yukarıdaki örnekte basit bir dizi oluşturduk.Resmin üzerine tıkladığımız zaman sayfa büyüyecek ve her şeyi daha açık bir şekilde göreceğiz.Programın amacı diziler yardımıyla nisan ayının kaç gün olduğunu göstermektir.Dikkat ederseniz indeks 0'dan başlamıştır.
**NOT** : Dizi tanımlarken her zaman bellekte new adında bir değişken tanımlamaya gerek olmayabilir. Bunu bir örnekte görecek olursak:
![]() |
--NEW OLMAYAN DİZİ-- |
Bu örnekte dizi oluşturulduktan sonra teker teker indis açıp yazmak yerine, Dizinin tüm değerlerine atama süslü parantez içinde yapılmıştır. Değişken ataması yapmak gibi düşünebiliriz. Değişken ataması yaparken de new sözcüğü oluşturmamıza gerek yoktur çünkü ilk yazdığımız zaman değişkenin değeri bellidir."null" a eşit değildir.
Dizilerde en önemli konulardan biriside for loop ve diziyi bir arada kullanmaktır.Programlarda fazlaca kullanacağız. Biz öğrenciler genelde bu yapıyı oluşturmakta zorluk çekeriz. Şimdi aşağıda bir örnekte bunu inceleyelim.
![]() |
--FOR VE DİZİ BİRLİKTE KULLANIMI-- |
result =result + nums[i]==>>Nums i. öğrencinin notunu temsil eder.
En sonunda elimizde öğrencilerin notları var bunların toplamı var şimdi sıra geldi bunların ortalamasını hesaplamaya bunu da aşağıdaki kod ile yaparız:
System.out.println("average is" + result/5);==>>Buradaki result/5 toplamı 5 e bölüp ortalama hesaplar ve ekrana yazar.
2 BOYUTLU DİZİLER : Bu dizi türünün özellikleri de diğerleri ile aynıdır. Sadece 2 boyutlu olduğu için tanımlanması değişiklik gösterir.
int twoD [][]= new int[4][5];
Buradaki ilk 2 köşeli parantez dizinin 2 boyutlu olduğunu gösterir. new ile belekte yeni yer açtıktan sonra dizinin boyutları yazılır. Kısacası 2 boyutlu dizileri matris gibi düşünebiliriz. Yukarıdaki dizide 4 e 5 boyutundaki matris verilmiştir.İlk köşeli parantez satır sayısını,ikinci köşeli parantez sütun sayısını verir.
2 boyutlu diziler dendiği zaman birçok programda direk döngüler akla gelir çünkü bu dizinin içinde dolanmak için 2 tane for loop yapmak gerekir. Şimdi bu dizi ve for loop kullanımını bir örnekle açıklayalım.
![]() |
--2 BOYUTLU DİZİ VE FOR LOOP-- |
İlk olarak 2 boyutlu 4 e 5 boyutunda bir dizi tanımladık. new kelimesi ile bellekte yeni yer açtık.
for döngüsünün içinde dolanacak olan değişkenlere i ve j dedik k değişkeni ise değer kısmıdır yani kod okundukça matrisin içini dolduran eleman k dır. Ve bu değerleri ilk değer olan 0'a eşitledik çünkü döngüler de 0 dan başlayacak.Şimdi sırada anlaşılması en zor olan kısım var :
for(i=0;i<4;i++)
for(j=0;j<5;j++){
twoD[i][j]=k;
k++;
}
for(i=0;i<4;i++){
for(j=0;j<5;j++)
System.out.print(twoD[i][j]+ " ");
System.out.println();
}
İlk for döngümüzü başlattık bu döngü satır için dönen döngüdür. İkinci döngüde sütun için döner. İç içe 2 döngüde mantık şudur: Kod sırasına göre gidersek. bilgisayar ilk döngüye geldi. Burdaki for loop okundu ve bize ilk satırı gösterdi sonra alttaki loop'a indi burdada ilk sütunu gösterdi. Şuan elimizde okunanlar olarak satırın ilk elemanı, sütunun ilk elemanı var. Sıra geldi değer yazmaya bu değer yazma işini k nın yaptığını yukarıda açıklamıştık. twoD[i][j]=k kodunda 0. satır ve 0. sütunun ilk değerine k nin ilk değerini yazdı yani o da 0.Daha sonra bilgisayar alt satıra atladı ve k nın değerini bir artırdı.
Bundan sonraki adımda tekrar en üstteki loop'a çıktı ordan satırın 1. elemanını aldı, aşağıdaki loop'a indi ordan sütunun 1. elemanını aldı ve twoD[i][j]=k bu kodla 1. satır 1. sütun elamnının içini doldurdu ve k nın değerini tekrar 1 artırdı. Böyle böyle döngüler içindeki şartı sağlayana kadar döngü.
Daha sonra sıra ikinci döngülere geldi bu döngülerin olmasının sebebide belilenen bu 4 e 5 matrisi ekrana yazdırmak(System.out.print) ifadelerindende anlaşıldığı gibi. ilk dönüşte 0. satır 0. sütunu olduran eleman ekrana yazıldı,2. dönüşte 1. satır 1. sütunu dolduran elaman ekrana yazıldı böyle böyle resimde görülen ekran çıktısı oluştu.
**NOT** :Tekrar hatırlamak gerekirse neden 0. satır ve 0. sütundan başladık ? Bunun sebebi kaç boyutlu dizi olursa olsun diziler her zaman 0. indisten başlar.
ÇOK BOYUTLU DİZİLER : Çok boyutlu dizilerde de dizi mantığı aynıdır. dizinin içine dolanırken sadece 2 boyutludan farklı olarak 3 tane loop açarız. tanımlanma şeklide şöyledir:
int three[][][] = new int[3][4][5];
En, boy, yüksekliğe sahip bir şekil düşünebiliriz.Örneğin; Dikdörtgenler prizması.Kodlama mantığı da 2 boyutlu diziler ile aynıdır. Çok boyutlu diziler çok fazla kullanılmaz genelde tek ve 2 boyutlu diziler kullanılır. Ama kullanılan programlarda daha öncede belirtildiği gibi mantık aynıdır.
Şimdide dizi,if ve for yapılarını ele alan güzel bir örnek yapalım:
![]() |
--IF/DİZİ/FOR LOOP-- |
Ekran çıktısı şekildeki gibi olan kodu yazmak için ilk ihtiyacımız olan şey; elemanlarının hepsi 0 olan biz dizidir. Sonra bu diziyi ekran çıktısına göre değiştireceğiz. Görüldüğü üzere int değerinde elemanlarının hepsi 0 olan bir dizi tanımladık.Daha sonra 2 tane döngü kullanacağımız için döngülerin içinde kulanılacak olan değişkenleri tanımladık. Daha sonra ilk for döngümüzü açtık, bu döngü dizinin elemanlarının içinde dolanıp kontrol yapacak olan döngüdür. Bu döngü 0. indisten başlayıp 9. indise kadar teker teker dizinin tüm indekslerinde dolanıyor ve kodda yazan if bloğu ile indeksleri dolduran rakamları kontrol ediyor. Eğer dizinin indeksindeki rakam 0 ise onları teker teker 1 e çeviriyor.
2. for döngüsü ise kaç satır yazılacağını kontrol ediyor bu kodda 10 satır yazılması ve her satırda bir indeksin daha 1 yapılması istenmiş. Ve sonuç olarak ekran çıktığı şekildeki gibi olan program ortaya çıkmış. Şimdi de başka bir nested loop örneğine bakalım.
![]() |
-NESTED LOOP- |
![]() |
-EKRAN ÇIKTISI- |
Ekran çıktısı üstteki gibi olan programı adım adım nasıl yazdığımızı inceleyelim. İç içe loop kullanacağımız için 2 tane değişken tanımladık x ve y.
Daha sonra x için dönecek olan loop'umuzu oluşturduk. x ile oluştulan döngü 1 den başlayacak ve 5 e eşit olana kadar dönecek ve her dönüşünde ekrana 1 er tane x değeri yazacak sonunda elimizde 5 tane x değeri olacak.
İçteki loop'a bakacak olursak bu y değerlerini belirleyen loop'dur. x loop'u her döndüğünde y loop'u da x'in her dönüşü için 3 kez dönecek ve belirtilen değerleri yazacaktır.
Hiç yorum yok:
Yorum Gönder