Amiga Dünyası sayı 24, sayfa 42

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 42

Herkese en içten merhabalar. Umarım ilk üç yazı sonunda Pascal programları hakkında bir fikriniz oldu. Belki bir iki küçük program yazmayı bile denemişsinizdir. Ancak bugüne kadar öğrendiklerimiz daha çok temel şeylerdi. Bu aydan itibaren ise Amiga'da Pascal programları yazmayı öğreneceğiz.

Bu bölümden sonra anlatacağım, yazım kuralları ve emirler Kick Pascal V2.0 için geçerlidir. Diğer Pascal paketlerinde benzer işlemleri yapan komutlar var, ancak her zaman aralarında bir standart bütünlüğü yok. Elimde en çok doküman Kick Pascal için var, bunun yanısıra en kullanışlısı da Kick Pascal (Hi-speed Pascal daha tam olarak elime geçmedi). Kick Pascal'da emirler üç temel grupta toplanıyor. Bunlardan ilki Pascal'ın standart fonksiyonları. İkinci olarak Kick Pascal'a özgü ve Amiga Sistemini kullanan Pascal emirleri var. Üçüncüsü ve en önemlisi ise Library fonksiyonları. Kullanılan emirleri kısaca tanıtmaya çalışacağım. Yalnız bunu yaparken, bir el kitaplığı yapmaktan çok en çok kullanılan emirleri, ne işe yaradıkları ile vereceğim. Örnek programlarla ne işe yaradıklarını daha ayrıntılı olarak sonra inceleyeceğiz. Kick Pascal'da Bazı Sabitler ve Değişkenler:

FromWB (boolean): Belki biliyorsunuzdur, Amiga'da bir programı çalıştırmanın iki yolu var. Bunlardan ilki programın ismini CLI'dan girmek, ikincisi ise Workbench'ten ilgili Icon'a basarak programı çalıştırmak. Eğer bu değişken True değerini almışsa, programınız Workbench'ten çağrılmış demektir. Bu takdirde mutlaka bir pencere açmak zorundasınız. CLI'dan çağrılan bir programın zaten CLI'dan dolayı bir penceresi mevcuttur.

ParameterStr(Str): CLI'dan çağrılan programınıza parametre olarak verilen komutları bu değişkenden okuyup değerlendirebilirsiniz (Mesela dir df0: derken, dir programın adı df0: ise programa kullanıcı tarafından aktarılan parametre oluyor).

ParameterLen(Int): Yukarıda belirtilen String'in uzunluğunu verir.

Mem(array[0..MaxInt] of byte): Bu değişken ile hafıza byte byte tanımlanmıştır, istediğiniz hafıza adresine doğrudan erişmeniz bu emir ile mümkün.

Bunun dışında bazı sabitler aşağıdaki şekilde tanımlanmıştır:

MaxInt = 32767 MaxLong=MaxLongInt=2147483647 MaxCard = MaxWord = 65535 MaxByte = MaxShortCard = 255 MaxShortInt = MaxShort = 127 Pi = 3.14159265358979

Kick Pascal'ın Pascal Fonksiyon ve

Procedure'lerinden bazıları Write/Read: Bu iki emir ile istediğiniz bir çıkış dosyasına/giriş dosyasından, istediğiniz değişkenleri yazabilir ve okuyabilirsiniz.

Writeln / Readln: O an kullanılan girişten (ki genelde ekran olur) bilgi okumak veya yazmak için kullanılır.

ClrScr/Page: Ekranı siler. Gotoxy (x,y): Kursoru x'inci sütuna ve y'inci satıra yerleştirir. Pencerenin sol üst köşesi (1,1) kabul edilir.

Reset(dosya,isim): isim adlı Dosya değişkeni okuma ve yazma amacıyla açılır.

Rewrite(dosya,isim): Yukarıdaki ile aynı amaçlı kullanılır, sadece bu emir dosyayı yeniden yaratır, yani yoksa bu isimli bir dosya açar, şayet mevcutsa bu dosyayı silerek yazar.

Close (dosya): Eğer bir dosyayı açarsanız, mutlaka kapatmanız gerekir. İşte Pascal'da bu işi gerçekleştiren kahraman emir.

IOresult: Bu fonksiyonun sonucu 0 değilse, o zaman son veri alışverişinde bir hata olmuş demektir.

Seek (dosya,yer): Açılan dosyanın belirli bir yerine gitmenizi sağlar. Diyeceksiniz ki benim dosyam: "dosya: file of word;" şeklinde tanımlı. O zaman: "seek (dosya,20);" emri ile dosyanın 20'nci word'üne yani 40'ıncı byte'ına gelirsiniz.

Filepos (dosya): Dosyanın neresinde olduğunuzu belirtir.

Filesize (dosya): Dosyanın toplam boyunu verir. Bu boylar yine dosyanın tanımlandığı büyüklüğe göre verilir. Bu noktada el kitabından kısa bir örnek eklemek istiyorum: Var f:text; begin

reset (f,'DF0:s startup-sequence); seek (f, Filesize (f)): writeln (f,'echo "Merhabalar!!!"'); close (f); End.

Bu basit programda f ile bir dosya değişkeni (text) tanımlıyoruz. Daha sonra var olduğunu bildiğimiz bir dosyayı açıyoruz. Seek emriyle filesize komutunda belirlediğimiz dosya sonuna geliyoruz ve buraya Writeln ile bir satır ekliyoruz. Sonra da dosyayı kapatıyoruz. Etkili ve çok basit, Pascal'ı sevmemin baş sebebi bu.

Buffer (dosya,boyut): Dosya için boyut ile belirtilen miktarda ara hafıza kullanılır ve bu sayede okuma, yazma işleri hızlandırılır. Boyut olarak 10000'in üstü gereksiz olacaktır.

Bu emirleri ardından, bilgisayar'ın temel işlevi bilgi saymak, başka deyimle işlem yapmak. Dolayısıyla her dilde mutlaka bazı matematiksel fonksiyonlar olmalı.

Abs: Girilen değeri işaretine bakmadan pozitif değeri olarak atar.

Arctan (x): Reel sayılar üzerinde bir işlemdir. Gerçekleştirilebilmesi için diskette Mathtrans.library dosyasının LIBS: directory'sinde bulunması şarttır.

Chr(i): i sayısının ASCII karşılığını verir. Ord(c): Girilen ASCII kodunun sayı karşılığını verir.

Hatırlarsanız bir ara pointer tipleri tanımlamıştık. Bu pointerlarla ilgili iki

1.0 Pascal ve Amiga versiyonları, Pascal ile neler yapılabilir. 2.0 Pascal'ın genel yapısı: Tanımlar, bloklar, Procedure ve fonksiyonlar 3.0 Pascal Dili Özellikleri, tip tanımları, unitler. 4.0 Amiga ile iletişim: Library kullanımı, Amiga'ya has komutlar. 5.0 Gelişmiş programcılık: teknikler, başka sistemlere veya sistemlerden aktarmalar.

F.Kağan Gürkaynak önemli standart fonksiyon var bunlar

New (pointer)/Dispose (pointer): Dinamik bir değişken tanımlamanızı / sistemden ayırmanızı sağlar.

Kick Pascal'ın Amiga'ya özgü komutlarından bazıları Yavaş yavaş işin Amiga kısmına geldik. Bunun yanında Kick Pascal programcıları bir iki adet de standart dışı fonksiyon geliştirmişler. Buradaki fonksiyonları Pascal ile ilgili kitaplarda bulmak mümkün değil, bunlar tümü ile Kick Pascal'a özgü.

Alloc_Mem (Miktar,durum): Belirtilen miktarda hafızayı kendinize ayırır. Bu hafıza artık sizin programınıza ayrılmıştır. Durum için ise 2 koyarak Chip, $10000 koyarak 0'larla doldurulmuş bir hafıza isteyebilirsiniz. Hemen hatırlatalım, DMA ile ilgili tüm veriler Chip hafızada olmak zorundadır (Grafik, ses, disket datası). Bu yüzden boşu boşuna Chip hafıza harcamamalıyız. Eğer bize ayrılan hafıza önemli değilse, sadece 0 girebiliriz. Ayrılan hafızanın muhakkak iade edilmesi şarttır. Ancak Kick Pascal sistemi bu işi sizin yerinize yapacaktır. Yine de, istiyorsanız ayrılan hafızayı FreeMem (adres,miktar) komutu ile sisteme iade edebilirsiniz.

Open_Screen: Bu komut ile kendinize bir ekran açabilirsiniz. Elbetteki bu ekranın parametrelerini girmeniz gerekecek. Open_Screen (x,y,en,boy,kalınlık,arkaplan rengi, yazı rengi,görüntü türü,isim);

Burada kalınlık'tan kasıt, ekrana ait olan Bitplane sayısı, dolayısı ile kaç renk gösterebileceğidir. Görüntü türlerinin hepsini bir Amiga referansından edinebilirsiniz.

Açılan bu ekran, Intuition Library'si ile açılana göre oldukça basit. Ancak, zahmetsizce yazılarak, programlanabiliyor. Açılan ekranı Close_Screen ile kapatabilirsiniz.

Open_window: ile bir pencere açabilirsiniz. Open_screen komutu gibi bu emir de basit bir pencere açmanızı sağlayacaktır, parametreleri şu şekildedir: Open_window (x,y,en,boy,renk, IDCMP maskesi,pencere türü,ismi,bağlı olduğu ekran,minimum eni,minimum boyu, maksimum eni, maksimum boyu);

Açılan bir pencereyi kolayca CloseWindow komutu ile kapatabiliyoruz.

Biliyorum pek sevimli durmuyor. En iyisi bu konuda örneklere bakmak. Bu konuyu kapsayan bir örnek PROGRAM 1 kutusunda. Benzer örnekler Kick Pascal'ın ikinci disketinde bol miktarda mevcut.

Geldik en önemli emre: OpenLib(pointer,isim,versiyon): Bu procedure ile istediğiniz Amiga Library'sini

AMIGA&PASCAL

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