Bu sayfadaki yazılar
Sayfanın metni
Sayfa 63
SEHIR: PACKED
ARRAYII.12) OF CHAR;
END; END;
Bu tanımlamadan sonra kullanabileceğimiz değişkenleri görelim:
KISI.ISIM KISI.ADRES KISI.ISIM.ILK KISI.ISIM.ORTA KISI.ISIM.SON KISI.ADRES.SOKAK KISI.ADRES.SEHIR
WITH KOMUTU
Özellikle alanların kendileri de kayıt olduklarında kayıt değişkenlerinin isimleri aşırı derecede uzar. Bu değişkenleri sık kullandığınız yerlerde uzun uzun yazmak hem yorucu olur, hem de hata oranı yüksek olur. Bunu önlemek için PASCAL'da WITH komutu bulunuyor. WITH komutu sayesinde kayıt değişkeninin ismini kullanmadan sadece alan isimlerini kullanarak işimizi halledebiliriz. Mesela TARIH kaydını bu şekilde kullanalım:
VAR T:TARIH; BEĞIN WITH T DO BEGĞIN AY kas; GUN AYINGUNU: —4; YIL 1-65; END; END.
WITH komutu ile aynı anda birden fazla kaydı kontrol edebiliriz. Buna bir örnek verelim:
WITH KISI, ISIM, ADRES DO BEGIN ILK: - ORTA; SON: - SOKAK:-' SEHIR: - “Istanbul END;
KAYIT DİZİLERİ
Tanımlamış olduğumuz kayıtlara sadece tek bir veri girebiliriz. Ancak kayıtları dizilerle birlikte tanımlarsak, birçok kayıt girme şansına sahip oluruz: Mesela;
VAR
KİTAPLIK:ARRAYÇ(I..100) OF KITAP;
Bu tanımlamadan sonra kitaplığımızdaki 100 kitap için bilgi girebiliriz. Mesela 5 numaralı kitabın ismini öğrenmek için;
WRITELNİKITAPLIK|5)1.BASLIK); Komutunu vermemiz gerekir.
DEĞİŞKEN KAYITLAR
Bazen programın akışına göre değişebilen kayıtlar kullanmamız gerekir. Mesela bir kitaplıkta çeşitli yayınların kaydını tutuyoruz diyelim. Kitapların kayıtları ile magazinlerin kayıtları tam olarak aynı değildir. Bir kitap için yazar ismi, başlık, basım yeri, yayıncı ve basım yılı bilgilerini tutmamız gerekir. Magazin için yazar ismi, başlık, magazinin ismi, basıldığı ay ve yıl, magazinin başlama ve bitiş sayfa numaralarını tutmamız gerekir. Yazar, başlık ve basım yılı veri alanları hem kitap hem magazinler için aynı olduğundan bu alanlar kayıtta daima bulunacaklar. Fakat diğer alanlar sadece magazin veya kitap için geçerli olurlar. Programın gerekli yapıyı seçmesi için bir referans kullanmamız gerekir, bu nedenle bir veri tipi tanımlayalım ve bunu kullanarak örneğimizi kayıt şekline dönüştürelim:
TYPE REFTIPI - (KITAP,MAGAZIN);
REFERANS - RECORD YAZAR: PACKED ARRAYII..40) OF CHAR; BASLIK: PACKED ARRAY:1..80) OF CHAR; YIL:INTEGER; CASE TIP: OF KITAP:(SEHIR: PACKED ARRAY OF CHAR; YAYINCI:
PACKED ARRAY OF CHAR); MAGAZIN: (ISIM: PACKED ARRAY OF CHAR; AY:(OCA, SUB,MAR, NIS,MAY, HAZ,TEM, AGU,EYL, EKI,KAS, ARA); SAYFA: PACKED OF CHAR;) END; VAR K:REFERANS
TIP değişkeninin alacağı değere göre değişken isimlerine örnek verelim:
Eğer TIP = 'kitap' ise:
K.TIP.SEHIR K.TIP.YAYINCI
Eger TIP: — magazın;ise:
K.TIP.ISIM K.TIP.AY K.TIP.SAYFA değişkenlerini kullanabiliriz. REFERANS olarak tanımladığımız kaydımızın bir sabit, bir de değişken kısmı bulunuyor. Bir kayıtta ilk önce sabit kısım tanımlanır. Eğer varsa arkadan değişken kısım tanımlanır. Örneğimizde TIP değişkeninin değerine göre kaydımızın değişken kısmı belirleniyor. Program Döküm Eki'nde RECORD ve ARRAY yapısını kullanan programlar yer alıyor. Böylece PASCAL dilini anlatmaya çalıştığımız yazı dizisinin sonuna geldik.
PROGRAM VEDA; BEGIN WRIİTELN('Baska bir yazıda buluşmak”); WRITELN(Ç'uzere hoscakalın.'); END.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 62
TYPE BILGI - RECORD ISIM:PACKED ARRAYII..10) OF
CHAR; CINSIYET:(ERKEK, KADIN); UCRET:REAL; END; VAR ISCI : BILGI;
Şimdi ISCI değişkenimize gerekli bilgileri yükleyelim:
ISCI.ISIM —'Alı ISCI.CINSIYET : - ERKEK; ISCI.UCRET :—-200000.0; ISCI.YIL :— 1989;
ISCI değişkenimizin var. Örneğimizde her elemanın veri tipi farklı. Herhangi bir elemana ulaşabilmek için değişken ismini verdikten sonra “.” nokta koyup elemanın ismini veriyoruz. Elemanlar kaydımızın alanlarını oluşturuyor ve istediğimiz veri tipine sahip olabiliyor. Kayıtta bir elemana ulaşmak için kullandığımız nokta, dizilerdeki köşeli paranteze denk geliyor. Eğer iki değişken aynı kayıt tipine sahipse ikisini birbirine doğrudan eşitleyebiliriz. Mesela: VAR ISCI, MEMUR : BILGI;
ISCI :— MEMUR;
tanımlaması doğrudur. Bu tanımlama ile MEMUR değişkeninin elemanlarının değerleri ISCI değişkeni-
RECORD yapısal veri tipi Pascal gibi yapısal programlamaya yatkın dillerin dışındaki programlama dillerinde bulunmaz.
nin elemanlarına yüklendi. Bir kayıt tanımlamasının genel halini görelim:
Kayıt-tıpı - RECORD elemanl: veri tıpıl; eleman2: veri tıpı2;
» ,» 83
,.)
elemanN: veri tıpı-N END;
Bu veri tipi ile çeşitli değişkenler tanımlayalım:
TYPE KITAP - RECORD BASLIK:PACKED OF CHAR; YAZAR, BASAN, SEHIR:PACKED OF CHAR; YIL: INTEGER FIYAT: REAL; END;
TYPE
TARIH - RECORD AY:(OCA,SUB, MAR,NIS, MAY,HAZ, TEM,AGU, EYL,EKI, KAS,ARA); GUN:(PT,SA,CA, PE,CU,CT, PA); AYINGUNU:1..31; YIL:INTEGER; END;
İÇ İÇE KAYITLAR
Tanımladığımız kaydın herhangi bir alanının bir kayıt olması mümkündür. Bu şekle bir örnek verelim:
TYPE GUN - RECORD G : TARİH; AY: 41..12); END;
GUN kaydımızın G alanı biraz evvel tanımladığımız TARIH kaydı ile tanımlandı. Mesela şu şekilde bir tanımlama yapalım:
VAR BUĞUN: GUN;
Bu durumda BUGUN.G değişkeni TARIH veri tipindedir. BUGUN.G değişkenini kullanarak bazı işlemleri gerçekleştirelim:
BUGUN.G.AY — kas; BUĞUN.G.GUN i— pe; BUĞUN.G.AYINGUNU :- 4; BUGUN.G.YIL 65;
İç içe kayıt tanımlarken kendisi de bir kayıt olacak alanın veri tipini ayrıca tanımlamak gerekmez. Aşağıdaki yöntem de kullanılabilir. Burada RECORD tanımlaması içinde geçen RECORD tanımlamasına dikkat etmemiz gerekir:
VAR KISI:RECORD ISIM:RECORD ILK, ORTA, SON:PACKED ARRAYÇI..20) OF CHAR; END; ADRES:RECORD SOKAK,