JAL 2.5. Sabitler

JAL - Sabitler

2.5.1. Adlandırılmamış Sabitler

Adlandırılmamış bir nümerik sabit, 32-bit işaretli değer olan bir UNIVERSAL türdedir. Bu sabit değerler genelde önişlemlerde (preprocessing) veya değişkenlere atamalarda kullanılan değerlerdir. Bir işlemde UNIVERSAL türü bir sabit değer kullanıldığında, bu tür, diğer operandın türüne çevrilir. Örneğin WORD türünde bir değişken ya da sabit operanda 12739 UNIVERSAL türdeki değer atanırsa, bu UNIVERSAL tür normalde işaretli 32 bit olmasına rağmen WORD türüne çevrilir.

Bir istisna olarak kesirli sabit sayılar ise FLOAT türündedir. Nümerik sabitler aşağıdaki biçimlere sahiptir:

145      -- onluk (decimal)
20xFF    -- onaltılık (hexadecimal)
30b01    -- ikilik (binary)
40q06    -- sekizlik(octal)
5"a"     -- ASCII
62.56 veya 2.56e2 veya 2.56e-2 -- FLOAT

Arkadaşlar kesirli sayıların yanındaki e simgesi İngilizce'deki exponent sözcüğünün baş harfidir ve bir sayının üssü ya da kuvveti anlamında kullanılır. e2 ifadesi bize daha tanıdık gelen 102 ifadesiyle aynıdır. Dolayısıyla e-2 ifadesi de 10-2 ile aynıdır. Yukarıdaki kesirli sayılar için ifade edilen sayınının kesir noktası sola doğru kaydırıldıkça üs sayısı değeri artarken, sağa kaydırıldıkça da üs sayısı değeri azalır. Aşağıdaki gösterim bunu daha iyi anlamanızı sağlayacaktır.

Kesirli üslü sayılar

Kesirli sabit değerin tam JAL formatı şu şekildedir:

[+|-]###.[###[e[+|-]###]

(#) işareti sayıları temsil eder.

ASCII değerleri atanırken dikkat edilmesi gereken bir durum şudur:

1VAR BYTE ch = "123"     -- Bu durumda ch değişkenine '1' ASCII karakteri yüklenir
2VAR BYTE str[] = "123"  -- Bu durumda:
3                        -- str[0] içine '1',
4                        -- str[1] içine '2', 
5                        -- str[2] içine de '3' yüklenir.

Bir ASCII sabiti aşağıdaki C dili kaçış karakterleri (escaping) kurallarına izin verir:

Kaçış karakteri Değer
"\ooo" sekizlik (octal) sabit
"\a" zil, düdük, alarm
"\b" geriletme (backspace)
"\f" form besleme (form feed)
"\n" satır besleme (line feed)
"\qooo" sekizlik sabit
"\r" satır başı (carriage return)
"\t" yatay sekme (horizantal tab)
"\v" dikey sekme (vertical tab)
"\xdd" onaltılık (hexadecimal) sabit
"\zbbb" ikilik (binary) sabit
"\" tek bir ters bölme '' karakteri

ASCII haricindeki sayısal sabitler ayrıca istenen miktarda alt tire ("_") içerebilirler. Bu alt tireler derleme esnasında görmezden gelinir fakat okunaklılığı artırmak için yararlıdır. Örneğin: 20_000_000 -- 20 milyon veya 0b0000_1111.

2.5.2 Adlandırılmış Sabitler

Adlandırılmış bir sabitin tanımı için tam format aşağıdaki gibidir:

1CONST [tür[*sabitifade]] tanımlayıcı [ ’[’ [ sabitifade ] ’]’ ] ’=’ { sabitifade | ’{’ sabitifade1[’,’ sabitifade2...]’}’ | ’"’...’"’}
2[ ’,’ tanımlaycı2...]

Gördüğünüz gibi sayın okuyucular oldukça kafa karıştırıcı gibi görünen bir başka gösterim biçimi daha. Eğer yazı dizisini sırayla okuduysanız buna benzer bir biçimi Değişkenler bölümünde değişken tanımlama gösterimi şeklinde görmüş olduğumuzu hatırlayacaksınız. Öncekinde olduğu gibi bunda da açıklamalarını yapacağım fakat kafa karıştırırsa fazla takılmanıza gerek yok çünkü tanımlama örneği verince format daha anlaşılır olacaktır. Önce açıklamalarını verelim:

CONST

Bir sabit tanımlaması ibaresinin başladığını belirtir.

tür[*sabitifade]

Sabitin türünü tanımlar. Hiç tür belirtilmemişse , işaretli 32-bitlik üniversal biçim haline gelir.
Örneğin:

1CONST BYTE sayi1 = 100
2CONST SWORD ilkDeger = -1000

’[’ [ sabitifade ] ’]’

Bir sabit dizisi oluşturma ibaresidir. Bir sabit dizisi en azından bir kez sabit olmayan bir altindis ile indislenmedikçe herhangi bir yer kaplamaz. PIC denetçilerde, sabit dizileri RAM değil PROGRAM belleğinde yer kaplarlar ve bir sabit dizisi en fazla 255 öge ile sınırlandırılmıştır. Eğer sabitifade'nin değeri yazılmazsa mutlaka sabitin dizi elemanları = simgesinin karşısında {...} içerisinde ilklenmelidir. Bu ilkleme yapıldığında derleyici sabitteki dizi öğelerinin sayısını {...} içerisine yazılan değerlerden hesaplar, yoksa derleyici hata üretecektir. Örneğin:

1CONST BYTE sira[4]
2CONST WORD tablo[] = {12987, 860, 64329, 100}

'=' sabitifade

Dizi olmayan sabitler tanımlanırken sabitifade değeri sabite atanır. Örneğin:

1CONST genislik = 345

’=’ ’{’ sabitifade1[’,’ sabitifade2...]’}’

Sabit dizileri için bu herbir dizi elemanın değerini atar. sabitifade'lerin sayısı ile [] içerisinde tanımlanan değer aynı olmalıdır. Örneğin:

1CONST BYTE sira[4] = {1,2,3,4}

'=' ’"’...’"’

Sabit dizileri için, çift tırnak arasına yazılacak ASCII değerlerini sabit dizisinin herbir elemanına atar. C dilinin tersine, sonlandırıcı bir NULL eklenmez. Örneğin:

1CONST BYTE girisMesaji = "Merhaba Dunya"

2.5.3. Dize (String) Sabitler

Dize sabitler çift tırnak işaretleri içinde yazılırlar ("...") ve karakter dizilerine izin verilen herhangi bir yerde kullanılabilirler. Adlandırılmamış sabitler başlığı altında anlatılan kaçış karakterleri dize sabitlerle birlikte çift tırnak işaretleri içerisinde kullanılabilir. Örneğin:

1CONST baslik = "ILK PROGRAM"
comments powered by Disqus