Amiga Dünyası sayı 23, sayfa 25

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 25

b : set of [1..2]+[7..9]; {1,2,7,8,9} c : set of [1..10] - [5..10] {1,2,3,4}

Daha güzeli, bu küme işlemlerini program içinde de yapabilmemiz. Bu arada mantıksal sonuç veren IN, =, <>, <= ve >= işlemlerini kullanabiliyoruz. Diyelim bir sayınız var ve bu sayının 1 ila 20 arasında bir asal sayı olup olmadığını kontrol edeceğiz.

var a : integer; begin

readln (a); if a in [2,3,5,7,11,13,17,19] then writeln ('ASAL');

end.

Veya bir karakter girildi, bu karakter acaba harf mi, değil mi?

var a: Char; begin

readln(a); if a in ['a'..'z','A'..'Z'] than write (a);

end

Daha bunlarla işimiz bitmedi, şimdilik biraz ara verelim. Tek ve çok boyutlu diziler bilgisayarda her zaman kullanılır. Bunları tanımlamak için ARRAY kullanılacaktır. Hemen örnek:

var a : Array [1 ..10,1 ..10] of integer;

Basic'te karşılığı Dim a(10,10) olan bir komut. Bu değişken ile 100 adet tamsayı tutabiliyoruz. Bunlara erişebilmek için a[n][m] ifadesi kullanılır. Son olarak dosya tipini tanıtmam gerekiyor. Genelde kullanılan bilgilerin bir yerlere aktarılması gerekir. Bu iş için en uygunu dosyalar kullanmaktır. Bir değişkeni dosya değişkeni olarak tanımlamak mümkün.

var f: file of char;

İçeriği karakterlerden oluşacak olan bir dosya değişkeni olur. Konuyu fazla derinleştirmeden, hemen zevkli bir başka konuya geçelim.

Dikkat edin, deminden beri değişkenleri tanımlamak için kullanılan tipleri inceliyoruz. Niye Tamsayılar'a integer diyelim, niçin kafama göre tipler tanımlamayalım diyorsanız, tam yerine geldiniz. Hatırlayın Pascal'ın blokları arasında Type kısmı vardı. Burada kendinize istediğiniz tipi tanımlayabilirsiniz. Sıkı durun örnek geliyor:

type Tamsayi = integer; var a : tamsavi:

f: file of tamsayi;

Bir ikinci örnekte, daha önce anlatılan kümeleri ve Array'leri de işin içine katalım:

type matris = Array [1..100,1..100] of in- teger;

Rakam = '0'..'9'; Pozitif = L.Maxint;

{Dikkat edelim şu an değişken değil, değişken tipi tanımlıyoruz. Bu tiplerde değişkenleri var kısmında tanımlamamız şart.}

Var a:matris; n:rakam; p:pozitif

Nasıl ama ??? Şimdi iyi bir bomba. Tip tanımlarken parantez içinde sıralı olarak yazacağımız değerler tanımlayabiliriz:

Type Ay = (Ocak, subat, mart, nisan, mayis, haziran, temmuz, agustos, eylül, ekim, kasim, aralik); Tatil = haziran..eylül; var simdiki_ay : ay; begin if simdiki_ay = Ocak then writeln ('Ocak soguktur.'); end. Belki anlatması saçma olacak ama, ilk olarak ismi ay olan bir tip tanımlıyoruz. Bu tipin alacağı değerler ocak ila aralık arasında (Bu değerler sıralıdır, yani ocak < şubat) yer alıyor. Daha sonra ismi simdiki_ay olan bir değişken tanımlıyoruz. Bu değişken artık ay ile tanımlanan değerleri alabilir. Pekala simdiki_ay isimli değişkenin değeri şubat olabilir. Komik görünse de, bu tür tipleri tanımlamanın birçok yararı oluyor. Bir ikinci tip özelliği, değişik tipte değişkenleri içeren tipler oluyor. Bunlar RECORD sözcüğü ile tanımlanıyor. Önce örnek:

type' Sanal_sayi = RECORD

Reel : real; Sanal: real; END; var a : Sanal şayi begin a.reel := 25.765 a.sanal := 12.87 end. Görüldüğü üzere, burada bir sanal sayı tipi tanımlanmış. Bu tip iki adet reel sayı- dan oluşuyor. Bu türde tanımlanan bir de- ğişkenin alt bölümlerine ulaşabilmek için, değişken isminin sonuna . konuyor, işte kapsamlı bir örnek:

program Telefon defteri; type

Numara = record

isim : string [20]; soyisim : string [40]; numara : Long; end; Defter = array [1..100] of numara;

var kayıt: numara; T_Defteri : Defter; f: file of Defter;

begin

T_Defteri [1].isim :='F.Kağan' T_Defteri[1].soyisim:= Gurkaynak end.

gibi. Dikkat ederseniz, değişkenleri girmek zahmetli oluyor. Onun da bir kolayı var elbet. Geçen ay anlattığımız WITH bloğunu kullanarak, yukarıdaki örnekte,

begin WITH T_Defteri[1]DO Begin

isim :='F.Kağan' soyisim :=' Gurkaynak' End; End.

yapısı kullanılabilir. İngilizce biliyorsanız, bu tür tanımları ve değişkenleri kullanarak roman yazar gibi program yazabiliyorsunuz. Son örnekte dikkat ederseniz f değişkenini defter türünü içeren bir dosya olarak tanımladık. Dosya komutlarını kullanarak bir hamlede bütün kayıtları diskete aktarabilme olanağımız var.

Güzel, artık neredeyse tüm değişkenleri, nasıl tanımlandıklarını ve tarafımızdan nasıl tanımlanabileceklerini öğrendik. Ancak Pascal ile hala fazla bir şeyler yapabiliyor değiliz. Sebebi basit. Kullanabilecek emirlerimiz yok. Şu an öğrendiklerimizle bırakın güzel bir program yazmayı, ekrana basit bir nokta bile koymaktan aciziz. Emirleri nereden öğreneceğiz? İlk olarak Pascal'ın standart emirleri var. Bundan sonra Amiga'nın sistem emirleri geliyor. Yaklaşık 1000 kadar emir size yeterli olacaktır. Bunlar da yetmezse emirlerinizi kendiniz tanımlıyorsunuz. Procedure ve Function'lar olarak tanımladığınız emirleri bir araya getirip toplayabiliyorsunuz. Bu tür toplamalara ve özel şekline UNIT adı veriliyor. Bir UNIT, bir programa benzemesine rağmen, sadece procedure ve function'lar içerir. Bir unit hazırladıktan sonra, yeni yazdığınız programlarda o unit'te tanımladığınız fonksiyonları kullanabilirsiniz. Bunun için tanım kısmına sadece gereken unit'i eklemeniz yeter:

Uses Kagan_in_Uniti; Diyelim, bu unit'te 10 adet emir var. Artık programınızı yazarken bu emirleri kullanabiliyorsunuz. Nasıl Unit oluşturacağınız konusuna ise ileride değineceğim. Daha program bile yazamadan Unit kullanmak ayıp olur doğrusu.

Gelecek ay bir Amiga Pascal programcısı olmak için gerekenleri öğreneceksiniz. O zamana dek hoş olun, öyle kalın.

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