AMIGA ve C (2)

Geçen sayıda sözünü ettiğimiz çevrimin içini incelemeye başlıyoruz. Fahrenayt Santigrat ısı dönüşümlü formülü: sant = (5.0/9.0)*(fahr-32.0); satırıyla programlaştırılmıştır. Örnekte 5.0, 9.0 ve 32.0 ifadelerinde noktadan sonraki 0 ifadesi, yapılan işlemin gerçek sayı olduğunu göstermektedir. Yani 5/9=0, 5.0/9.0=0,555'dir. Burada = endüşük; ifadesinde çelişki varmış gibi görülebilir. Çünkü endüşük değişkeni tamsayı, fahr ise gerçek sayı olarak tanımlanmıştır. C'de esnek bir uygulamayla bu eşitlikte endüşük değişkeninin değeri otomatik olarak gerçek sayıya çevrilmektedir. Bu özellik,

while (fahr < — enyüksek)

ifadesinde parantez içindeki çevrim şartında da görülmektedir. Printf fonksiyonu içindeki ifadelere gelince;

printf sant);

% işareti basılacak her bir değişkeni ifade etmektedir.

Arkadan gelen %4.0f ifadesi 4 karakter uzunluğunda ve noktadan sonra ondalık bölümü bulunmayan gerçek (floatp.) sayıyı göstermektedir. Hemen onu takip eden %06.1f ifadesi ise gerçek değişkenin 6 karakter uzunluğunda ve 1 ondalık haneye sahip olduğunu göstermektedir. ise bildiğiniz satırbaşı gösterimidir. Bu açıklamalar “...” işaretleri arasında yapılmıştır. Bundan sonra ise sözkonusu değişkenler açıklamadaki sırayla yazılır. Yeni gördüğümüz ve değişkenleri ifade eden % işareti değişik şekillerde kullanılabilir;

%d desimal tamsayı %u tamsayı %x Hex (16'lık) tamsayı %c karakter

fahr karakter dizisi fahr karakter olarak kullanılması

fahr = fahr + adım; ifadesi her bir hesaplama değerini adım kadar arttırmaktadır. Bu program çalıştığında aşağıdaki sonuç alınır.

0 -17.8
20 - 6.6
40 4.4
60 15.6

260 126.7 280 137.8 300 148.9

FOR ÇEVRİMİ: C'de kullanılan en önemli komutlardan biri de for işlemidir. Bundan önce vermiş olduğumuz ısı çevrimi programını for döngüsü kullanarak ne kadar basit yazılabileceğini görelim:

main ( ) /* aynı işlemin for çevrimiyle yapılması */

|
ınt fahr;
for (fahr —-0; fahr — —300; fahr * 20)
printf (© fahr, (5.0/9.0) *fahr-
32);
|

Program çalıştırıldığında bir önceki sonucun aynısını verecektir. Şimdi farkları inceleyelim. Öncelikle birçok değişkenin kullanımı yerine sadece bir değişken kullanılmıştır. Alt ve üst ısı limitleri ve adım değişkenleri yerine for işleminin parametreleri olarak yapılabildiği bu örnekte görülmektedir. printf içinde (5.0/9.0)*(fahr-32) formülü ile santigrat değeri hesaplanmakta ve aynı zamanda yazılmaktadır.

For çevrimini while işleminin genelleştirilmişi olarak düşünebiliriz. Çünkü while işlemi for işleminin özel bir durumudur. For işlemi üç bölümde incelenebilir. Bunlardan birincisi değişkene atama yapan bir bölümdür. Bu örnekte,

fahr - 0

işlemi bu şekilde kullanılmıştır.

İkinci parça karşılaştırma yapan bölümdür. Bunu while işleminin kullanımında gördük. For çevrimi bu eşitlik sağlanana kadar devam eder. Örnekte bu bölüm fahr <= 300 olarak görülmektedir. For çevriminin fahrenayt ısı değerinin 300'den küçük ya da eşit olana kadar devam edeceğini ifade etmektedir. For çevriminin devam etmesi printf (...... ) işleminin fahr <= 300 olana kadar tekrarlanması demektir. Eşitliğin sağlanmaması durumunda bir alt işleme geçilir. Örnekte printf (.....) işleminden sonra bir işlem olmadığından program sona erer. Son ve üçüncü bölüm ise işlem bölümüdür ve her for çevriminde bir tekrarlanır. Bu işlem yardımıyla ilk örnektedir adım değişkeninin kullanılması gereği ortadan kalkmaktadır.

SEMBOLİK SABİTLER:

Son örnekte kullandığımız adım ve en yüksek ısı değeri 20 ve 300 olarak belirlenmiştir. Doğal olarak bu değerler farklı olabilir. Örneğin hesaplama her 10 birimlik artımda tekrarlanabilir. Bu durumda program

Commodore'

l1 çık öğrenim:

içinde düzeltme gereklidir. Bu işlemin pratik olmaması nedeniyle sabitlerin sembolik gösterimi özelliğinden yararlanılabilir.

Örneğimizi bu mantıkla tekrar yazarsak:

# define ENDÜŞÜK O
4&define ENYÜKSEK 300
# define ADIM 20
main ()
int fahr;
for (fahr -ENDÜŞÜK; fahr < - ENYÜKSEK;
fahr -fahr * ADIM)
printf (“ fahr, (5.0/9.0)*(fahr-32));

Örnekte EN DÜŞÜK, EN YÜKSEK, ADIM #define komutu ile yanındaki değerlere eşitlenmiştir. Böylece bir değişiklik gerektiğinde sadece bu bölüm düzenlenir. Sembolik sabitler genellikle büyük harflerle gösterilir. Bunun nedeni ise sembolik sabitlerin değişkenlerle karışmasını önlemek ve kolay incelenen program yazılımı sağlamak içindir. Ayrıca #define işleminin sonunda noktalı virgül (;) kullanılmadığını da belirtelim.