Amiga C

2. Bölüm

Erdem Taylan

C DÜNYASI

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 birinci 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\"); 
satırı bir fonksiyonun -bu durumda printf- çağrılmasını göstermektedir. Burada printf'in argümanı "Erdem Taylan\n"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 ikinci 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, üçü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 (j>i)
 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şçakalın.


KUTU 1

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 baslı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 dergimizdeki "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 sunra "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.

KUTU 2

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

main()
{
 printf("Erdem ");
 printf("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.

KUTU 3

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

/*bu program Fahrenheit-Celsius sıcaklık tablosunu
0'dan 300'e kadar sıcaklıklar için çıkarır*/

main()
{
int lower,upper,step;
float fahr,celsius;

lower=0; /*sıcaklık listesinin en düşük sınırı*/
upper=300; /*sıcaklık listesinin 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.1f",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ı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