10.hafta - java'da diziler -...

26
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY

Upload: others

Post on 09-Oct-2019

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

JAVA PROGRAMLAMA

Öğr. Gör. Utku SOBUTAY

Page 2: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

İÇERİK

• Java’da Diziler– Dizi Tanımlama ve İlk Değer Atama

– Dizi Elemanlarının Kullanılması

– Dizi İşlemleri

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

2

Page 3: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

Java’da Diziler

Page 4: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

JAVA’DA DİZİLER

• Dizi; tek bir veri tipinde, birden fazla veriyi tutabileceknesnelerdir.

• Dizi içerisinde tutulacak verilerin, veri tipleri aynı olmaktadır(Örneğin; tamsayı ise; hepsi tamsayı olmalıdır).

• Genellikle dizi içerisinde tutulacak verilerin sayıları bellidir(Örneğin; 100 tane tamsayı verisi).

• İki tip dizi bulunmaktadır;– Tek boyutlu diziler

– Çok boyutlu diziler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

4

Page 5: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

JAVA’DA DİZİLER

• Tek boyutlu diziler; bu tip dizilerin elemanları tek satırlıktır. Örneğin;0’dan başlar 100’e kadar devam eder.

• Çok boyutlu diziler; bu tip dizilerin elemanlarının her biri farklı dizidir.Birden fazla satır ve sütundan oluşabilirler.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

5

Page 6: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

Dizi Tanımlama ve İlk Değer Atama

Page 7: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Tek Boyutlu Diziler:– Diziler tanımlanırken iki farklı şekilde tanımlanabilir;

• Veri tipi, köşeli parantez, dizi ismi yapısı ile;int[] notlar; double[] yaricaplar;

• Veri tipi, dizi ismi, köşeli parantez yapısı ile;int notlar[]; double yaricaplar[];

– Yukarıdaki tanımlama sadece diziyi kullanmak üzere diziyi tutacakreferansın tanımlamasıdır. Referans tanımlandıktan sonra dizi kaç tane veriiçerecekse bu sayıya göre nesne oluşturulur.

notlar=new int[100]; � 100 tane tam sayı tutacak notlardizisi nesne olarak oluşturulur.

yaricaplar=new double[20]; � 20 tane noktalı sayı tutacak yarıcaplardizisi nesne olarak oluşturulur.

– Doğrudan doğruya referans tanımlarken de nesne oluşturulabilir;int[] notlar=new int[100]; double yaricap[]=new double[20]; biçiminde…

– NOT: Dizi nesne biçiminde oluşturulmadan içerisine veri girişindebulunulamaz.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

7

Page 8: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Tek Boyutlu Diziler:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

8

Page 9: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Tek Boyutlu Dizilerde İlk Değer Atama:– Dizilerde ilk eleman ataması dizi tanımlanırken yapılabildiği gibi,

sonradan da yapılabilmektedir.

– Dizi Tanımlanırken Eleman Atamak: Doğrudan doğruya dizinin veritipini ve ismini yazdıktan sonra eşitliğin sağ tarafına { } kullanılarakdizi elemanları atanabilir.

• Örneğin: int[] a={5, 7, 11, 8, 3}; veya int a[]={5, 7, 11, 8, 3};

5 elemanlı ve içerisinde verilen elemanları barındıran dizi tanımlanmış olur.

• Bu dizinin elemanları aşağıdaki gibi olacaktır;

• Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak tanımlanan bir dizinin son indisi 4 olacaktır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

9

Index 0 1 2 3 4

Değer 5 7 11 8 3

Page 10: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Tek Boyutlu Dizilerde İlk Değer Atama:– Diziye Sonradan Eleman Atamak: Dizi tanımlanıp, nesne

oluşturulduktan sonra dizi indisleri kullanılarak diziye tek tek elemanatanabilir.

• Örneğin: int[] a=new int[5];

a[0]=5;

a[1]=7;

a[2]=11;

a[3]=8;

a[4]=3;

• Böylece dizi elemanları yine aşağıdaki gibi olacaktır;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

10

Index 0 1 2 3 4

Değer 5 7 11 8 3

Page 11: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Tek Boyutlu Dizilerde İlk Değer Atama:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

11

Index 0 1 2 3 4

Değer 5 7 11 8 3

