Forumteams.com !

Tam Versiyon: Yabasic
Şu Anda Arşiv Modunu Görüntülemektesiniz. Tam Versiyonu Görüntülemek İçin Buraya Tıklayınız.
Sayfalar: 1 2
                            
                          Yabasic

              Mühendisler için değil, son kullanıcılar için bir programlama dili.


Yabasic kurulumu

Buradan  https://2484.de/yabasic/  yabasic-xxx-setup.exe dosyasını indirebilirsiniz ve kurabilirsiniz. Kurulum esnasında size kurulacak yeri
seçme imkânı tanır. Varsayılan olaram "C:\\yabasic" adında yeni bir dizin oluşturmayı önerir. Seçim size kalmış.

Windows XP kullanıcıları için, aynı sayfada yer alan yabasic-xxx-zip dosyasından kurulum önerilir. Güvenlik yazılımınız setuo
dosyasını engellerse, Windows 10 için de yine yabasic-xxx-zip dosyasını kullanabilirsiniz.

yabasic-xxx-zip dosyasının içeriğini dizine çıkardığınızda yabasic klasörü içinde i bir de setup.exe dosyası görebilirsiniz.
.exe uzantısı varsayılan olarak Windows 10'da görünmez. O setup dosyasına tıkladığınızda yine normal bir kurulum gerçekleşir.

Yabasic diğer programlar gibi çalışmaz. Bir masaüst simgesini de göremezsiniz. Kullanıcı hesabınızın programlar
menüsünde de göremeyebilirsiniz. administrator/Yönetici hesabınız aktif ise, orada menüde bir kaç giriş görebilirsiniz.

Yabasic kullanımı

Masaüstüne sağ tılayın ve açılan menü'den "yeni" seçin. O kısımdan "yeni yabasic programı" seçin. Masaüstünüze bir simge açılacak. Simge'nin adını değiştirebilirsiniz. Biz onu "deneme" olarak değiştirelim. Simge'ye çift tıkladığımızda
siyah bir iç ekran (veya pencere diyelim) açılacak. üst sol köşede "--program done, enter RETURN key--" yazar.

İlk programımızı böylece başlatmış olduk. Ama programın içi boş. Ve bu nedenle bir şey olmadı. İçine kodlarımızı yazmamız
gerekiyor. Enter tuşuna bastığımızda programımız kapanacak. Programımıza sağ tıklayalım ve açılan menüdeki
en üstte olan seçeneklere bir bakalım. Orada  "Execute", "Edit" ve "View docu" seçeneklerini göreceksiniz. "Execute"
seçtiğimizde program yine boş bir içerik ile başlatılacak. "Edit" seçtiğimizde programımız "Notdefteri" ile açılacak.

Aşağıdaki  satırları ekleyip "Notdefteri"ni kapatalım ve programımızı yeniden sağ tıklayarak açalım.


Kod:
docu Bu program boş,
docu Hiç bir işlem yapmaz.

Programımızı çalıştırdığımızda yine boş bir ekran çıkacak. Ama  sağ tık menüsünden "View docu" seçtiğimizde o ekranda
eklediğimiz satırları (docu kısmı hariç) okuyabiliriz. Docu kısmı kullanıcı için bilgi içerir. Yardım bölümü gibi.

Programımızı tekrar "Edit" seçeneği ile açalım ve bir satır daha ekleyelim.


Kod:
print "Bu bir deneme"

Programımızı kayıt edip sonra tekrar çalıştırdığımızda, bu sefer çift tırnaklar içindeki metni ekranınımızda görebiliriz.

Programımızı tekrar "Edit" ile açalım ve tekrar düzenleyelim.


Kod:
docu Bu program bir mesaj yazar.
docu Başka bir işlevi yok.

// print kodu ekrana bir çıktı yansıtır.

print "Bu bir deneme."
print "Başka denemelerimiz de olacak."

Programımızı kaydedip yeniden başlattığımızda Türkçe karakterleri düzgün yazmadığını göreceğiz. "şŞüÜİıĞğÇç"
gibi harfleri kullanmamaya özen gösterelim.

"//" bu işaretin ardında eklediğimiz satır, ne "View docu" seçeneği ile, ne de "Execute" seçeneği ile görünmez.
Kendimiz için yazdığımız notları o şekilde ekleyebiliriz.şekilde ekleyebiliriz. Bir başkasına anlatıyormuş gibi yazarsak
öğrenme sürecimize de bir katkısı olur.

Programımızı Türkçe karakterlei de destekleyecek şekilde yeniden düzenleyelim ve kayıt edelim.

Kod:
docu Bu program sizi delamlar.
docu Başka bir işlevi yok.

// Program başlangıcı
// Bazı işlemler için önce ekranın temizlenmesini gerekir.

clear screen
system("chcp 65001")

// Program gövdesi.
// Tüm işlem burada gerçekleşir.

print "Merhaba arkadaşlar"

// Program sonu.
// Bu işlem sadece Konsolun kapanmasını önler.

BirTusaBas$=inkey$

Programa yeni satırlar ekledik.
"clear screen" ile önce ekranımızı her tür önceden kalmış bilgi den temizliyor.
'system("chcp 65001")' satırı ile konsol ekranına Türkçe karakterleri destekleyen bir kodlama sayfası ekliyoruz.
Son satır olan xxx$=inkey$ ise kullanıcıdan bir giriş alana kadar ekran sonunda beliren ve Yabasic tarafından
eklenen bildirim yazısını engelliyor.

Basic'te değişken adlarının sonuna eklenen "$" işareti değişkenin veri türünü belirler. "inkey$"deki "$" işareti de yine kullanıcıdan alınacak veya beklenen (Klavye girişi) verinin türüne işaret ediyor.

BuBirDegısken$ = "Kelime/Karakter türü"
BuBirDegisken = Sayı/Rakam türü

Basic'te veriler sayı veya yazı türü olarak ikiye ayrılır. Sayılar/Rakamlar yazıldıkları gibi algılanır. Yazı türü (" ") çift tırnaklar
içinde yazılmalı. Aksi olursa, Basic o harf veya kelimeyi sıfır değerinde bir rakam olarak algılar. Ve yine "1" veya "2" gibi
sayılar bir kelime veya karakter olarak algılanır ve hesaplanamaz.
Yeni bir Yabasic programı açalım ve adını da "boyama" koyalım.

Kod:
clear screen

for boyama = 0 to 10079
    print color("red","red")," ";
next boyama

print at(35,10),"";
print color("white","red"),"Merhaba"

a$=inkey$
Burada bir döngü (kod tekrarlaması) kullandık. Ek olarak programa renk kattık.
Döngümüz bir kalıp içinde çalışıyor. "for" satırı ile başlıyor ve "next" satırı ile sonlanıyor.
"boyama" kelimesi burada döngü içinde geçerli bir değişken ataması. istersek adını "Ali" de koyabilirdik.
Anlamlı isimler kullanmak her zaman daha anlaşılır kod yazmamızı sağlar.

"print" kodumuz (bir fonsiyon) burada iki arguman kullanıyor. Birincisi "color()" ve ikincisi boş bir (" ") kelime.
Boşluk kendisi de programımız içinde yer kaplayan bir karaktar aslında.

"color()" içinde de iki arguman var. İlk olan yazı rengi, ikincisi zemin rengi. Bu durumda ikisi de kırmızı.

İkinci bir "çift" argumanlı "print" kodumuz var ve bu sefer "at()" argumanı ekran içinde konum beliriyor.
İlk arguman "yatay konum" ve ikinci arguman "dikey" konum. Konsol ekranında konum aralıkları "harf" boyutunda.

Standart olarak konsol ekranları yatay 82 karakter genişliğinde ve dikey 24 karakter derinliğinde. Windows 7'de
Konsol ekranı anca derinlemesine genişletileblirken, Windows 10 da tam ekran, Monitör ne kadar geniş se, genişletilebiliyor.

İkinci "print("")" kodumuz bir";" işareti ile sonlanıyor. Noktalı virgül ile sonlanan satırlarda satır aşağı inilmiyor ve
bir sonraki "print" kodumuz çıktısını son kalınan satır ve sütundan devam ediyor.

Bu örneği de deneyin ve bakın ne oluyor.

Bir örnek daha. İstediğiniz adı verebilirsiniz.

Kod:
clear screen

for selam = 0 to 100
    print color("red","cyan")," Merhaba";
    print color("cyan","yellow")," Merhaba";
    print color("magenta","green")," Merhaba";
    print color("green","black")," Merhaba";
    print color("white","magenta")," Merhaba";
    print color("blue","white")," Merhaba";
    print color("black","red")," Merhaba";
    print color("white","blue")," Merhaba";
