Sayfalar

5 Temmuz 2013 Cuma

JAVA for Döngüsü için Bir Örnek

Malum bir satranç ustası şah ile köylü bir ustanın satranç oyununu herkes bilir . Şahı yenen köylü , şahtan satranç tahtasının ilk karesine bir buğday , ikincisine iki buğday , üçüncüsüne dört buğday ve her bir kareye bir öncesinin iki katı olacak şekilde , tahtanın üzerindki toplam buğdayı istemiştir .

İnce hesap; Hesaplamaya ilk kareler kolay gitmiş. 1. Kareye bir buğday, 2. Kareye iki buğday, 3. Kareye dört buğday... Ancak 10. Kareye gelindiğinde 1023 buğday

Vermeleri gerekiyor. Bu yaklaşık bir avuç buğdaya karşılık gelir; hesabın hep böyle gideceğini, hep köylüye böyle üç beş buğday vereceklerini zannediyorlardı. Zaten 15. Kare yalnızca 1.5 kilo buğday vereceklerdi. 25. Kareye gelince 1.5 ton olduğunu Görmüşler ama fazla heyecanlanma-mışlar. Oysa;

31. Kareye gelince, bu işin şakası olmadığını anlamaya başlamışlar. Çünkü vermeleri gereken buğday

31. Karede 92 tonmuş. 49. Kareye geldikleri zaman 24 milyon ton buğday vermeleri gerekiyor. Bu ise Türkiye’nin bir yıllık buğday üretiminden fazla. 54. Kareye geldiklerinde ise 771 milyon ton buğday vermeleri gerekiyor. Bu da dünyamızın bu günkü ölçülere göre bir buçuk yıllık buğday üretimi. “madem başladık hesaplara devam edelim” deyip bitirmişler.

64. Kare de tamamlandığında bugünkü ölçülerde dünyanın 1500 yıllık buğday üretimini köylüye vermeleri gerektiği ortaya çıkmış.

For döngüsünün anlatımı için gayet güzel bir örnek ve problem olacağı kesin bunun . Mantık olarak ilk kareye 2nin 0. kuvveti , ikinci areye 2 nin 1. kuvveti , üçüncü kareye 2 nin 2. kuvveti ve son kareye 2 nin 63. kuvveti kadar buğday gelecek . Tahtanın üzerinde ise 2^0+2^1+2^2+2^3+...2^63 kadar buğday olacaktır .

Bunu ise JAVA da şu şekilde hesapladım .

public class Satranc {
public static void main(String[] args) {
double Toplam = 0;
for(double i=0; i
Toplam=(double)(Math.pow(2,i)+Toplam+1.0);
}
System.out.println(Toplam);
}
}

Sonuç 1.8446744073709552E19 şeklinde ekrana basıldı ve daha önceki hesapları doğruluyordu .

Toplam=(double)(Math.pow(2,i)+Toplam+1.0); ifadesindeki 1.0 ise , döngüdeki i değişkeini 0 değil 1 den başlattığımız için ilk karede kalan bir buğdaydır.

Bir buğdayı 1gr olarak düşünüp , her bir kareye gelindiğinde tahta üzerindeki toplam buğdayın ağırlığını ve o karedeki buğdayn ağırlığını da hesaplayacak şekilde kodu yazmakta bir antreman olabilir JAVA severler için .

Hiç yorum yok:

Yorum Gönder