10.Hafta - Java'da Diziler -...
Transcript of 10.Hafta - Java'da Diziler -...
JAVA PROGRAMLAMA
Öğr. Gör. Utku SOBUTAY
İÇ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
Java’da Diziler
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
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
Dizi Tanımlama ve İlk Değer Atama
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
DİZİ TANIMLAMA VE İLK DEĞER ATAMA
• Tek Boyutlu Diziler:
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
8
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
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
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
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
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.
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
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]
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.
Dizi Elemanlarının Kullanılması
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
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.
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ı
Dizi İşlemleri
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.
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.
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.
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
Ders Bitti.Dinlediğiniz için teşekkürler…
•Uzaktan Eğitim Uygulama ve Araştırma Merkezi