Algoritma ve Programlamaya Giriş II 5. hafta

advertisement
5.HAFTA
İlk Değer Alma Sırası
Nesnelere ait global alanlara başlangıç değerleri hemen verilir; üstelik, yapılandırıcılardan (constructor)
bile önce... Belirtilen alanların konumu hangi sırada ise başlangıç değeri alma sırasında aynı olur. ()
Örnek: Defter.java ()
class Kagit {
public Kagit(int i) {
System.out.println("Kagit ("+i+") ");
}
}
public class Defter {
Kagit k1 = new Kagit(1);
// dikkat
public Defter() {
System.out.println("Defter() yapilandirici ");
k2 = new Kagit(33);
//artık başka bir Kagit nesnesine bağlı
}
Kagit k2 = new Kagit(2); //dikkat
public void islemTamam() {
System.out.println("Islem tamam");
}
Kagit k3 = new Kagit(3);
//dikkat
public static void main (String args[]) throws
Exception {
Defter d = new Defter();
d.islemTamam();
}
}
Uygulama sonucu aşağıdaki gibi olur:
Kagit (1)
Kagit (2)
Kagit (3)
Defter() yapilandirici
Kagit (33)
Islem tamam
Diziler ve Dizi Elemanlarına Erişim
Java dilinde dizi kullanımı diğer dillere nazaran daha az risklidir; anlamı, eğer tanımladığımız dizinin
sınırları aşılırsak, çalışma-anında (runtime) hata ile karşılaşacağımızdır. Örneğin 20 elemanlı bir double
dizisi tanımlanmış olsun. Eğer bu dizinin 78. elemanına ulaşılmak istenirse (- ki böyle bir indisli eleman
yok), olanlar olur ve çalışma-anında hata alınır; böylesi hatanın (ArrayIndexOutOfBounds Exception)
çalışma-anında alınması güvenlik açısından güzel bir olaydır. Böylece dizi için ayrılmış bellek alanından
dışarı çıkılıp başka verilere müdahale edilmesi engellenmiş olunur.
F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II
5. hafta
1
Örnek: DiziElemanlariGosterimBir.java ()
public class DiziElemanlariGosterimBir {
public static void main(String args[]) {
double[] d = { 2.1, 3.4, 4.6, 1.1, 0.11 } ;
String[] s = { "defter", "kalem", "sarman", "tekir", "boncuk" }; ;
// double tipindeki dizimizi ekrana yazdırıyoruz
for (int i = 0 ; i < d.length ; i ++) {
System.out.println("d["+i+"] = " + d[i] );
// System.out.println("d["+78+"] = " + d[78] );
// Hata !
}
System.out.println("---------------");
// String tipindeki dizimizi ekrana yazdırıyoruz
for (int x = 0 ; x < s.length ; x ++) {
System.out.println("s["+x+"] = " + s[x] );
// System.out.println("s["+78+"]=" + s[78] );
}
// Hata !
}
}
length ifadesiyle bir dizinin içerisindeki eleman sayısı öğrenilir. Bu örnekte iki adet dizi tanımlandı:
double ve String türündeki dizilerin içerisine 5’er adet eleman yerleştirildi ve sonradan bunları for
döngüsü ile ekrana yazdırıldı. i < d.length ifadesine dikkat edilirse, döngü sayacın 4’e kadar
artmaktadır; ancak, döngü sayacının 0'dan başladığı unutulmamalıdır. ()
Eğer 5 elemana sahip olan dizinin 78. elemanına erişilmeye kalkışılırsa, derleme anında (compile-time) bir
hata ile karşılaşılmaz; ancak, uygulama yürütüldüğü zaman; yani, çalışma-anında (runtime) hata ile
karşılaşılır. Uygulamanın sonucu aşağıdaki gibi olur: ()
d[0] = 2.1
d[1] = 3.4
d[2] = 4.6
d[3] = 1.1
d[4] = 0.11
--------------s[0] = defter
s[1] = kalem
s[2] = sarman
s[3] = tekir
s[4] = boncuk
F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II
5. hafta
2
Uygulama Çalışmaları:
1Kullanıcıdan 10 tam sayı alan ve bu sayılardan en büyük olanını bulan bir java
programı yazınız.(Not: Programda yordam kullanınız).
2Aldığı tam sayılardan en küçük olanını ekrana yazdıran bir java programını metotlarla
gerçekleştiriniz.( kaç sayı girileceğini siz belirleyiniz).
3Java Sunu 2’ de yer alan temel tanımlardaki yapıya uygun olarak kendiniz bir sınıf
üretiniz. Sınıf üye değişkenler, yapılandırıcı metot, ve çeşitli işlemleri gerçekleştiren bazı
diğer metotları içerebilir. Ürettiğiniz sınıfı baz alarak yeni nesneler üretiniz ve main fonksiyon
içerisinden bu nesnelerinizi kullanınız.(Mesela, şehir, araba, öğrenci sınıfı vb)
F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II
5. hafta
3
Download