Amiga Dünyası sayı 1, sayfa 29

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 29

C'nin kullandığı yöntemlerin en önemlilerinin çoğu kıyasla eski fakat hâlâ daha sıkça kullanılan bir dil olan BCPL'den alınmıştır (AmigaDos bu dil ile yazılmıştır). BCPL'nin C üzerindeki etkisi dolaylı olarak başka bir dil olan B'den gelmektedir. Bu dil ise yine UNIX için Ken Thompson tarafından 1970 yılında hazırlanmıştır. C'deki ana veri tipleri: Karakterler (char), tam sayılar (int), kayan noktalı sayılardır (virgüllü sayılar da denir, C'deki kısaltması float). Ayrıca bunların düzenlenmesiyle elde edilmiş pointer (Tk: işaretçi), diziler (İng: arrays), structure'lar (Tk: yapı, düzen), union'lar (Tk: birleşmiş, birleştirilmiş veri yapılarıyla oluşan tipin C'deki adıdır) ve fonksiyonlardır (İng: function).

C iyi düzenlenmiş yapısal programlar için gerekli olan akış-kontrol elemanları da sunmaktadır. Bunlar arasında: karar testleri (if), çıkış testi başlangıçta olan döngüler (while, for), çıkış testi sonda olan döngüler (do) ve çeşitli olasılıklardan bir tanesini seçme (switch) bulunmaktadır.

C genelde assembler'larda bulunan adres aritmetiği ve pointer'ları da içerir. Fonksiyonlara geçirilen değişkenler sadece değerleri kopyalanarak işleme sokulurlar. Dolayısıyla bir fonksiyon çağırılırken kendisine geçirilen değişkenlerin değerlerini etkileyemez. Eğer bu isteniyorsa o değişkene bir pointer tanımlanır ve fonksiyona bu pointer geçirilir. Böylece fonksiyon o pointer'ın işaret ettiği adrese giderek değişkeni modifiye edebilir. Bu arada farklı olarak diziler fonksiyonlara geçirilirken değer olarak değil, adres olarak geçirildiğinden onlar için yukarıda anlatılanlar geçerli değildir.

C'de fonksiyonların ayrı bir önemi vardır. Çünkü her işlem fonksiyonlara bölünerek programlanmaktadır. İsterseniz tek bir fonksiyon içinde aynen BASIC'te olduğu gibi her şeyi programlayabilirsiniz ama bu C'ye ve onun olanaklarına kötülük etmekten başka bir işe yaramaz. Herhangi bir fonksiyon kendi kendini çağırabilir (İng: recursion). Fonksiyonların içinde tanımlanan değişkenler otomatiktir, yani fonksiyon işlemini bitirdiğinde otomatik olarak bellekten silinirler. Değişkenler bir fonksiyona ait veya bütün fonksiyonların kullanabileceği şekilde (İng: global) olabilir.

Evet C üzerine bu kadar sözden sonra biraz da Amiga ve C hakkında konuşalım:

AMIGA ve C

Amiga gibi işletim sistemi DOS'u hariç tamamen C'de yazılmış bir makinede C'yi kullanmanın ayrı bir zevki olduğu şüphesiz. Bugün Amiga'da C dilinde program yazmak isterseniz, kullanabileceğiniz iki ticari program var. Biri Manx firmasının Aztec C V3.6'sı, diğeri de Lattice firmasının Lattice C v5.0'ı. Her ne kadar Aztec C'nin 5.0 versiyonu çıkmış olsa da, o şu anda Türkiye'ye ulaşmadı. İki programın sunduğu olanaklar birbirine yakın ama biz Aztec C V3.6'yı kullanıyoruz. Çünkü bu programda hazırlanan C programları biraz daha hızlı çalışıyor, ayrıca programın kodunun uzunluğu önemli miktarda az oluyor. Yine Aztec C teknik olarak da bazı üstünlüklere sahip. Örneğin uzun programları yazarken oldukça gerekli olan birçok bellek düzenleme yöntemi sunuyor. Ayrıca Source Level Debugger (Tk: Program Düzeyli Hata Düzeltici) adlı programlarınızın hatalarını bulmayı oldukça kolaylaştıran bir yardımcı program da var. Kısaca biz bu yazı dizimizdeki tüm örnek programları Aztec C'de hazırladığımız şekliyle sunacağız ve size de onu kullanmanızı öneriyoruz. Bu arada her iki programın da compiler (derleyici) olduğunu belirtelim. Yani BASIC'te (BASIC bir interpreter -yorumlayıcı-dır) olduğu gibi programınız her seferinde çalışmak için önce C'nin yüklenmesine ihtiyaç duymayacaktır. Kısaca C'de program bir kere makinenin anlayacağı şekle sokulduktan sonra (derlendikten sonra) kendi başına çalışabilir. Oysa BASIC'te programınız her seferinde yeniden makinenin anlayacağı dile çevrilir. Dolayısıyla derleyicilerden alınan sonuçlar çok daha hızlı ve daha az bellek gerektiren şekilde olurlar. Gerçi derleme işlemi yorumlayıcılara kıyasla uzun sürse de sonuçlar çok daha etkileyicidir.

Aztec C'de derlemenin nasıl yapıldığına geçmeden önce aletinizi çalıştırın ve bir numaralı kutuda yazılan adımları uygulayın. Bu sayede Aztec C'nin yaptığı ara işlemler Ram Disk'te gerçekleşir ve böylece işlemler oldukça hızlanmış olur. Ayrıca disketleriniz de üzerine devamlı yazılıp silinmekten kurtulur.

Şimdi de Aztec C'de derlemenin nasıl yapıldığı ve program yazma adımlarının neler olduğuna değinelim:

AZTEC C

Aztec C tamamen CLI'dan çalışmaktadır. Yani program her biri CLI'dan adı yazılarak aktif duruma geçirilen modüllerden oluşmuştur. Bu arada CLI bilginizin iyi olması programla çalışmayı kolaylaştıracaktır. Şimdi sırayla programın modüllerini tanıyalım:

1) cc: Bu komut herhangi bir editörde (örneğin c directory'sindeki ed gibi) yazdığınız programı obje file haline sokar. Yani programınız link (açıklaması ileride) edildikten sonra eğer hatası yoksa kullanıma hazır hale gelir. Bu komut hazırladığınız program üzerinde birçok işlem yaptıktan sonra programınızın assembler listesini çıkarır ve otomatik olarak as (assembler) adlı başka bir komutu çağırır. Komutun birçok seçeneği vardır. Bunlardan önemli bazıları ve komutun formatı şöyledir:

a) Komutun formatı: cc [-seçenekler] dosyaismi.c b) -A seçeneği: Derleme işlemi bitince otomatikman assembler'ı başlatmaz. Böylece programınızın assembler listesini alabilirsiniz. Bu listeyi dosyaismi.asm dosyasına bakarak bulabilirsiniz.

