User account menu

  • Giriş yapın
Anasayfa
Kozmotronik Blog
Yıldız tozundan teknolojiye!

Main navigation

  • Anasayfa
  • Kategoriler
    • Elektronik
    • Programlama
      • Gömülü Programlama
      • Mobil Programlama
    • Programlama Dilleri
  • Seriler
    • Android Bluetooth Programlama
    • JAL Başvuru Kılavuzu
    • Görevci ile Sistem Programlama
  • Projeler
    • Görevci
  • Hakkında

JAL | 2.4. Değişkenler

Sayfa yolu

  • Anasayfa
  • JAL | 2.4. Değişkenler
Yazar: İsmail Sahillioğlu | Eylül 15, 2019
JAL | Değişkenler

Basitçe bir değişken, değer tutan bir tanımlayıcıdır. Bu tanımlayıcılar, değeri tutmak için ne kadar boşluk gerektiğini belirleyen ilgili türlere sahiptir. Bu veri türleri hakkında bu yazıda söz etmiştik. Bir değişken tanımlayıcı için belirtilen veri türü bu değişken için bellekte ne kadar yer ayrılacağını belirler. JAL'ın kendi kılavuzunda tam değişken tanımlama formatı aşağıdaki gibidir:

VAR [VOLATILE] [SHARED] tür[*sabitifade] tanımlayıcı [ '[' [ sabitifade ] ']' ]
   [ { AT sabitifade [ ':' bit ] | degisken [ ':' bit ] | '{' sabitifade1[',' sabitifade2...] '}'
      | IS degisken }
   [ '=' sabitifade | '{' sabitifade1',' ...'}' | '"'...'"' ]
   [',' tanımlayıcı2...]

Bu format oldukça karışık gibi görünüyor, başlangıç için oldukça korkutucu görünüyor fakat açıklamalarını yazının ilerleyen bölümlerinde yapacağım. Gelin bunu biraz basitleştirelim, en önemli noktaları ele alarak formatı yeniden oluşturalım:

VAR [VOLATILE] [SHARED] veriTürü değişkenAdı AT bellekAdresi

Genelde değişken tanımlarken muhtemelen orjinal kılavuzdaki kadar ayrıntılı tanımlamayacağız. Dolayısıyla sadeleştirdiğim tanımlama formatı yeterli olacaktır. Ama bu eğitimin prosedürü olarak yine de orjinal formatın her bölümünün açıklamasını yapacağım. JAL kılavuzundan alıntıladığım formatın öğelerinin açıklamaları şu şekilde:

VAR

Bir değişken tanımlamasının başlangıcını gösterir. Her bir değişken tanımlamasının başına yazılmalıdır.

VOLATILE

Bu anahtar sözcük kullanılan ya da atanan değişkenin ilerisi için optimize edilmeyeceğini ve bu değişkenin bir ifade değerlendirirken yalnızca bir kez okunacağını veya yazılacağını garanti eder. Normalde bir değer atanıp hiç kullanılmamış değişkenler derleyici tarafından saptanıp ataması kaldırılır ve ona bellekte hiç yer ayrılmaz. Eğer atama bir ifade ise, ifade tümüyle değerlendirilecektir. Bir değişken kullanılmış fakat hiç atanmamışsa, değişkenin tüm kopyaları (ilgili veri türüne göre) 0 sabit değeriyle değiştirilecek ve değişken herhangi bir bellek yerine konumlandırılmayacaktır. İşte VOLATILE sözcüğü derleyicinin tanımlanan değişkeni bu optimizasyondan hariç tutmasını sağlar.

SHARED

Tanımlanmakta olan değişkenin ortak bellek bölgesine yerleştirilmesi gerektiğini derleyiciye söyler, böylece RAM bellekte bu değişken için derleyicinin bank seçimi yapmasına gerek kalmaz.

tür[*sabitifade] / veriTürü

Tür, veri türleri yazısında bahsettiğimiz öntanımlı türlerden herhangi biridir. Eğer tür BIT, BYTE veya SBYTE ise [*sabitifade] kullanılarak genişletilebilir ör. VAR BYTE*2 degiskenA. BYTE ve SBYTE için, bu demek oluyor ki; değişken *sabitifade kullanılarak bir tamsayı biçiminde tanımlanacak, ör. daha önce bahsettiğimiz gibi WORD basitçe BYTE*2 için kısaltmadır.

Eğer tür BIT ise o zaman tanımlama değişir. Bir BIT değişkeni, JAL'da tanımlandığı şekliyle, gerçekte boolean türüdür. Sıfır olmayan bir değer atandığında 1 değerini alır. [*sabitifade] belirteci kullanıldığında tanım daha çok bir C bit alanı olmak üzere değişir: Değer atamaları maskelenir. Örneğin:

VAR BIT*2 metraj

metraj'a değer atandığı zaman, atama şöyle olur:

metraj = (deger & 0x03)

tanımlayıcı

Herhangi geçerli bir JAL tanımlayıcısı diğer bir deyişle değişkenAdı.

'[' [ sabitifade ] ']'

sabitifade büyüklüğünde bir öğe dizisi tanımlar. Dizi indeksi 0'dan başlar (sabitifade-1)'e dek devam eder. Bir dizi tek bir PIC veri bankına sığacak şekilde tanımlanmalıdır. Eğer sabitifade belirtilmeyecekse (=) kullanılarak dizinin öğeleri tanımlanmalıdır. Bu durumda dizi için ayrılacak boyut derleyici tarafından otomatik olarak saptanır. BIT dizileri desteklenmez.

AT sabitifade [ ':' bit ]

Yeni değişkeni sabitifade konumuna yerleştirir. Bu bir bit değişkeni ise, [ ':' bit ] ifadesi, konumla birlikte bit ofsetini yani bitin başlangıcını tanımlar. Açıkça bir yerleştirme yapılmış hiçbir konum başka bir değişkene ayrılmayacaktır.

AT degisken [ ':' bit ]

Yeni değişkeni daha önceden var olan bir degisken'in konumuna yerleştirir. Açıkça bir yerleştirme yapılmış hiç bir konum başka bir değişkene ayrılmayacaktır.

AT '{' sabitifade1[',' sabitifade2...] '}'

Yeni değişkeni çoklu konumlara yerleştirir. PIC denetçilerde özel amaçlı yazmaçların çoğu iki ya da daha fazla veri bankına çoğaltılmıştır. Değişkenin hangi veri konumlarını tuttuğunu derleyiciye söylemek, veri erişim bitlerini optimize etmesine olanak sağlar.

IS degisken

Derleyiciye bu değişkenin bir diğer değişken için basitçe bir rumuz olduğunu söyler. Bu parametre artık yeni sürümlerde kullanılmamaktadır, bunun yerine ALIAS degiskenB IS degiskenA tanımlama biçimi kullanılmalıdır.

'=' ifade

Değer atama. Değişkene ifade değeri atanacaktır.

'=' '{' ifade1 [',' ifade2...] '}'

Dizi değişkenler için yapılan değer atama biçimi. Dizinin öğelerine 0'dan başlayarak sırasıyla ifade1, ifade2, ... değerleri atanacaktır.

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

Bir değişken dizisi için, bu her bir ASCII değerini ('"') ve ('"') arasındaki değere atar. C dilinin aksine dize (string) NULL ile sonlanmaz.

'=' "..."

Bir değişken dizisine çift tırnak işareti içinde bulunan öğeler atanır. Örneğin:
= "abc" ile = {"a","b","c"} eşdeğerdir.

',' tanımlayıcı2...

Aynı nitelikteki çoklu değişkenleri tanımlamaya izin verir:

VAR BYTE a,b,c
Manual de referencia
JAL
Lenguajes de programación
Programación
Programlama Dilleri
JAL Başvuru Kılavuzu
  • < prev
  • All
  • next >

26 of 34

Sorumluluk Reddi

Bu site bilgilendirme amaçlıdır. Burada sunulan bilgileri, uygulayıcı kendi sorumluluğu altında uygular. Bu bilgilerin uygulanması sırasında ihmal, dikkatsizlik, konuyla ilgili bilgi eksikliği veya yanlış uygulama nedeniyle meydana gelebilecek hasarlardan, can veya mal kaybından, maddi veya fiziksel kayıplardan tamamen uygulayıcı sorumlu olup site ve yazarları sorumlu tutulamaz.

Projects

Görevci

Monthly archive

  • Şubat 2017 (2)
  • Mart 2017 (1)
  • Nisan 2017 (1)
  • Mart 2019 (1)
  • Nisan 2019 (1)
  • Temmuz 2019 (3)
  • Eylül 2019 (1)
  • Ekim 2019 (1)
  • Mart 2020 (1)
  • Ağustos 2020 (3)
Sayfalama
  • Sayfa 1
  • Sonraki sayfa ››

Footer menu

  • İletişim

Copyright © 2026 Kozmotronik Tech - All rights reserved

Kozmotronik Tech