Amiga Dünyası sayı 3, sayfa 61

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 61

Hatırlarsanız geçen sayıdaki yazımda son olarak fahrenheit sıcaklık değerlerini celcius sıcaklık değerlerine çeviren ve daha önce kaynak kitap olarak belirttiğim "The C Programming Language" adlı kitaptan alınan bir program yapmış ve programın incelenmesine bu sayıda devam edeceğimi söylemiştim. Kaldığım yerden başlamadan önce biraz önce sözünü ettiğim kitaptan bazı örneklerin Amiga'ya uyarlanmış versiyonlarının yazı dizimde bulunacağını ve verilen programın o kitaptan yararlanılarak yazıldığını belirtmek amacıyla programın başına "K&R'nin kitabından alınarak Amiga'ya uyarlanmıştır" şeklinde bir comment (Tk. açıklama) ekleyeceğimi belirteyim. Buradaki "K&R" deyimi kitabın yazarlarının soyadlarının baş harflerinden oluşan (Kernighan & Ritchie) ve tüm dünyada kullanılan bir kısaltmadır.

Şimdi kaldığımız yere dönelim: Önce geçen sayıdaki yazıyı açın ve dördüncü kutudaki programın gözünüzün önünde olmasını sağlayın.

En son while döngüsünü incelemiştik. Şimdi programın nasıl çalıştığı konusundaki incelememize devam edelim.

Programın yaptığı işin oldukça büyük bir kısmı while döngüsü içinde yapılmaktadır. Celcius sıcaklıkları aşağıdaki satırda hesaplanmakta ve celcius adlı değişkene eşlenmektedir: celcius = (5.0/9.0) * (fahr-32.0);

Burada 5/9 terimi yerine 5.0/9.0 teriminin kullanılmasının sebebi, C'de iki tam sayının bölünmesi sırasında virgülden sonraki kısmın atılmasıdır. Eğer 5/9 terimini kullansaydık, bu sıfıra eşit olduğu için tüm değerler sıfıra eşit olacaktı. Bir sabitteki nokta işareti o sabitin floating point (Tk. virgüllü sayı) sayı olduğunu belirtir. Buradan 5.0/9.0 = 0.555...'dır ki bizim de istediğimiz budur.

Yine 32 yerine 32.0 yazdığım dikkati çekecektir. Aslında bu durumda ikisi de kullanılabilirdi. Çünkü fahr değişkeni bir floating point sayı olduğu için, eğer 32 yazsaydık bu değer C tarafından 32.0'a otomatik olarak çevrilecekti. Floating Point sayıları gereksiz olsa bile virgüllü şekilde (sayı.0) yazmamız programın daha anlaşılabilir olmasını sağlamaktadır.

Bu örnek, C dilinde oldukça kullanılan bir fonksiyon olan printf'in nasıl kullanıldığına da iyi bir örnektir. Printf'in ilk argümanı karakterlerden oluşan bir string'dir (karakter dizisi). Bu dizideki her % işareti buraya diğer argümanların konulacağını belirtir. Örneğin:

Printf ("% 4.0f %6.1f/n", fahr, celcius);

satırında %4.0f ekrana 4 basamaklı ve virgülden sonra hiç basamağı olmayan bir floating point sayı basılacağını, %6.1f ise yine bir floating point sayının ekrana basılacağını fakat sayının basamak uzunluğunun virgülden sonraki bir basamakla beraber altı olacağını belirtmektedir. Bu tanımlamaların bazı kısımları atlanabilir. Örneğin %4f; 4 basamaklı bir floating point sayının basılacağını, %.3f; virgülden sonra 3 basamağı bulunan bir sayı basılacağını sadece %f ise floating point bir sayının basılacağını belirtir. Printf %f'den başka decimal (ondalık düzen) tamsayılar için %d, octal (sekizlik düzen) sayılar için %o, heksadesimal (onaltılık düzen) sayılar %x, karakterler için %c, string'ler (karakter dizileri) için %s ve % işaretinin kendisi içinde %% simgelerini de tanımaktadır.

Printf'in argümanları, ilk argümanda belirtildikleri düzene uygun olarak verilmelidir. Yani eğer ilk argümanda ilk basılacak değer tamsayı, ikincisi floating point sayı olarak verilmişse ikinci argümanın integer (tamsayı), üçüncü argümanın floating point sayı olması gerekir. Aksi halde anlaşılmaz cevaplar alırsınız.

Klavyeyle gezinmek için ← ve → tuşları.