Yunus Programlama Dili...

DoWn LiTe

Uzman üye
9 Nis 2007
1,608
33
emekli mod
Resim:YunusProgramlamaDili.jpg

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 Notlar:
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
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.