next selam

a$=inkey$
Dikkat ederseniz ilk çift tırnak ile "Merhaba" kelimesi arasında bir boşluk bıraktım. Şöyle " Merhaba".
Sebebini siz bulmaya çalışın.
Döngüleri biraz inceleyelim. İki "for" döngüsü, ikisi de Bir'den On'a kadar Onar kez yazdırıyor. Nasıl yazdıracaklarını ise biz şekillendiriyoruz. Normal olanı On kez alt alta 1 - 10 arası yazdırması.

Kod:
for yatay = 0 to 10
    for dikey = 1 to 10
        print dikey;
    next dikey
    print ""
next yatay
Kullandığımız döngü, iç içe iki "for" dögüsü". "print" kodumuzun sonuna eklediğimiz noktalı virgül. her yeni sayımda
rakamların yan yana yazılmasıı sağlıyor. İkinci "print" kodumuzun görevi, bir sonraki sayımı bir alt satırdan başlatmak.

Değişkenlerin isimleri sizi yanlış yola saptırmasın. İlk döngü, döngü sırasını belirliyor ve ikinci (iç döngü) döngü sırayla
yazdırıyor. Döngülerin sonlandırılıması içten dışa doğru yapılır. Son başlayan ilk biter şeklinde.

Bu döngüden şöyle bir sonuç almanız gerekiyor.

1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

İkinci örnek

Kod:
for yatay = 0 to 10
    for dikey = 1 to 10
        print yatay,
    next dikey
    print ""
next yatay
 Buradaki bir fark, dış döngüde sayılan sayıları iç döngüde yazdırmak. İkinci fark ise ilk "print" kodu sonuna virgül
eklemiş olmamız. (Noktalı virgül değil) Sona eklenen virgül, "print" kodunda bir sonraki kayıdın 6 sütun sonra başlaması.
Bunu yapmamınzın sebebi (bu örnekte) 10 sayısının iki rakamdan oluşu nedeniyle alt kısımda genişlemeye debep olması.
Bu örnekte soldan sağa saymak yerine, üstten aşağı doğru sayılıyor.

Basic'te en sona eklenen virgülün 6 sütun atlamasının sebebi geleneksel. Basic, bilinen en eski ve halâ kullanılan bir kaç
dilden birisi. Bilgisayar teknolojisinin tarihi sayılır. İlk zamanlarda o şekilde tablolar kullanılırmış ve bu işleme kolaylık olsun diye böyle bir çözüm bulunmuş.

Yabasic'te bilinen Renkler

"white" = Beyaz
"black" = Siyah
"blue" = Boncuk Mavisi
"yellow" = Sarı
"green" = Yeşil
"cyan" = Gök Mavisi
"red" = Kırmızı
"magenta" = Mor

Toplam 8 renk var v bu renk tanımları sade "print" kodu ile birlikte kullanılabiliyor. Örnekler aşağıdaki gibi.

print color("red"),"Merhaba"
print color("red","yellow"),"Merhaba"

İkinci renk zemin rengi. İkinci renk belirtilmemiş se, varsayılan konsol rengi geçerli.
Grafikler [Resim: heart.png] [Resim: smile.png]

İşte en sevdiğimiz konu bu. Değil mi?  Gülümseme
Yeni bir yabasic programı başlatalım ve hemen bir şeyler deneyelim  Gülümseme


Kod:
open window 800,400

backcolor 255,200,0
clear window
color 0,0,255
text 320,200,"Merhaba","swiss24"
sleep 3
clear window

color 250,0,250
text 300,200,"Nasilsiniz?","swiss20"

clear screen
system("chcp 65001")
print at(31,10),"";
print color("cyan"),"Merhaba"
print at(30,11),"";
print color("red"),"Nasılsınız"

sleep 3
close window
beklet$=inkey$
exit
Kodlarımızı kayıt edip, hemen yeni programımızı çalıştıralım.

Programımız çalışırken iki farklı pencere açılacak. İlki şimdiye kadar kullandığımız Konsol ekranı, diğeri
onun önünde açılan dikdörtgen bir pencere.

Grafik pencerenin boyutunu biz belirliyoruz. Grafiklerde boyutlar karakter sayısı ile değil, Piksel (Nokta)
sayısı ile ölçülür. Grafik pencereyi (veya ekranı) açan komut "open window", boyutunu belirleyen piksel
sayısı hemen ardından eklenir. Örnek: "open window 800,400" şeklinde.

İlk rakam genişliği, ikinci rakan yüksekliği belirler.

Konsol ekranı kapanırsa, grafik ekran da kapanır. Yabasic'te Windows sürümünde böyle. Onunla idare
idare edeceğiz. Konsol ekranı hata bildirimlerinin de alındığı ekran.

Grafik ortamı farklı bir ortam olduğu için komutları da farklı. Meselâ "print" komutu grafik ortamda yok.
"print" kullanılan her işlem doğrudan Konsol ekranına yansır. rafik ortamında eşdeğeri olarak "text"
kullanıyoruz. "color" ise farklı parametreler ile kullanılıyor. "green", "yellow" v.s grafik ortamda çalışmıyor.

Programımızın ikinci kodu olan "backcolor" grafik ekranın zemin rengini belirliyor ve bu remk sabit kalıyor.
"255,200,000" rakamları renk karışımını belirler. Grafik ekran 16.000.000 renk destekler. Renk tonlarını
rakamlar koyuluk seviyesi ile belirler. İlk rakam grubu "Kırmızı", ikinci rakam grubu "Yeşil" ve üçüncü
rakam grubu da "Mavi" tonlarına etki eder. (Bu bir Standart, RGB olarak bilinir.)

Zemin renginin etkili olması için, varsayılan olan Beyaz ekran rengi silinmeli. Bunu da "clear window"
komutu yapıyor. "color 0,0,255" yazı veya çizim rengini belirliyor. Bu renk değişebilir veya silinebilir.

' text 300,200,"Nasilsiniz?","swiss24" ' Bu satı, 300 piksel sağa ve 200 piksel aşağıya "Nasilsiniz?" yazdırır
ve bu yazıyıda "swiss" yazı tipi (font) kullanarak gerçekleştirir. "swiss" yazı tipine eklenmiş olan rakam
yazı yüksekliğini belirler. Yazı boyunda bir sınır yok. Windows sürümünde Yabasic 6 farklı yazı tipi
destekler. (Linux sürümü sadece standart yazı tipi ve belirli boyutlar destekliyor. Bunlar "6x10","8x16","9x15","10x20","12x24" gibi  eklenirler. BSD veya MacOS için yine daha farklı bir işlem
gerekir.)

Bu örnekte yine Konsol için de bazı kodlar var. Ve programın çalışma süresi "sleep 3" kodu ile 3 saniye
ile sınırlandırılmış. Çünkü o 3 saniye geçtiğinde diğer kod'a geçiyor program ve diğer bekletme süresi sonunda bir sonraki aşamaya ilerliyor.

"close windows" ile grafik ekran kapanıyor ve Konsol ekranındaki yazılar beliriyor. Herhangi bir klavye
girişi sonunda da program kendini kapatıyor ve en son "exit" komutu ile Konsol da kapanıyor.

Bir örnek daha ekleyeyim


Kod:
# program selam.yab
# sürüm 0.1
# son düzenleme 18 Mart 2022

docu Bu program kullanıcıyı selamlar.
docu Farklı bir işlevi yok.

// Program başlangıç.
// 600x600 piksel bir grafik pencere açar.

open window 600,600

// Program gövdesi.
// Ekranı kırmızıya boyar.

for yatay = 0 to 600
    color yatay/3, 0, 0
    line yatay, 0, yatay, 600
next yatay

// Bir mesaj bildirir

color 255,255,255
text 250,300,"Merhaba","swiss24"

// Programı 10 saniya açık tutar

sleep 10

// Konsolu kapatır

exit
Dereleme

Yabasic kurulurken tüm ayarlarını da yapıyor. Ve Windows Yabasic programlarını tanıyor ve nasıl
çalıştırılacağını biliyor. Başka bir Windows'a aktarıldıklarında, diğer Windows bu dosyaların ne işe
yaradıklarını bilmiyor ve programlar çalışmıyorlar. Diğer Windows'a da Yabasic kurulması gerekiyor.

Başka bir yöntem, programlarınızı derlemek. Yabasic programlarının kend dosya uzantısı var. Yabasic
kurulu bir bilgisayarda görünmese da Yabasic programlarının adının sonunda .yab ekli.
Örnek olarak "deneme" programımızın gerçek adı "deneme.yab". Diğer bilgisayarda da aynen öyle
görüntülenecek. Bizim bunları .exe uzantılı dosyalara çevirmemiz gerekecek. Yabasic bunu da destekliyor.

Yeni, diğer bilgisayarda da çalışacak dosyaların boyutları da büyümüş olacak. Günümüzde bu durum
Yabasic programları açısından fazla önemli değil. Çünkü Yabasik programları hep diğer programlara kıyasla küçük boyutlu kalır.

Şimdi "deneme" isimli programımızı derleyelim.

İlk olarak Komutsatırı'nı açmalıyız. Diğer adı ile "CMD". Komut satırı açıldığında kullanıcı dizininde
görür kendisini ve orada işlem yapar. Kullanıcı dizini, "Belgeler", "İndirmeler", "Resimler", "Videolar" gibi
alt dizinlerin bulunduğu "C:\users\Kullanıcı_adı" dizini oluyor. Bizim "deneme" programımız da Masaüstü
dizininde. "CMD" o dizini Desktop olarak görebilir.

Önce "CMD" ile o dizine girmemiz gerekecek.

Kod:
CD Masaüstü
Veya

Kod:
CD Desktop
Komutu ile Masaüstü'ne giriş yapmış oluruz.

Yabasic "C:\yabasic" dizininde kurulu varsayalım. (Siz kurulum esnasında farklı bir yer seçmediyseniz.)


Kod:
C:\yabasic\yabasic -bind deneme.exe deneme.yab
Bu komutu girip çalıştırdığınızda Masaütü'nüzde iki "deneme" isimli program göreceksiniz. Bir farklı bir sıraya kopyalanmış olabilir ve aramanız gerekebilir. İkisi de aynı şekilde çalışır. Ancakgerçek isimlerinde uzantı farkı görebilirsiniz. Bunu sağ tık ile özelliklere girerek görebilirsiniz. Veya .exe uzantılı dosyaya sağ tıkladığınızda "View docu" yada "Edit" göremezsiniz. Evet, artı "docu" satırları okunmuyor, kendiniz için
yazdığınız bilgi veya hatırlatma satırları da okunmuyor. Hatta kodlarınızı düzeltemiyorsunuz. Ama bir
başka bilgisayara aktardığınızda, meselâ bir arkadaşınız ile paylaştığınızda, Windows XP, Vista, Windows 7
Windows 8, Windows 8.1, Windows 10 ve hatta (belki) Windows 11 de bile çalışacaktır.

Yabasic Programlar dizininde kuruluysa (bende öyle) komutunuz biraz uzayacaktır. Aşağıdaki gibi meselâ.

Kod:
C:\"Program Files (x86)"\yabasic\yabasic -bind deneme.exe deneme.yab
Dikkat ettiyseniz arasında boşluk olan dizin isimlerini çift tınaklar içine aldım. Aksi durumda hata alırsınız.
"CMD" veya komut satırı boşluğun başladığı yerde okumayı atlar.

Yabasic programlarını sadece Masaüstü'de yapmak zorunda değilsiniz. İstediğini her dizinin boş bir alanına
sağ tıklayın yeter. Windows 10'da Komutsatırı yerine, içinde bulunduğunuz dizin/klasör içinden üst'te
Dosya seçeneklerinden "Windows Powershell" komut istemcisini de seçebilirsiniz. Bu durumda zaten
dizin içinde bulunduğunuz için ilk "CD Dizin_adı" komutunu atlayabilirsiniz. Gerisi aynı şekilde.
Çizimler ve Boyama

Yeni bir Yabasic programı açalım. Adını siz kendiniz koyun. Biraz çizim yapalım.


Kod:
open window 600,600

color 255,0,0                rem Kırmızı
line 100,100, 200,200

color 0,0,255                rem Mavi
line 200,100, 300,200
Yukarıdaki kodları kayıt edelim ve programımızı çalıştıralım. Bakalım ne göreceksiniz?

