JAL 2.2. Diziler

JAL - Veri türleri diziler

JAL tek boyutlu değişken dizileri oluşturabilir ve bunları organize edebilir. Bit türü dizi oluşturmak için kullanılamaz, donanım yapısına uygun değildir. Bit dışındaki türlerin herhangi biriyle değişken dizileri oluşturulabilir. Dizi tanımlama biçimi aşağıdaki gibidir:

1VAR "değişken türü" "değişken adı" ["dizi niceliği"] = {"dizi ögeleri"}

dizi ögeleri 0'dan itibaren sayılandırılmaya başlanır ve son indeks dizi niceliği - 1 olur. Örneğin dizi niceliği 5 olarak tanımlanırsa, dizi ögeleri'nin indeksleri aşağıdaki gibi olacaktır:

İndeks Ögeler
0 öge1
1 öge2
2 öge3
3 öge4
4 öge5

Dizinin ögelerine erişim köşeli parantezler [n] içine yazılacak n sayı değeri ile yapılır. Bu sayı değeri ögenin bellekteki sıra numarasıdır. Köşeli parantezlerin içine yazılan bu sayıya programlamada indeks (index) ya da indis numarası denir.

Bu ögelerin bellek hücrelerindeki yerleşimleri tanımlanan değişken türüne bağlı olacaktır. Burası biraz alt seviyenin yani donanımın derleyici tarafından nasıl organize edildiği ile ilgili bir konudur. Aşağıda bütün türler için niceliği 5 olan bir dizinin 8-bitlik bir mikrodenetleyici belleğinde nasıl organize edildiği gösteriliyor.

Bellek Adresi BYTE ve SBYTE İndeks Ögelerin Yerleşimi WORD ve SWORD İndeks Ögelerin Yerleşimi DWORD, SDWORD ve FLOAT İndeks Ögelerin Yerleşimi
32 0 Öge-1 0 Öge-1.1 0 Öge-1.1
33 1 Öge-2 Öge-1.2 Öge-1.2
34 2 Öge-3 1 Öge-2.1 Öge-1.3
35 3 Öge-4 Öge-2.2 Öge-1.4
36 4 Öge-5 2 Öge-3.1 1 Öge-2.1
37 Öge-3.2 Öge-2.2
38 3 Öge-4.1 Öge-2.3
39 Öge-4.2 Öge-2.4
40 4 Öge-5.1 2 Öge-3.1
41 Öge-5.2 Öge-3.2
42 Öge-3.3
43 Öge-3.4
44 3 Öge-4.1
45 Öge-4.2
46 Öge-4.3
47 Öge-4.4
48 4 Öge-5.1
49 Öge-5.2
50 Öge-5.3
51 Öge-5.4

BYTE türünden büyük olan türler bellekte organize edilirken yerleşim çizelgesinde görüldüğü gibi bellek genişliğinin 8-bit olmasından dolayı baytlara bölünürler. Aslında alt seviyede yani makinede byte ve bit dışında bir şey yoktur, ne tür değişken kullanırsak kullanalım değişkenler bir şekilde baytlara dönüştürülecektir. Bu yüzden 1 bayttan büyük ögeleri yerleşim çizelgesinde gösterirken bir değişken değerine ait tüm baytları numaralandırıp nokta ile o değişkene bağladım. Böylece değişkenle derleyici editöründe çalışırken tek bir parça olarak çalışırız ve derleyici bu değeri baytlara bölme ve belleği organize etme işini bizim yerimize üstlenir.

Buna göre örneğin bir DWORD türünde SAYAC adlı bir değişkenle çalışıyor olalım. Bu değişken değeri derleyicide: SAYAC, bellekte (temsilen): SAYAC.1, SAYAC.2, SAYAC.3, SAYAC.4 olarak 4 bayta bölünüp saklanır.

Alt seviye bilgisini geride bıraktıktan sonra seviyemizi yükseltip kendi seviyemize dönelim. Birkaç dizi tanımlama örneği yapalım, nasıl oluşturulur görelim ve konuyu sonlandıralım.

1var byte kimlikNo[10]
2var byte HEX_ASC2[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}
3var word mesafe_m[] = {16864, 32077, 48920, 62051}
4var sdword yukseklik[]
5var float konum[] = {15.3, -77.8, 19083.87, -1287.387, 248.66}
comments powered by Disqus