JAL 2.2. 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}