Kodlarımızı inceleyelim.
Önce 600,600 piksel boyutunda bir grafik ekranı açtık.
Ardından bir ön zemin rengi (Çizim ve yazı için) belirledik.
"REM" geleneksel bir Basic bilgi veya hatırlatma satırı tanımlayıcı. Biz bu tanımlayıcıyı kod satırımızın
sonuna (aynı satıra da) ekleyebiliyoruz. Kısa bilgi notları için kullanışlı oluyor.
Renk tanımları için kullandığımız değer her ren tonu için 0 - 255 arası olabiliyor.
"line" fonsiyonu bizden dört değer alır. İlk iki değer başlangış piksel'i, kinci iki değer sonlanma piksel'i.
Tanımlanan iki piksel arası ve tanımlanan renk'te bir çizim oluşur. Birinci değerler her zaman yatay konum
ve ikinci değerler her zaman dikey konumu temsil eder.

Programımıza bir ekleme yapalım.


Kod:
color 0,255,0                rem Yeşil
circle 400,100, 100
"circle" fonksiyonu bizden üç değer bekler. İlk iki değerler daire'nin tam orta noktasını belirler ve
üçüncü değer yarı çapı uzunluğunu alır.

Bir ekleme daha yapalım.


Kod:
color 255,0,255              rem Pembe
rectangle 100,300, 200,400

Sonunda Pembe renginin kodunu da keşf ettik  Gülümseme  Bundan sonra her şeyi Pembe yaparız  Gülümseme
"rectangle" fonksiyonu dört değer ister. İlk iki değer başlangıç köşesini, ve son iki değer bitiş
köşesini temsil eder. Pembe hatlı bir dikdörtgen'imiz oldu. Ne mutlu bize.

Üçgen de yapalım.


Kod:
color 255,255,0              rem Sarı
triangle 450,300, 500,400, 400,400
Üçgen çok şey istiyor. Her köşe için iki değer. Toplam altı değer yapar.

Bir de nokta çizelim Gülümseme


Kod:
color 0,0,0                  rem Siyah
dot 150,350
Noktamızı görmek biraz zor. Çünkü tam bir piksel boyutunda. Pembe dikdörtgenimizin tam ortasında siyah bir nokta. "dot" için iki değer yeterli geliyor. Yatay konum + dikey konum. Hepsi bu kadar.

Renk seçmemeiz durumunda varsayılan renler (Beyaz üstü Siyah) kullanılır. Veya bir önceki tanımlanan renklerden devam edilir.
Yeni teknikler deneyelim  Gülümseme   

Önce yeni bir Yabasic programı daha başlatalım, ve aşağıdaki kodları ekleyelim ve kaydegelim.

Kod:
open window 600, 600

backcolor 255,0,255
clear window

Pembe bir grafik penceremiz var artık.
"backcolor" ile varsayılan rengi değiştirmiş olduk ve bu renk silinmez (ama değiştirilebilir)

Ekleme yapalım.
Kod:
color 255,255,0
fill rectangle 0,0, 600,600
İçi boyalı bir dikdörtgen ile tüm zemini sarı olarak kapladık.

Kod:
color 255,0,0
rectangle 100,100, 500,500
Kırmızı ama içi boyalı olmayan bir dikdörtgen (aslında Kare) daha.

Kod:
clear fill rectangle 120,120, 480,480
Şimdi  bir Kare daha ekledik, ama bu kare aslında renksiz. Tam olarak bir Kare alanını kestik ve zemin rengi olan pembe
tekrar ortaya çıktı. Varsayılan zemin rengi değiştirilmediği sürece kalıcı.

Kod:
color 0,255,0
fill circle 300,300,200
Bir de içi doldurulmuş bir Küre ekledik.

Kod:
clear fill circle 300,300,180
Küre şeklinde bir alan temizledik veya kestik ve yine varsayılan zemin regi olan pembe ile karşılaştırk.

Kod:
color 255,255,255
fill triangle 300,100, 100,500, 500,500
Tüm renk değerleri 255 olduğunda karşımıza çıkan renk "Beyaz". Hepsi sıfır olduklarında karşımıza çıkan renk "Siyah".
İçi dolu beyaz bir üçgen ekledik programımıza.

Kod:
clear fill triangle 300,110, 130,450, 490,550
Ve üçgen şeklinde bir kesilmiş alan.

"fill" komutu "triangle", "rectangle" ve "circle" fonksiyonları ile birlikte kullanılabilir ve o fonksionların alanlarını renk ile
doldurur.

