Bu sayfadaki yazılar
Sayfanın metni
Sayfa 63
DİLLER
________________KUTU1________________
1> Fahrenheit-Celsius programını modifiye ederek sıcaklık listesinin başına aşağıdaki gibi bir başlık konmasını sağlayın:
Fahrenheit Celsius 0 -17.8 20 -6.7 40 4.4 280 137.8 300 148.9 2> 0'dan 300'e kadar olan sıcaklıklar için Celsius-Fahrenheit tablosu çıkaran bir program yazın.
3> 1'den 170'e kadar olan sayıları toplayan ve her on adımda bir ara toplamı yazan bir program yazın. Programın çıktısı aşağıdaki gibi olmalıdır.
1'den 170'e kadar sayıların toplamı adım no: Ara toplam adım 1: 55 adım 2: 210 adım 16: 12880 adım 17: 14535 genel toplam:
14535
_________ KUTU 3 _________
1> Fahrenheit-Celsius programını değiştirerek programın sayıları tersten basmasını yani 300'den 0'a doğru hesap yapmasını sağlayın.
2> Birinci kutudaki üçüncü alıştırmayı while ve for döngülerini beraber kullanarak yapın.
3> Birinci kutudaki üçüncü alıştırmayı sadece for döngüsünü kullanarak yapın.
4> İkinin ondördüncü üssünü bir for döngüsü yardımıyla hesaplayın.
_____________ KUTU 4 ____________
1> Aşağıdaki programı yazın ve RAM Disk'e kaydedin.
/• K&R'nin kitabından alınarak Amiga'ya
uyarlanmıştır */
#define ALT 0 /'tablonun alt sının*/ #deflne ÜST 300 /'üst sınır*/ #define ADIM 20 /*adım büyüklüğü*/
main() /'fahrenheit-celsius tablosu*/ { int fahr;
for(fahr=ALT;fahr<=ÜST;fahr=fahr+ADIM) prlntf(
M%4d %6.1 f
M ,fahr,(5.0/9.0)*(fahr-32)); }
2> Şimdi programı "cc ram:program-ismi.c" ile compile edin.
3> Şimdi de "ln ram:program-ismi.o -lm -lc" ile link edin. 4> Programın çıktısı daha önceki programlarla aynıdır.
_________ KUTU 2________________
1> Aşağıdaki programı yazıp RAM Disk'e kaydedin: /* K&R'nin kitabından alınarak Amiga'ya
uyarlanmıştır */ main() { int fahr; for(fahr=0;fahr<=300;fahr=fahr+20) printf("%4d%6.1f",fahr,(5.0/9.0)*(fahr-32)); } 2> Şimdi programınızı "cc ramrprogram-ismi.c" ile compile edin. 3> Şimdi de "İn ram:program-lsml.o -İm -Ic" ile link edin. 4> Programı çalıştırırsanız size aşağıdakine benzer bir liste verir: 0 -17.8 20 -6.7 40 4.4 280 137.8 300 148.9
________________KUTU 5________________
1> Aşağıdaki programı yazıp RamDisk'e kaydedin. /* K&R'nln kitabından alınarak Amiga'ya uyarlanmıştır */ #derine EOF -1 main() /'giriş'i çıkışa kopyala birinci versiyon*/ { int c; c=getchar<); whlle<cl=EOF) { putchar(c); csgetchar(); } } 2> Şimdi programı "cc ram:program-ismi.c" ile compile edin.
3> Şimdi de "ln ram:program-ismi.o -lc" ile link edin. 4> Programı çalıştırırken dikkat etmeniz gereken bir durum var. Eğer programı sadece adını yazarak çalıştırırsanız normal giriş klavye ve normal çıkış ekran olduğu için siz ne yazarsanız program onu ekrana yazacaktır. Programı bu şekilde çalıştırırsanız çıkmak için Ctrl-C tuşlarına basın. Text dosyaları kopyalamak için ise programa giriş ve çıkış yönlerini AmigaDOS yardımıyla ok işaretleri yardımıyla (ing. redirection) vermelisiniz. Bunun için, program-ismi < kopyalanacak_dosyanın_adı > dosyanın_kopyalanacağı_dosyanın_adı şeklinde yazıp programı çalıştırmalısınız.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 62
Bütün bunlara rağmen printf, C'nin bir parçası değildir. O sadece standart C kütüphanesinde bulunan bir fonksiyondur. Dolayısıyla BASIC'teki Print komutuyla hemen hemen aynı işi yapmasına karşın Basic'teki durumun aksine, C bu fonksiyonu içermemektedir. Aslında C'de I/O (İng. Input/Output, Tk. giriş/çıkış) ile ilgili hiçbir komut bulunmamaktadır. Fakat printf hiçbir zaman bir farklılık oluşturmaz. O, sadece yararlı bir fonksiyondur o kadar. İşte bu sebepten dolayı (Soru: Hangi sebepten? Cevap: C'nin komut sayısının oldukça az olması sebebinden) C bellekte fazla yer kaplamaz ve bu da programı işleten bilgisayarın daha iyi çalışmasına destek olur (işte C'nin bir avantajı daha).
Bu arada Aztec C'deki printf'in bazı değişiklikleri var. Bu da şu:
Aztec C kütüphanelerinde 2 tane printf var. Bunlardan ilki C kütüphanesinde, ikincisi ise M kütüphanesinde. İlk printf sadece tamsayıları ve karakterleri basabiliyor. İkincisi ise bunlara ek olarak floating point sayıları da basabiliyor. Eğer dikkatinizi çekmişse fahrenheitcelcius programını link ederken "ln programismi.c -lc" yerine, "ln programismi.c -lm -lc" ile link ettik. Bu uygulamanın sebebi, printf'in iki değişik versiyonunun olması. Eğer programı "ln programismi.c -lc" ile link etseydik c kütüphanesindeki printf kullanılacak ve bu da floating point sayıları basamadığından, biz sonuçları doğru olarak alamayacaktık (gerçekte %f görülen yer karakter olarak algılanacak ve %f şeklinde basılacaktı). Bundan dolayı programı ikinci metodu kullanarak ilk önce m kütüphanesi ile link ettik ve floating point sayıları basabilen printf'i kullanmış olduk.
Artık size biraz problem vermenin zamanı geldi. Bunun için ilk kutudaki problemleri lütfen yapın. Sizin de kabul edeceğiniz gibi ne kadar çok alıştırma yaparsanız o kadar iyi olur.
FOR KOMUTU
Tahmin edebileceğiniz gibi bir programı yazmanın genellikle birden fazla yolu vardır. Doğal olarak bizim sıcaklık programımız da bir istisna değil. Programın başka bir versiyonunu ikinci kutuda bulabilirsiniz (haydi ikinci kutuya).
Gördüğünüz gibi bu program da aynı cevapları çıkartmakta. Önemli değişikliklerden biri, çoğu değişkenin kaldırılması. Sadece fahr değişkeni printf'de %d'nin işlevini göstermek için kalmış durumda. Üst alt sınırlar ve adım sayısı for döngüsü içinde sabitler olarak görülmektedirler. Ayrıca Celsius sıcaklığını hesaplayan satır da, printf'in bir argümanı olarak programda yer almaktadır.
Son değişiklik C'deki önemli ve genel kurallardan birini bize göstermektedir. Herhangi bir programda eğer programın içinde bir yerde herhangi bir çe-