Bilgi ve Uygulama

JAL 2.3: Kayıtlar

Yazar: İsmail Sahillioğlu
Tarih: 27.07.2019
Türkçe
Kayıtlar (Records); diziler, değişkenler, ve kayıtlar da dahil olmak üzere diğer yerleşik türleri de içinde barındırabilen ve bu farklı veri alanlarını bir paket haline getiren özel türlerdir. JAL dilinin bu özel türü C dilinde yine özel bir tür olan 'struct' ile benzerlik gösterir. Bir kaydın nasıl tanımlandığına bakalım:

    RECORD "tanımlayıcı" IS
"tür1" "tanımlayıcı1"
...
END RECORD
Bir kayıt oluşturulduktan sonra, basit bir türün kullanıldığı herhangi bir yerde kullanılabilir. Kaydın dahili alanlarına '.' işleci kullanarak erişilir.

Konuyu pekiştirmek için bir örnek yapalım; 20 baytlık bir veri kuyruğu tamponu, bu tamponun okuma ve yazma sayaçlarının tutulduğu bir kayıt türü oluşturmak istediğimizi varsayalım. Bunun için şöyle bir tanımlama yapmamız gerekir:

    RECORD kuyruk IS
BYTE tampon[20]
BYTE okuma --Okuma adresi tutucusu
BYTE yazma --Yazma adresi tutucusu
END RECORD
Bu kaydın alanlarına istenirse kayıt tanımlandığı sırada, istenirse de kayıt tanımlandıktan sonra değer atanabilir.

Tanımlama sırasında değer atama:
    VAR kuyruk kuyruk_1 = {0,0,0}
Üstteki kayıt tanımlama biçimine dikkat ettiyseniz; tıpkı yeni bir değişkenin tanımlandığı gibi tanımlanıyor. Burada "kuyruk" kaydı, "kuyruk_1" tanımının belirleyici türü oluyor. Tanımlama esnasında tampon, okuma ve yazma alanları sıfır değerlerini alıyor.

Tanımladıktan sonra kayıt alanlarına erişerek değer atama ve sonrasında birkaç kullanım örneği:
    VAR kuyruk kuyruk_1

kuyruk_1.okuma = 0 --Sayaçları sıfırla
kuyruk_1.yazma = 0

kuyruk_1.tampon[kuyruk_1.yazma] = 100 --tampon[0] = 100
kuyruk_1.yazma = kuyruk_1.yazma + 1 --Yazma sayacını 1 artır
kuyruk_1.tampon[kuyruk_1.yazma] = 200 --tampon[1] = 200
kuyruk_1.yazma = kuyruk_1.yazma + 1 --bir sonraki yazma tampon adresi

VAR BYTE okunan_veri
okunan_veri = kuyruk_1.tampon[kuyruk1.okuma] --tampon[0] okundu
kuyruk_1.okuma = kuyruk_1.okuma + 1 --bir sonraki okuma tampon adresi

Hatta işleri biraz daha karmaşık hale getirip bir kayıt dizisi tanımlayabiliriz:
    VAR kuyruk kuyruklar[5]    --5 adet 20 baytlık herbirinin kendi okuma ve
yazma sayaçları olan kuyruk dizisi tanımlandı
kuyruklar[0].tampon[kuyruklar[0].yazma] = 18
kuyruklar[0].yazma = kuyruklar[0].yazma + 1

kuyruklar[1].tampon[kuyruklar[1].yazma] = 54
kuyruklar[1].yazma = kuyruklar[1].yazma + 1

kuyruklar[2].tampon[kuyruklar[2].yazma] = 237
kuyruklar[2].yazma = kuyruklar[2].yazma + 1

JAL'ın yapabildikleri bunlarla da sınırlı değil! JAL ayrıca iç içe kayıtları da destekliyor. Bu sayede size yalnızca nasıl bir kayıt ağı oluşturacağınızı hayal etmek düşüyor. Bir örnek de iç içe kayıtla yapalım. Bu örnekte, önceki örnekte oluşturduğumuz "kuyruk" kaydını kullanacağız:
    RECORD LCD_kuyruk IS
kuyruk kuyrukLCD
BYTE LCD_komut
BYTE LCD_veri
END RECORD

VAR LCD_kuyruk LCD1
LCD1.LCD_veri = "A"
LCD1.kuyrukLCD.tampon[LCD1.kuyrukLCD.yazma] = LCD1.LCD_veri
LCD1.kuyrukLCD.yazma = LCD1.kuyrukLCD.yazma + 1

Kafanızda -'Bu kayıt türü nasıl bir uygulamada kullanılabilir ki?'- diye bir soru oluşabilir. İşin gerçeği böyle bir soruya yanıt vermek zor. Çünkü olasılıklar ve ihtiyaçlar geniş bir yelpazeye sahip. Dolayısıyla bu yapıyı nerelede kullanacağınız tamamiyle sizin hayal gücünüze ve programlama birikimlerinize bağlı. Hiç aklınızda bir şey oluşmuyorsa bunu garipsemeyin, zira programlama dünyasında oldukça yeni olabilirsiniz. Nitekim yukarıda verilen bir veri yapısı olan kuyruk örneği ve LCD_kuyruk, kayıt türünün nasıl ve ne biçimde kullanılabileceği ile ilgili küçük de olsa fikir verecektir. Hadi sizler de boş durmayın ve bir kayıt türü oluşturmayı deneyin. Belki de bir sensör uygulaması yapabilir ve sensör özelliklerini içeren bir kayıt oluşturabilirsiniz...


Etiketler: JAL kayıtlar records

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