Page 12: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Çok Boyutlu Diziler:– Çok boyutlu dizilerin her bir elemanı dizi niteliğindedir.

– Çok boyutlu dizilerin referansları oluşturulurken, tek boyutlu diziden farklı olarakkaç boyutlu olacak ise; o boyutta [] işareti konmaktadır.

int[][] sayi; veya int sayi[][]; � iki boyutlu bir tam sayı dizisi referansı.

double[][][] yaricap; veya double yaricap[][][] � üç boyutlu bir noktalı sayıdizisi referansı.

– Çok boyutlu dizilerde, dizi nesnesi oluşturulurken yine tek boyutlu dizilerdeolduğu gibi dizinin satır ve sütun sayısı yazılır.

int[][] sayi=new int[3][2]; � bu şekilde oluşturulan bir dizi 3 satır ve 2sütundan oluşur.

– Java’da çalışılırken genellikle iki boyutlu diziler kullanılır, bunun nedeni hemanlaşılması hem de kullanılması daha kolaydır. Boyut arttıkça dizinin karmaşıklığıda artmaktadır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

12

Page 13: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Çok Boyutlu Diziler:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

13

Tamsayı tipinde sayi isimli iki boyutlu dizi referansı oluşturulmuştur.

Referansı oluşturulan sayi dizisinin 5 satır ve 2 sütundan oluşan nesnesi oluşturulmuştur.

Noktalı sayılar tipinde yaricaplar 3 boyutlu dizisi için referans tanımlanırken nesne oluşturulmuştur. Bu 3 boyutlu dizinin tüm boyutları 2 elemanlıdır.

Page 14: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Çok Boyutlu Dizilerde İlk Değer Atama:– Çok boyutlu dizilerde de dizi tanımlanırken veya sonradan eleman

atanabilir.

– Çok Boyutlu Diziler Tanımlanırken Eleman Atamak: Doğrudan doğruyadizinin veri tipini ve ismini yazdıktan sonra eşitliğin sağ tarafına diziboyutuna göre { } kullanılarak dizi elemanları atanabilir.

• Örneğin: int[][] a={{5, 7},{11, 8},{3, 2},{4, 1}};

tam sayılı a 2 boyutlu dizisi, 4 satır ve 2 sütunlu olarak değerler girilerek tanımlanmıştır.

• Bu dizinin elemanları aşağıdaki gibi olacaktır;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

14

İndex 0 1

0 5 7

1 11 8

2 3 2

3 4 1

Page 15: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Çok Boyutlu Dizilerde İlk Değer Atama:– Çok Boyutlu Diziye Sonradan Eleman Atamak: Dizi tanımlanıp, nesne

oluşturulduktan sonra dizi indisleri kullanılarak diziye tek tek elemanatanabilir.

• Örneğin: int[][] a=new int[4][2];

a[0][0]=5;

a[0][1]=7;

a[1][0]=11;

a[1][1]=8;

a[2][0]=3;

a[2][1]=2;

a[3][0]=4;

a[3][1]=1;

• Böyle tanımlanıp, değer ataması yapıldığı zaman dizinin durumu yine yandaki gibi olacaktır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

15

Index 0 1

0 5 [0][0] 7 [0][1]

1 11 [1][0] 8 [1][1]

2 3 [2][0] 2 [2][1]

3 4 [3][0] 1 [3][1]

Page 16: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ TANIMLAMA VE İLK DEĞER ATAMA

• Çok Boyutlu Dizilerde İlk Değer Atama:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

16

Index 0 1

0 5 [0][0] 7 [0][1]

1 11 [1][0] 8 [1][1]

2 3 [2][0] 2 [2][1]

3 4 [3][0] 1 [3][1]

Java kodları ile oluşturulan a ve b tamsayılı dizilerinin içerikleri aynı olur.

Page 17: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

Dizi Elemanlarının Kullanılması

Page 18: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ ELEMANLARIIN KULLANILMASI

• Diğer programlama dillerine göre, Java’da dizi elemanlarına erişim daha azrisk taşımaktadır.

• Oluşturulan bir dizinin elemanlarına erişirken, dizi sınırları aşılırsa çalışmaanında (runtime) hata ile karşılaşılır.

• Örneğin; diziyi 10 elemanlı olarak tanımladığımızda, 15. elemana erişmekistediğimizde hata ile karşılaşılır (Hata: ArrayIndexOutOfBounds).

