Bilgi ve Uygulama

JAL 2.5: Sabitler

Yazar: İsmail Sahillioğlu
Tarih: 19.10.2019
Türkçe

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:
45 -- onluk (decimal)
0xFF -- onaltılık (hexadecimal)
0b01 -- ikilik (binary)
0q06 -- sekizlik(octal)
"a" -- ASCII
2.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, 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ı artar, sağa kaydırıldıkça da üs değeri azalır. Aşağıdaki gösterim daha iyi anlamanızı sağlayacaktır.

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

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

'#' işareti sayıları temsil eder.

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

VAR BYTE k = "123"   -- Bu durumda k değişkenine '1' ASCII karakteri yüklenir
VAR BYTE kk = "123"   -- Bu durumda k[0] içine '1',
k[1] içine '2',
k[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.


2. Adlandırılmış Sabitler

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

CONST [tür[*sabitifade]] tanımlayıcı [ ’[’ [ sabitifade ] ’]’ ] ’=’ { sabitifade | ’{’ sabitifade1[’,’ sabitifade2...]’}’ | ’"’...’"’}
[ ’,’ 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.
Ör.

CONST BYTE sayi1 = 100
CONST 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 öğe 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.
Ör.

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


'=' sabitifade

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

CONST 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.
Ör.

CONST 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 NUL eklenmez.
Ör.

CONST BYTE girisMesaji = "Merhaba Dunya"


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.
Ör.

CONST baslik = "\tILK PROGRAM\n"
Etiketler: JAL sabitler constants

Yorumlarınız

Hiç yorum yapılmamış, ilk yorumu siz yapabilirsiniz.

Bir yorum ekleyin

İsim:
E-posta:
Yorumunuz:
Güvenlik Kodu:
 
Tüm alanları doldurmak zorunludur. Yorumunuz kontrol edilince yayınlanacaktır. E-posta adresi yayınlanmaz.
Konular