c) -S seçeneği: Bu seçenek derleme işlemi sırasında ortaya çıkan uyarı mesajlarını ekrana yazma demektir.

d) -N seçeneği: Bu seçenek'te Program Düzeyli Hata Düzelticisi için gerekli dosyanın hazırlık işlemlerini yap demektir.

2) as (assemble): Bu komut aslında cc adlı komut tarafından otomatik olarak çağırılır. Görevi cc'nin oluşturduğu assembler listesini obje dosyası haline getirmektir. Fakat eğer C'den ayrı olarak assembler'da bir program yaparsanız sadece bu komutu yazarak onu obje dosyası haline getirebilirsiniz. Bu komutun oluşturduğu obje dosyasını çalışır hale getirmek için ln (link) komutunu kullanmalısınız. Komutun formatı şöyledir:

as {-seçenekler} dosyaismi Komutun seçeneklerini Aztec C'nin kitabında ayrıntılı olarak bulabilirsiniz.

3) ln (link): Bu komut cc ve daha sonra onun çağırdığı as komutlarından hazırladığı obje dosyasını alır ve programınızda kullandığınız, sizin tanımlamadığınız fonksiyonları ki bunlar ya Amiga'nın ROM'unda, ya da Aztec C'nin size sunduğu fonksiyon kütüphanelerinde bulunur, bulup programınıza ekler ve programınızı çalışır hale getirir. Eğer bu işlem sırasında ne sizin, ne de fonksiyon, ama programda adı geçen bir fonksiyona rastlarsa, bunu size bildirir ve hata vererek işle-

KUTU 1

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 df0:s/startup-sequence" yazın,

4) Dosyanın içinde "df0:BIN/set CCTEMP = ram:" olarak 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ızlı olmasını sağlarsınız,

7) Son olarak da dosyanın başlarına bir yere "CD ram:", hemen bundan sonraki satıra da "CD df0:", yazın,

8) Ayrıca; eğer derleyeceğiniz dosyayı da Ram Disk'te açarsanız işlemler daha da hızlanır.

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