"clear fill" ise yine aynı fonsionlar ile kullanılır ama tersini yapar. O alanların içini siler.
Programımıza "Buton" (Düğme) ekleyelim

Yabasic'te "Form" fonksiyonları yok. Bunu istiyorsak kendimiz yapmalıyız.
Ve, "docu" açıklama veya bilgilendirme satırlarımıza derlenmiş programlardan ulaşamıyorduk.
Bunu da, "docu" satırlarımızı program içerisinden okutarak çözebiliriz.

Tek Butonlu bir program.

Kod:
docu Bu program sadece yardim metnini gosterir.
docu Baska bir islemi henuz yok.

open window 600,600

backcolor 255,0,255
clear window

color 0,0,255
rectangle 200,300, 400,350

color 0,255,255
fill rectangle 201,301, 399,349

color 255,255,0
text 230,335,"Buraya Bas","swiss20"

clear screen
Bas$=inkey$

color 255,255,255
if mousex > 200 and mousex < 400 and mousey > 300 and mousey < 350 then
    text 50,100,docu$(1)
    text 50,150,docu$(2)
end if

sleep 5

Programımızı inceleyelim. Bazı yeniler barındırıyor.

Önce çalıştırıp deneyebilirsiniz. Programın bir Butonu var ve tıklayınca "docu" satırlarını yazdırıyor. Sadece bir tıklama
şansınız var. İlk tıklamayı Buton'un dışında bir yere yaptıysanız, bir sonrakilere cevap vermiyor. Bu benim kazandırdığım
çok özel bir özellik değil. Sadece bir giriş alıyor ve o da "Bas$=inkey$" satırında. Sonra işlem alt satırlara devam ediyor.

"if" satırı biraz uzun oldu. burada "mousex" ve "mousey" imlec'i temsil ediyorlar. Tek işlevleri algılamak. "<" ve ">"
işaretleri daha büyük veya daha küçük kıyaslaması yapıyor. Rakamları Butonun konumuyla kıyaslarsanız ne kıyaslanıyor
hemen anlarsınız.

"docu$()" fonksiyonu docu satırlarını algılar. Parantezler içindeki rakam satır sırasını algılar.

İşlem bittikten sonra derlenmiş programın hemen kapanmasını önlemek için son satırda 5 saniyelik bir bekleme ekledim.
Ve, grafik ekranda Türkçe karakterler desteklenmediği için "ÖöÜöıİ..." gibi harfleri "docu" satırlarında kullanmadım.

Daha önceki bir örnekte kullandığım 'system("chcp 65001")' satırı sadece Konsol için Türkçe karakterleri kullanılabilir kılıyor
ve sadece Windows işletim Sistemi için geçerli.

"if" ve "end if" satırları sık kullanılan bir blok (Kalıp) oluşturur ve koşul sınar ve bir sonuç çıkarır. İyi anlayabilmekte yarar
var. "end" tek başına kullanıldığında Basic'te tüm programı sonlandırır. Programın ortasında dahi olsa.
Kullanıcıdan bilgi girişi

Kullanıcı ile etkileşim için kullanıcıdan bilgi almamız gerekir. Bunun için iki örnek ekleyeyim.



Kod:
system("chcp 65001")

input "Adını yaz : " isim$
print "Merhaba ",isim$

input "Yaşını yaz : " yas
print isim$," sen ",yas," yaşındasın."
Burada bir Konsol programında kullanıcıdan bir giriş bekleniyor.

"input" beklenen giriş için bir de açıklama yazmamaıza olanak tanıyor. Ve kullanıcı bir giriş yapana kadar ve "Enter" tuşuna basana bekliyor. Kullanıcı girişi bu konuda "isim$" adlı değişkenin erişebildiği bir alana, ileride kullanılabilmek amacıyla

saklanıyor. "print" ile o saklanan veriyi yazdırabiliriz.



İkinci "input" girişimiz bizden (ismin sonunda "$" karakteri yok) veri türü sayı olan bir giriş bekliyor. Ve ikinci "print" fonksiyonu bir den fazla değeri, virgül'ler ile ayrılmış şekilde yazdırıyor. (Virgül en sonunda olduğunda 6 sütün

atlanıyordu) Buradaki virgüller farklı veri türlerini aynı satıra yazmamızı sağlıyor.



"input" grafik ekranda çalışmıyor. Konsol da giriş alıp, grafik ekranda sonucu yansıtabilirsiz. Bunun için Konsol ön sırada

açılmış olmalı ve sonra grafik ekran öne alınmalı. Bunu hiç bir kullanıcıdan bilmesini ve uygulamasını bekleyemezsiniz.



Çözüm:



Kod:
dim a$(5)

open window 400,400
color 255,0,0
text 50,50,"Adini yaz:","swiss24"
clear screen

for x = 1 to 5
   isim$=inkey$
   text 150+(x*15),50,isim$
   a$(x)=isim$
next x

text 50,100,"Merhaba "+a$(1)+a$(2)+a$(3)+a$(4)+a$(5)
Grafik ekran için kullanıcı girişi için "inkey$()" fonksiyonunu kullanıyoruz. "inkey$" her seferinde sade bir karakter

giriş aldığı için, bunu bir döngü içinde tekrarlatmamaız gerekiyor. Ve ekrana yazılacak olan da aslında en son alınan

karakter olur. Bunu önlemek için her bir karakteri ayrı bir değişkene kaydediyoruz. Her seferinde yeni bir isim

yaratmak zorunda kalmamak için bir dizi kullanıyoruz.



"dim" ile tanımlanan değişkenler bir den fazla veriyi tutabilir. Veriler aynı türden olmalı ve "dim" ile belirlenen sayıdan fazla olamaz. Aynı isimli değişkenler, parantez içinde eklenen sıra sayısı sayesinde tanımlanır. "for" döngüsü içinde her bir

değişkene her seferinde giriş yapılan karakter atanıyor. Ve "text" çıktısı ile ekrana yazdırılıyor.



Toplam çıktı sanra tekrar döngü dışında "text" fonksiyonunda, değişkenler sırasıyla çağrılarak ve "+" ile birleştirilerek

yazdırılıyor. (Hangi sırada birleştirilirlerse o sırada yazılırlar.)



Programımız beş karakterden uzun isim almıyor. Beş kez tuşa basabilirsiniz.
Döngüler

Yabasic te desteklenen döngülere bir göz atalım.

"while" döngüsü.
Kod:
a=0
while a < 12
    print a," Merhaba"
    a=a+1
wend

"while" döngüsü "while" tabımıyla ile ve ardına eklenen bir koşul ile başlar. Ve "wend" sonlandırıcı ile tamamlanır.
Arada gerçekleşen işlem, en başta belirtilen koşul gerçekleşene kadar tekrarlanır. Bu örnekte ise "a" değişkeni, başlangıç
değeri sıfır iken, son değeri 12 ile eşit olana kadar, "a"nın değeri ve "Merhaba" kelimesi yazdırılır.

"repeat" döngüsü.
Kod:
a=10
repeat
    print "Merhaba"
    a=a+1
until a>20
"repeat" döngüsü "while" döngüsüne benzer. Ama koşul döngünün sonunda denetlenir.

"do" döngüsü.
Kod:
do
  print "Bir kelime gir"
  if a$="d" then
    end
   endif
   input a$
loop
"do" döngüsü koşulsuz bir döngü. Sonsuza dek, veya cihazınız ısınıp kilitlenene kadar işlemi tekrarlar. Siz kapatıp durdurmazsanır durmaz. Koşulu siz döngünün gövdesine eklemelisiniz. Yukarıdaki örnekte siz küçük "d" tuşuna
basana kadar sizden bir kelime girmenizi isteyecek. "ddd" vey "d" ile başlayan bir kelimeyi kabul etmez. "d" olacak
illâ.

"for" döngüsünü görmüştük.
Kod:
for a = 1 to 100 step 5
    print a
next a
"for" döngüsüne ek olarak "step" komutu ve parametre olarak atlayarak tekrarlamasını da söyleyebiliriz.
Yukarıdaki örnek 1 den 100'e kadar beşer yazdıracak. Tersi de mümkün. 100 den geriye de beşer azaltarak saydırabilirsiz.
Kod:
for a = 100 to 1 step -5
    print a
next a

Bu durumda atlama koşulu önüne eksi (-) eklememiz gerekecek. Ve tabi mantık olarak yüksek değeri öne almamız
gerekiyor.
Sayfalar: 1 2