Commodore sayı 21, sayfa 60

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 60

ARRAY yapısal veri tanımlamasında köşeli parantezler arasında indeks tipini, OF'dan sonra ise bu dizideki verilerin tipini tanımlarız. İndeks basit veri tipinde olmak zorundadır. İndeks için INTEGER, CHAR veya sizin tanımladığınız bir basit veri tipini kullanabilirsiniz. Ancak,

CONST A-1.5; B-9.9; TYPE

OF INTEGER;

şeklinde bir tanımlama yapmanız yanlış olur. Çünkü köşeli parantezler arasında yer alan indeks için REAL veri tipini kullandık. OF'dan sonra gelen veri tipi için istediğiniz veri tipini kullanabilirsiniz. X değişkenimiz aşağıdaki verilere sahip olsun:

XI) XBI XI

Dizi değişkenlerine indeksli değişken adı verilir. İndeksli değişkenleri normal değişkenleri kullandığımız şekillerde kullanabilirsiniz. İndeksli değişkenlere READ ve READLN komutları ile değer yükleyip, WRITE ve WRITELN komutları ile değerlerini yazdırabiliriz. Kendi tanımladığımız veri tiplerini array'lerin indekslerini tanımlamada kullanabileceğimizi söylemiştik:

TYPE | SATRANÇ - (PİYON, AT; FİL, KALE, VEZİR, ŞAH);

VAR DEĞER:ARRAY İSATRANÇI OF INTEGER;

bu şekilde bir tanımlama yaparsak,

VALUEJPİYON) VALUBİATI: -3; VALUEİKALE): VALUE|VEZİR) VALUBİŞAH)

000;

bu komutları kullanabiliriz.

Tek Boyutlu Diziler

Diziler ve FOR komutu birlikte çok uyumlu bir şekilde çalışabilirler. İndeks değişkenini her seferinde bir arttırarak sıra ile dizideki tüm elemanlara ulaşabiliriz. Sıra ile dizideki tüm elemanlara ulaşabildiğimiz için aynı işlemleri dizideki tüm değişkenlere uygulayabiliriz. Mesela bir dizinin tüm elemanlarının değerlerini toplayalım:

TOPLAM FOR 1:—1 TO 5 DO TOPLAM: - TOPLAM * Bil)

I değişkeninin değeri her seferinde bir artacağından sıra ile B değişkeninde bulunan tüm elemanların değerleri TOPLAM değişkeninde toplandı.

Dizideki indeks sabit bir sayı olmak zorunda değil, örneğimizde olduğu gibi bir ifade olabilir. Bu şekilde programımız indeks değerini kendisi hesaplayabilir.

Program Döküm Eki'ndeki PROGRAM1 her saat için sıcaklığı alıp günün en sıcak, en soğuk ve ortalama sıcaklığını hesaplıyor. ISI dizi değişkenine yirmidört saatin verileri okunuyor. Mesela, ISI(1) değişkeninde günün birinci saatinin, ISI(15) değişkeninde günün onbeşinci saatinin ısısı saklanıyor.

Program Döküm Eki'ndeki PROGRAM3, ufak bir bütçe programı. On başlık altında aylık harcamaları hesaplayacak bir program. Programımız başlık numarasını ve yapılan harcamayı veri olarak alıyor.

Genelde, dizilerin elemanları ile tek tek uğraşabiliriz. Mesela iki diziyi tek bir komutla toplayamayız. Ancak iki dizi aynı veri tipine sahipseler tek komutla birbirine eşitleyebilirsiniz:

CONST TYPE INDEKS-1.MAX; ARR- OF REAL;

VAR X, Y, Z : ARR; BEGI X:-Y END.

Bu program;

yerini tutuyor. PACKED Array

Bir dizi tanımlarken ARRAY'in başına PACKED getirebiliriz. Mesela, Z:PACKED ARRAY[1..5] OF BOOLEAN; PACKED kelimesi sayesinde Z dizisindeki değerler bilgisayar hafızasına mümkün olduğu kadar sıkıştırılarak yazılır. Bu sayede hafızadan kazanırız, ancak sıkıştırılmış dizinin elemanlarına ulaşma hızımız biraz azalır. Genellikle BOOLEAN veya CHAR veri tipindeki dizileri sıkıştırmak yararlı olur.

Sıkıştırılmış bir dizinin elemanlarına da normal bir dizideki gibi ulaşabiliriz. Mesela:

VAR PC:PACKED ARRAYII...5) OF CHAR; BEGİN

Sıkıştırılmış dizileri kullanmada karşılaştığımız bir sorun var. READ şeklinde bir komut yanlışı olur. Bunun yerine,

READ (C)

komutları aynı işi görür.

Program Döküm Eki'nde PROGRAM4 ve 5 programları da dizilerle ilgili. PROGRAM4 veri olarak girdiğiniz bir satırlık yazıda her harfin ne kadar kullanıldığını bulur. PROGRAM5, her harfin yerine geçecek başka bir harf alıp yazmış olduğunuz satırı şifreler.

Karakter Dizileri

Değerleri karakter dizisi olan değişkenleri tanımlamak için PACKED ARRAY tanımını kullanacağız:

PACKED ARRAY OF CHAR; VAR BEGİN END.

“Commodore;

Yapısal veri tiplerine gelecek yazımızda devam edeceğiz. Şimdilik hoş-

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