Çözen : Şadi Evren ŞEKER

Aşağıdaki soruların çözümlerini görmek için şifre olarak : www.setegitim.com giriniz.

Aşağıdaki kodların ekrana basacağı sonuçları yazınız:

[password]Yukarıdaki sorunun çözümü 0 0 şeklinde iki 0 değeridir. Yukarıdaki kodda ilk önce “x” isminde bir dizi (array) tanımlanmış ve içine 1’den 4’e kadar olan sayılar konulmuştur. Bu durumda dizinin boyutu da 4 olacaktır. Ancak hemen ardından gelen satırda x değişkenin içerisine yeni bir dizi tanımlanarak konulmuştur. Bu durumda önceki tanım geçerli ancak değer geçersiz olur. Yani x dizisinin içerisinde 2 elemanlı ve değeri atanmamış bir int dizi bulunmaktadır. JAVA dilinde değeri atanmayan int değişkenlere otomatik olarak 0 değeri atanır. Bu durumda dizide iki adet 0 değeri bulunmaktadır.

Döngü içerisinde ise bu dizinin içeriği bastırılmış dolayısıyla ekranda 0 0 sonucu çıkmıştır. [/password]

[password]Yukarıdaki kod çalışmaz ve bir istisna (exception) döndürür. Çünkü 10 boyutuna sahip olan bir dizinin 10. Elemanına erişilemez. En son 9. Elemana erişilebilir. Yukarıdaki kodda önce 10 elemanlı dizi tanımlanmıştır. Bu dizinin ismi “list”tir ve kodda list.length ile dizini boayutu alındığında sayısal olarak 10 değeri alınmış olunur. Döngü dikkat edilirse <= olana kadar dönmektedir. Bu durumda döngü değişkeni olan i, değer olarak 10’a eşit olacak ve eşit olduğunda da list[i] ile başlayan satırda list isimli dizinin 10. Elemanına erişilmiş olacaktır. Bu durumda java dilinde ArrayIndexOutofBoundsException olarak bir istisna (exception) fırlatır. [/password]

[password]Yukarıdaki kodun çıktısı “s1 and s2 have the same contents” yazısıdır. Sebebi tanımlanan iki farklı dizgi (String) olan S1 ve S2 değerlerinin eşit olması ve bu eşitliğin String sınıfının (class) bir metodu olan equals ile yapılmasıdır. Şayet yukarıdaki kodda equals yerine s1==s2 ifadesi kullanılsaydı else durumuna düşülmesi beklenirdir çünkü bu iki değişkenin gösterdiği adresler aynı değildir. Ancak içerikleri aynıdır ve içeriklerinin kontrolü equals fonksiyonu ile yapılabilir. [/password]

Yukarıdaki point sınıfının (class) kaç yapıcısı (constructor) bulunmaktadır?

[password]Cevap : 2. İsmi Point olan ve sınıf ile aynı isme sahip olan fonksiyonlar yapıcılardır (constructors) ve yukarıda boş parametreli ve iki parametreli iki ayrı yapıcı metot bulunmaktadır. [/password]

Mystery metodu ne işe yaramaktadır?

[password]Metoda parametre olarak yine Point sınıfından bir nesne (object) verilmektedir. Bu durumda yeni bir nokta bilgisi parametre olarak gelmektedir. Bu noktanın ve mevcut noktanın x ve y değerleri toplanarak ikiye bölünmüş ve mevcut noktanın X ve Y değeri olarak atanmıştır. Bu durumda mystery metodunun yaptığı iş, bir noktayı parametre alarak, mevcut nokta ile bu yeni noktanın ortasındaki nokta koordinatlarına kaydırması olarak tanımlanabilir. [/password]

Bir noktayı parametre olarak alan ve mevcut nokta ile bu nokta arasındaki mesafeyi hesaplayan bir metot yazınız.

[password]Yukarıdaki örnekte bulunan mystery metoduna benzer bir metot yazıp Pisagor bağlantısından hipotenüsü hesaplayarak mesafeyi ölçebiliriz. Sonuçta kullanılan X ve Y değerleri Kartezyen uzaydaki (cartesian space) olduğu için X ve Y koordinat değerleri arasındaki farktan bulunan dik üçgenin hipotenüsü mesafeyi verecektir.

Bu durumda fonksiyonumuz aşağıdaki şekilde olabilir:

public float mesafe(Point hedef){

int a = hedef.getX()-getX();

int b = hedef.getY()-getY();

return Math.sqrt(a*a+b*b);

}

[/password]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir