C DÜNYASI

Bu ayki C yazıma üzülerek geçen sayıdaki önemli iki hatayı düzelterek başlamak istiyorum:

Geçen ayki sayıda Aztec C'nin daha hızlı çalışmasını sağlamak amacıyla compiler'ın yaptığı ara işlemlerin Ram Disk'te gerçekleşmesi gerektiğini belirtmiştim. Bunu yapabilmek için gerekli adımları da Kutu 1'de belirtmiştim. Fakat Kutu 1'de dizgi sırasında olan bir hata sonucu dördüncü adım atlanmış ve beşinci adım dördüncü adımın yerine yazılmış. Sizin de hatayı fark ettiğinizi sanıyorum. Çünkü kutuda dört numaralı adımdan altı numaralı olana atlanıyor. Yapılan işlem Aztec C'de rahat çalışabilmek için oldukça önemli olduğundan bu ayki yazımda, birinci kutuda geçen ayın birinci kutusunu tekrarlıyorum. İkinci hata ise iki, üç ve dört numaralı kutularda. Hata şu: "\" (backslash) işaretleri yerine "/" (slash) işareti konmuş. Öyleyse bu ay yapacağınız ilk iş hataları düzeltmek. Öncelikle birinci kutudaki adımları yapın. Daha sonra geçen ayın dergisini açarak ikinci, üçüncü ve dördüncü kutulardaki "/" işaretlerini "\" işaretine çevirin. Böylece denediğinizde çalışmadığını gördüğünüz adımların gerçekleştiğini göreceksiniz. Ayrıca derginizin bu gibi dizgi hatalarına karşı çok duyarlı olduğunu ve hatanın ilk sayı kargaşasından dolayı ortaya çıktığını belirtmek isterim.

Hatamızı düzelttikten sonra artık biraz C konuşmaya başlayabiliriz sanırım.

Bence (ve sanırım sizce de) bir dili öğrenmenin tek yolu, o dilde programlar yapmaktır. Bundan dolayı isterseniz C dünyasına çabuk bir giriş yapalım. Buradaki amacım, dilin önemli özelliklerini size gerçek programlarla göstermek. Dolayısıyla bu aşamada size C'nin tüm olanaklarını değil, genel kavramlarını göstermeye çalışacağım.

Bütün dillerde öğrenilen ilk program, adınızı yazdırmaktır. C'de bunu yapmanın yolu aşağıdaki gibidir:

Main () 
{
printf ("Erdem Taylan\n"); 
   }

Bu programı nasıl derleyip çalıştıracağınızı merak ediyorsanız, hemen ikinci kutuya bakın ve merakınızı giderin.

Şimdi programla ilgili açıklamalar: Herhangi bir C programı ne konuda olursa olsun bir veya daha fazla fonksiyondan oluşur. Bu fonksiyonlar Basic veya Fortran'daki subrutinlere benzer. Örneğimizdeki Main'de bu fonksiyonlardan biridir. Normalde C fonksiyonlarına istediğiniz ismi verebilirsiniz. Fakat Main özel bir fonksiyonun adıdır. Programınız Main adlı fonksiyonun başladığı yerden çalışmaya başlar. Bu demektir ki, programınızın çalışması için bir yerlerde Main adlı bir fonksiyonun mutlaka olması gerekli. Main fonksiyonunun yaptığı iş genellikle programın diğer fonksiyonlarını harekete geçirmektir. Dolayısıyla Basic'te olduğu gibi programınızdaki her değişiklikte ana programı tekrar düzenleme zorunluluğu ortadan kalkmış olur. C'de böyle bir durumda yapacağınız iş programdaki yardımcı fonksiyonları değiştirmektir.

C'deki fonksiyonlar birbirleriyle argümanlar yoluyla haberleşirler. Argümanlar, fonksiyon adından sonra gelen "( )" parantezler içinde belirtilir. Bizim programımızdaki Main hiçbir argümanı olmayan bir fonksiyon olduğu için parantezlerin içi boş durumda. Main satırından sonraki süslü parantezler ("{" veya "}") ise, programı oluşturan satırları sınırlamak için kullanılmakta. Bir fonksiyon, ana isim ve hemen isimden sonra parantez içinde argüman listesi yazılarak tanımlanır. Fonksiyonları çağırmak için sadece adının yazılması yeterlidir. Dolayısıyla Basic'te olduğu gibi "CALL fonksiyon-ismi (argümanlar)" yerine sadece "fonksiyon-ismi (argümanlar)" yazmanız yeterli. Fonksiyon isminden sonraki parantezler, hiçbir argüman yoksa da mutlaka gerekli (Main'de olduğu gibi). Programdaki;

printf ("Erdem Taylan\n"); satırı bir fonksiyonun -bu durumda printf- çağrılmasını göstermektedir. Burada printf'in argümanı "Erdem Taylan"dır. Buradaki printf, C kütüphanelerindeki bir fonksiyondur.

Printf'in argümanı içindeki "\n", "Erdem Taylan" yazısından sonra bir satır atlanmasını sağlamaktadır. Yani printf, bir argümanı ekrana yazdıktan sonra otomatik olarak bir satır atlamamaktadır. Bunu göstermek için ilk programının değişik bir versiyonunu üçüncü kutuda bulabilirsiniz.

Dikkat ederseniz "\n" sadece tek bir karakter gibi düşünülmektedir (bu durumda new line = yeni satır karakteri). C "\n"den başka; tab karakteri için "\t", backspace (geri silme) için "\b", çift tırnak için "\"" ve backslash'in kendisi için "\\" karakterlerini bize sunmaktadır.

DEĞİŞKENLER VE ARİTMETİK

Yazacağımız ikinci program, size C'de değişken kullanımının ve aritmetik işlemlerin nasıl yapıldığını göstermek için hazırlandı. Programı yazmak için, dördüncü kutudaki adımları uygulayın ve programın çalışmasından sonra tekrar buraya gelin (bekliyorum?).

Programdaki ilk iki satır: /*bu program Fahrenheit-Celsius sıcaklık tablosunu 0'dan 300'e kadar sıcaklıklar için çıkarır*/ bir açıklamadır (comment). "/*" ve "*/" işaretleri arasında kalan her türlü bilgi, compiler (derleyici) tarafından açıklama olarak değerlendirilir ve işleme konmaz. Açıklamalar programda herhangi bir yerde olabilirler ve Basic'teki REMark'larla aynı görevi yaparlar.

C'de bütün değişkenler kullanılmadan önce tanımlanmak zorundadırlar. Genellikle bu işlem çalıştırılabilir bir program satırı yazılmadan yapılır, yani herhangi bir komut veya fonksiyon kullanmadan bütün değişkenler tanımlanmalıdır. Eğer bir komut satırından sonra bir değişken tanımlarsanız, compiler sizi uyarır ve bir hata kodu vererek işlemi durdurur.

Tanımlamalar, bir değişken adı ve değişkenin türü belirtilerek yapılır. Örneğin:

int lower, upper, step; float fahr, celsius; yazmakla değişken tanımlamış olursunuz. Buradaki int terimi, tamsayı (Integer) anlamına, float ise virgüllü sayılar (Floating point) anlamına gelir.

C'nin bize sunduğu temel data türleri aşağıdaki gibidir;

char karakter short kısa integer long uzun integer double çift duyarlıklı floating point Programın hesaplamaya asıl başladığı yer değişkenlerin bazı sayılara eşlendiği;

lower = 0; 
upper = 300; 
step = 20; 
fahr = lower; 
satırlarıyla başlamaktadır.

Programdaki hesaplamaların hepsi aynı yöntemle, yani bir döngü yardımıyla yapılmaktadır ki, bu da while döngüsüdür.

while (fahr<= upper) {
... 
}

Bu döngünün çalışma düzeni şöyledir: Önce parantezin içindeki koşul kontrol edilir. Eğer bu doğru ise döngünün içindeki süslü parantezle sınırlanmış komutlar çalıştırılır. Daha sonra koşul tekrar kontrol edilir ve koşul sağlanmazsa döngüden çıkılır, program kapalı süslü parantezden sonraki satırdan devam eder.

While döngüsünün içeriği, ya süslü parantezler içinde sınırlanmış birkaç komut satırı ya da süslü parantezlerle sınırlanmamış tek bir satırdan oluşur. İkinci olasılığa örnek olarak aşağıdaki bölüm verilebilir:

while (i<j)

i = 2*i; Ana programımızdaki While döngüsünde kullandığımız süslü parantezler ara komutlar onların içinde olmak koşuluyla istenilen yere konulabilirler. Ben size bu olasılıklardan en sık kullanılanlarından birini gösterdim.

Bu ayki C yazımızı burada noktalıyoruz. Gelecek ay son yazdığımız programın incelemesine devam edecek ve diğer döngü çeşitlerini de göreceğiz. Şimdilik hoşça kalın.

1> Bilgisayarınızı açın, 
2> Aztec C'nin birinci disketini takın, 
3> Bilgisayar işini bitirdikten sonra (yeşil ışık 
söndükten sonra), "ed dfO:s/startup-sequence" 
yazın, 
4> Dosyanın içinde "df0:BIN/set 
CCTEMP=sys: " yazılı yeri bulun (dosyanın 
sonlarına yakın bir yerde), 
5> Bu satın "dfO:BIN/set CCTEMP=ram: " ola- 
rak değiştirin, 
6> Böylece CC'nin yaptığı ara işlemlerin Ram 
Disk'te yapılmasını dolayısıyla da çok daha hız- 
lı olmasını sağlarsınız, 
7> Ayrıca; eğer derleyeceğiniz dosyayı'da Ram 
Disk'te açarsanız işlemler daha da hızlanır.

1> CLI'da ed ram:isim.c yazın. 2> Karşınıza çıkan editörde yazıdaki programı yazın. 3> "Escape" tuşuna bastıktan sonra "x" tuşuna, daha sonra "Return" tuşuna basın. Böylece yazdığınız programı Ram Disk'e isim.c adı altında kaydetmiş olursunuz. (Bu adımda görüldüğü gibi iyi CLI bilgisi başarınız açısından oldukça önemli. Eğer CLI bilginiz yeterli değilse; hem derginizdeki "Amiga Dost" yazısını takip edin hem de bilgisayarın yanında verilen WorkBench kitabının CLI bölümüne iyice çalışın. Yazı dizimin bundan sonraki bölümlerinde ilk sayıda da belirttiğim gibi CLI bilgisinin iyi olduğu kabul edilecektir. Yani bundan sonra "ed'yi açın programı yazın şu şu tuşlara basın" yerine "programı yazıp kaydedin" denilecektir.) 4> Şimdi "cc ram:isim.c" yazın. 5> Daha sonra "ln ram:isim.o -lc" yazın. 6> Şimdi eğer "dir ram:" yazarsanız. Ram Disk'te isim.c, isim.o, isim adlı üç dosya olduğunu görürsünüz. 7> Artık ram:isim yazarak programınızı çalıştırabilirsiniz.

1> Editörü açarak aşağıdaki programı yazın ve Ram Disk'e kaydedin.

main()
{
printf(" Erdem "); 
prinlf("Taylan"); 
printf(""); 
}

2> Şimdi programı compile edin. 3> Eğer programı çalıştırırsanız, ilk yazdığınız programla aynı işi yaptığını görürsünüz.

1> Editörü açarak aşağıdaki programı yazın ve Ram Disk'e kaydedin.

/*bu program Fahrenheit-Celsius sıcaklık 
tablosunu 
O'dan 300'e kadar sıcaklıklar için çıkarır*/
main()
{ 
ini lower,upper,step; 
float fahr.celsius;
lower=0; /*sıcaklık listesinin en düşük sının*/ 
upper=300; /*sıcaklık listesinim en büyük 
sınırı*/ 
step=20; /*adım büyüklüğü*/
fahr=lower, 
while(fahr<=upper) {
celsius=(5.0/9.0)*(fahr-32.0): 
printf("%4.0f %6. lf '.fahr.celsius); 
fahr=fahr+step;
}
}
2> Şimdi programınızı "cc ram:program-ismi.c" 
ile compile edin. 
3> Şimdi de "ln ram:program-ismi.c -lm -lc" ile 
link edin. 
4> Programı çalıştınrsanız size aşağıdakine 
benzer bir liste verir. 
0 -17.8 
20 -6.7 
40 4.4 
……… 
280 137.8 
300 148.9