• Böyle bir hata mesajının çalışma anında alınması; güvenlik açısından dahaiyi bir durumdur, çünkü diziye ayrılan bellek alanı dışına çıkılıp, diğerverilere müdahale edilmez.

• Dizi Elemanlarına erişmek için; dizininAdi[index] yazımı kullanılır.

• Örneğin;int dizi[]={3,4,11,7,87,45}; � 6 elemanlı diziyi oluşturalım

System.out.println(dizi[3]); -> dizinin 3 indexine sahip elemanı yani 7 konsolayazdırılır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

18

Index 0 1 2 3 4 5

Değer 3 4 11 7 87 45

Page 19: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ ELEMANLARIIN KULLANILMASI

• Dizinin Ekrana Yazdırılması;– Dizinin tüm elemanlarını ekrana yazdırmak veya tüm elemanları üzerinde benzer

işlemler yaptırmak istersek for döngüsü kullanılabilir.

– Örnek;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

19

Tamsayı tipinde dizim isimli dizi tanımlanmış ve içerisine değer atanmıştır.

Döngüdeki dizim.length oluşturulan dizinin elaman sayısını vermektedir. Sıfırdan başlanıp eleman sayısına kadar döngü döndürülecektir.

Döngü sayısı kadar, dizi elemanına erişilip konsola yazdırılmıştır.

Page 20: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ ELEMANLARIIN KULLANILMASI

• Dizinin Ekrana Yazdırılması;– Çok boyutlu dizilerde , dizi boyutuna göre iç içe for döngüleri kullanılır.

– Örnek;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

20

İki boyutlu dizi tanımlanmış ve içerisine değerler girilmiştir.

ikiboyutlu.length ���� dizinin satır sayısını vermektedir.

İkiboyutlu[0].length���� dizinin sütun sayısını vermektedir.

Dizinin satır ve sütun sayısı kadar konsola yazdırılması

Page 21: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

Dizi İşlemleri

Page 22: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ İŞLEMLERİ

• Örnek 1: 1’den 50’ye kadar olan tek sayıları diziye aktarıp konsoldayazdıran Java kodu aşağıdadır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

22

teksayilar isimli tamsayı dizisi tanımlanmıştır ve 50 elemanlı nesnesi oluşturulmuştur.

For döngüsü ilk tek sayı olan 1’den başlatılmış ve döngü artımı i=i+2 ile 2 şer 2 şer yapılmıştır.

Page 23: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ İŞLEMLERİ• Örnek 2: Bir dizi elemanlarının tek tek kontrol edilip, elemanların tek mi

çift mi olduklarını konsola yazdıran Java kodu aşağıdadır;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

23

Döngüdeki dizi elemanlarının he rbirini % işareti ile 2’ye göre modunu aldığımızda kalan 0 oluyorsa eleman çifttir.

Page 24: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

DİZİ İŞLEMLERİ• Örnek 3: Oluşturulan bir dizinin elemanlarını sıralayan ve konsolda

kösteren Java kodu aşağıdadır;

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

24

Arrays sınıfı diziler üzerinde sıralama, arama gibi bir takım işlemlerin yapılmasını sağlar. Arrays kütüphanesi eklenmiştir.

Arrays.sort(dizi ismi); kullanılarak dizi ismi ile verilen dizi küçükten büyüğe sıralanabilir.

Page 25: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

GENEL BAKIŞ

• Tüm programlama dillerinde olduğu gibi Java’da da diziler çokkullanılan veri tiplerindendir.

• Diziler aynı tipteki birden fazla elemanı tutabilirler, bu özelliğibakımından ilkel değişken tiplerinden ayrılırlar.

• Dizi elemanlarına ayrı ayrı erişilebildiği gibi döngüler kullanılarak sıraile otomatik olarak da erişilebilmektedir.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

25

Page 26: 10.Hafta - Java'da Diziler - myo.bartin.edu.trmyo.bartin.edu.tr/usobutay/ntp/10_hafta_diziler.pdf · • Java’da diziler «0» indisinden başlar. Bu nedenle, 5 elemanlı olarak

Ders Bitti.Dinlediğiniz için teşekkürler…

•Uzaktan Eğitim Uygulama ve Araştırma Merkezi