Yunus Programlama Dili



Açık kaynak kod mantığına dayanan, görsel bir programlama dilidir. Delphi kullanılarak yapılmıştır. Visual Basic benzeri betik dile sahiptir.

Tarık Bağrıyanık isimli bilgisayar öğretmeni tarafından, Aralık 2001 tarihinde "Delphi 3" ile yapımına başlanmıştır.

24.000 satırdan fazla koddan oluşan proje için, yaklaşık 600 saat harcanmıştır. XML veritabanı dosya türü ve Excel tabloları da desteklenmektedir. Kod renklendirmesi SynEdit nesnesi ile yapılmıştır.

Kodlamada, Yunus 2.8`e kadarki sürümler için Türkçe ve İngilizce, sonraki sürümler için sadece İngilizce kullanılmıştır. Programın kullanımı ise Türkçe ve İngilizce olabilmektedir.




Programcıdan Not:

`` Eksiler ve Artılar: Tüm programlama komutları daha bitmedi. Sadece basit atama, nesne özelliklerine erişme var. Türkçe/İngilizce menü, kayıt, yazıcı çıktısı, yorumlama, renkli kod yazımı, otomatik tamamlama, XML veritabanı, ExcelTablo gibi basit özellikler bulunuyor. Her yeni programda Yunus`un kendi menüleri dahil komutlar da özelleştirilebilir. Yunus Programı çalıştırıldığında Windows Gezgini`nden *.proje dosyaları kayıtlı hale geliyor. Dışarıdan Yunus`un ana penceresine *.proje dosyaları sürüklenip açılabilir. Basit bir şekilde EXE (eğer Delphi 6`nız kurulu ise) yapılabiliyor ve HTML olarak da dönüşüm yapılabiliyor. Delphi 6 sürümü oluşan *.dpr dosyayı açabiliyor. Hata mesajları penceresi daha bitmedi.``

``Çoğunlukla Visual Basic benzeri kodlama sistemimiz var. Aslında hoşuma giden Pascal ve C++ komutları da ekledim. Sonuçta Türkçe veya başka bir dilde özelleştirilebilen basit bir eğitim amaçlı script dilimiz var. "Examples" klasörü içindeki örnekleri inceleyerek genel kullanım hakkında bilgi alabilirsiniz.``

``

Şimdilik size birkaç ipucu:

  • Değişken türleri ve tanımlanması yoktur. Tüm değişkenler globaldir. Değişken adlarında sayı ile başlamak ve özel karakter kullanmak, boşluk bırakmak sorun çıkarmasa da tavsiye edilmez. Kullanıcı hatayı bilerek oluşturduğu kabul ediliyor.
  • Sayı (tamsayı ve gerçek), metin ve mantıksal (True - Evet, False - Hayir) kendiliğinden dönüştürülüyor. 1E3 rakamı 1000 anlamında kullanılabilir. Gerçek sayılarda "," virgül ile ondalık basamak ayrılabilir.
  • "=" ile atama ve karşılaştırma, satır sonlarında ";" yoktur. Aynı satıra ";" kullanarak daha çok komut yazmayı düşünüyorum.
  • "+", "-", "*", "/", "&" (metin birleştirme), "^" (exp - üs alma), “\” (div - tam bölüm), "%" (mod - kalan), "@" (mantıksal ve), "~" (mantıksal veya) hesaplama bağlacıdır. İçiçe hesap ve parantez kullanılabiliyor.
  • Değişken ve nesne özelliklerinden sonra "++" ve "--" ile artım eksiltme yapılabilir. a++ gibi, fakat şimdilik ++a yoktur. a++ deyimi a=a+1`den biraz hızlı işler.
  • Birleştirici hesaplamalar a+=2 (eşiti a=a+2) gibi tüm işlemler (+, -, *, /, ^, %, &, \, @, ~) için kullanılabilir. a+ =1 gibi işlem ve eşittir arasına boşluk bırakmayınız.
  • Hesap yönü soldan sağadır. Çarpma ve bölme önceliği yoktur. Bu gibi durumlarda parantez kullanılabilir.


a=5+6*3-2 ==> a=21 //normalde; * (çarpma) önce yapılır, sonra da kalan yapılır.

a=5+6*3-2 ==> a=31 //Yunus`da; 5+6, sonra 11*3, sonra 33-2... parantez ile a=5+(6*3)-2 asıl sonuç çıktığı görülebilir.

  • sin(gerçek), cos(gerçek), random(tamsayı), int(gerçek), not(mantıksal), len(metin), lower(metin), upper(metin), chr(tamsayı), asc(karakter), delete(metin, ilk, miktar), mid(metin, ilk, miktar), pos(metin, karakter), and(tamsayı, tamsayı), or(tamsayı, tamsayı), xor(tamsayı, tamsayı), shr(tamsayı, miktar), shl(tamsayı, miktar), time() ve date() fonksiyonlarını kod kısmında kullanabilirsiniz. Bu komutları özelleştirme penceresinde bulamazsınız.
  • Metinleri " işareti içine almak gerekebilir. Mantıksal değer olan “Evet” ve “Hayir” çift tırnak içine alınmalıdır.
  • Büyük küçük harf ayrımı yoktur. Komutlar, nesne özellikleri ve değişkenler istenilen büyüklükte karışık yazılabilir.
  • Eger komutu tek veya çok şartlı olarak kullanılabilir. Şart kısmında AND için "@" ve OR için de "~" gibi bağlaçları destekliyor.
  • Eger komutunda "=" ">" "<" "<>" "<=" ">=" kullanılabilir. İçiçe Eger (Degilse) kullanımı sorun çıkarmaz.
  • eEger şart, dogruSatir, yanlisSatir VB dilindeki iif gibidir. İç kısımlarda bloklu komutlar kullanılamaz.
  • Donder degiskenAdi=BaslangicDegeri, BitisDegeri, Artim şeklinde içiçe kullanabileceğimiz döngü komutumuz var.
  • iken Şart şeklinde sonuç "Yanlış" olana dek dönen komut vardır. ikenBitti ile de bittiği belirtilir.
  • Kullanıcı kendi Fonksiyon`unu tanımlanabiliyor.
  • "//" açıklama satırı yapar. Satır içi açıklama satırı yapılabiliyor.
  • Etiket tanımlaması ile istenen satıra Git komutu ile dallanabilme imkanı vardır.
  • Deyimler arasına boşluk ve TAB yapılabilir. Fakat Git komutunun etiketi ":" ile bitişik olması gereklidir.
  • Yuzey komutu ile form üzerine metin, cizgi, nokta, dikdortgen (kare), daire (elips), poligon yapılabilir. Fakat form üzerinden bir şeyler geçtiğinde silindiğini görebilirsiniz. Tazele komutu ile de formu temizleyebilirsiniz.
  • sesCal dosyaadi ile *.wav müzik dosyaları çalınabilir.
  • Tablo nesnesi ile *.xml (Extensible Markup Language) ve *.cds (Client Data Set) dosyalarına erişip basit kayıtlar oluşturabilirsiniz. Şimdilik SQL (Structured Query Language) ve tablo tasarım penceresi (kısayolu: Ctrl+D) bitmedi.
  • ExcelTablosu nesnesi ile Excel dosyalarına ulaşabilir, istenen hücrenin değeri alınabilir, değiştirilebilir, sonrada kaydedilebilir. Yeni dosya oluşturma yoktur.
  • BenchmarkStart ve BenchmarkEnd kodları arası milisaniye olarak hız ölçümü verir. Sonuç Hata Penceresi`ne eklenir.
  • komut tekSatirKomut ile Yunus`un tek satirlik kendi komutlarını kullanabilirsiniz.
Mesela; komut a=1

  • inport(adres) ve outport(adres, byteDeger) donanım olarak port kullanımı içindir.


Örneğin; 888 (378 onaltılık) adresi yazıcının veri portu olarak kullanılır.

  • Nesnelere atanabilen olay adları vardır. Form ilk açılış ayarları için “Yuklenince - OnLoad”, kapanirken de "Kapanirken - OnClose" olayları oluşturulabilir.


``

`` Hedeflenenler:
  • Case - Durum komutu
  • Dinamik Nesne oluşturma
  • Daha iyi nesne seçimi ve nesne boyutlandırma
  • Nesne ve değişken dizileri
  • Tam olarak çalışan Birden fazla Form kullanma
  • Daha geniş Yardım Konuları
  • EXE ve HTML oluştururken tüm nesnelerin komutları ile birlikte çalışabilmeleri


``


Türkçe kod örneği


Form Yuklenince 


Etiket1.baslik=0

a=0

b=0

islem = "a"

eski_ust=form.ust

eski_sol=Form.sol

form.ust=200

form.sol=400

bitti

Form kapanirken

form.ust=eski_ust

form.sol=eski_sol

bitti

Dugme1 Tiklaninca

a=0

b=0

islem="a"

Etiket1.baslik="0"

bitti

Dugme2 Tiklaninca

eeger Etiket1.baslik=0,Etiket1.baslik="",

Etiket1.baslik&="0"

bitti




Yunus to Exe

Bu dilin meraklılarından birisi de Yunus dili ile yapılan projelerin derlenmesini sağlayan ücretsiz bir program ( indirmek için tıklatınız [1]) yapmıştır.

Linkler

Yunus Projesinin ana sayfası

DelphiTürk bilgi kaynağı

Delphiibo

Tuzla Meslek Lisesi`ndeki site

Kaynaklar

Vikipedi

Bu konuda henüz görüş yok.
Görüş/mesaj gerekli.
Markdown kullanılabilir.