FreeBASIC, programlamaya QBASIC veya QuickBASIC ile başlayan programcıların kolayca DOS/Konsol programları yazmaya başlayabilecekleri bir BASIC türevidir. FreeBASIC ile GTK kütüphanesi kullanarak grafik kullanıcı arayüzleri de oluşturabilirsiniz.

Önemli uyarı: FreeBASIC GPL lisansı ile dağıtılmaktadır. Burada verilen bilgilerin telif hakkı ise berr.in’e aittir. Kaynak göstererek yayınlayabilirsiniz.

LINUX’ta FreeBASIC kurulumu:
FreeBASIC’in kendisi ve FreeBASIC ile yazılan programlar libc, libm, libpthread, libdl ve libncurses kütüphanelerini kullanmaktadır ve bu kütüphaneler çoğunlukla Linux dağıtımlarında hazır bulunmaktadır. Yazdığınız programa göre başka bazı kütüphaneler de kullanılabilir. Bazı Linux dağıtımlarında kuruluma başlarken belirli kategorilerde yazılımlar yüklemek için seçenekler bulunmaktadır. Eğer geliştirme seçeneğini işaretleyerek kurulum yapmış iseniz FreeBASIC’in bağımlılıkları zaten yüklenmiş olabilir. Derleme işlemini konsolda yaparken eksik olan kütüphanelerden dolayı hata iletisi alırsanız bu kütüphaneleri kurup derleme işlemini tekrar yapabilirsiniz.

FreeBASIC’in Linux versiyonu .tar.gz uzantılı sıkıştırılmış dosya olarak dağıtılmaktadır. Bu dosyayı indirip açtıktan sonra dosyadan çıkan dizine girip terminalde ./install.sh -i yazarak kurulum için hazırlanmış kabuk betiğini çalıştırarak FreeBASIC’i derleme yapmaya hazır hale getirebilirsiniz.

Program Derleme
merhaba.bas adında bir dosya oluşturun. Dosyayı herhangi bir metin düzenleme programı ile açın ve aşağıdaki satırı yazıp kaydedin:
Print “Merhaba dünya!”

Konsolda fbc merhaba.bas yazarak enter tuşuna basın. Herhangi bir hata mesajı almazsanız ./merhaba yazıp enter tuşuna bastığınızda konsolda Merhaba dünya biçiminde bir çıktı alabilirsiniz.

Hata Denetimi
deneme.bas adında bir dosya oluşturun ve bu kez aşağıdaki satırları yazıp kaydedin:

for x=1 to 10
print x
next x

Konsolda fbc deneme.bas yazarak enter tuşuna bastığınızda aşağıdaki hata iletisini görebilirsiniz:
deneme.bas(1) error 40: Variable not declared, x in ‘for x=1 to 10’

Bu hata anlayabileceğiniz üzere programda kullanılan x değişkeninin tanımlanmadığını bildiriyor. Hatayı gidermek için 1. satıra şu değişken tanımını ekleyebilirsiniz:
Dim x as integer

Tekrar derleme işlemi yapıp ./deneme yazarak enter tuşuna bastığınızda konsolda aşağıdaki gibi bir çıktı alabilirsiniz:
1
2
3
4
5
6
7
8
9
10

Bu hatayı gidermenin diğer bir yöntemi de -lang derleyici seçeneğini kullanmaktır. Derleme yaparken konsolda fbc -lang qb deneme.bas yazarsanız QuickBASIC’te olduğu gibi Dim x as integer satırı olmadan da programınız derlenip çalıştırılabilir. Eğer elinizde hazır QuickBASIC kodları varsa onları -lang db seçeneği ile üzerinde değişiklik yapmadan derleyebilmeniz mümkün olabilir ancak bu bütün programlar için geçerli olmayabilir.

String İşlemleri
Aşağıda örnek bir Linux kabuk programının kodları verilmektedir. Programda tanımlanmış olan komutlar:
son kabuktan çık
esl ekranı sil
yaz ekrana string yaz
saat ekrana geçerli saati yaz
tarih ekrana geçerli tarihi yaz
sil diskten bir dosya sil

Programın kodu:
Print “Linux için Türkçe kabuk uygulaması”
dim as string dizin, komut, arguman
baslangic:
dizin=CURDIR + “>”
Line input dizin, komut
komut=trim(komut)
if InStr(komut, ” “)>0 then
arguman=mid(komut, InStr(komut, ” “)+1)
komut=left(komut, InStr(komut, ” “)-1)
end if
Select Case komut
Case “son”
Print
End
Case “esl”
Cls
Case “yaz”
Print arguman
Case “saat”
Print Time
Case “tarih”
Print Date
Case “sil”
dim sonuc as integer = Kill(arguman)
if sonuc <> 0 then print arguman & ” dosyası silinemedi!”
Case Else
Print “komut yok”
End Select
Goto baslangic

Programı derleyip çalıştırdığımızda şöyle bir sonuç alabiliriz:

[berrin@localhost FreeBasic]$ ./kabuk
Linux için Türkçe kabuk uygulaması
/home/berrin/FreeBasic>merhaba
komut yok
/home/berrin/FreeBasic>yaz merhaba
merhaba
/home/berrin/FreeBasic>saat
03:43:04
/home/berrin/FreeBasic>tarih
05-29-2013
/home/berrin/FreeBasic>sil berrin.txt
berrin.txt dosyası silinemedi!
/home/berrin/FreeBasic>sil sil.txt
/home/berrin/FreeBasic>son

[berrin@localhost FreeBasic]$

1. satırda Print “Linux için Türkçe kabuk uygulaması” program ilk çalıştığında program hakkında bilgi vermek üzere ekrana bir string yazmak için kullanılıyor.

2. satırda dim as string dizin, komut, arguman ile 3 ayrı string değişken tek seferde tanımlanmış oluyor.

3. satırda baslangic: etiketi yazılarak programın her komuttan sonra buraya dönmesi sağlanıyor.

4. satırda dizin=CURDIR + “>” ile kabuk programında komutların yazıldığı satırların önüne geçerli dizin ve büyüktür işareti eklenmek üzere tanımlanıyor. Burada string tipinde bilgi döndüren CURDIR fonksiyonundan dönen string ile > işareti + işaretiyle birleştiriliyor.

5. satırda Line input dizin, komut ile kullanıcıdan komut girişi alınıyor. Yani 4. satıroa tanımlanmış olan geçerli dizin> yazısı ile başlayan satıra kullanıcı komut yazıp enter tuşuna bastığında yazdığı string komut değişkenine aktarılmış oluyor.

6. satırda komut=trim(komut) ile kullanıcının girdiği komutun başında ve sonunda bulunabilecek olan boşluk karakterleri siliniyor. Bu yapılmadığı zaman yazılan komutlar programda tanımlanan komutlarla eşleşmeyebilir. Örneğin “yaz” ile solunda boşluk bulunan ” yaz” birbirine eşit değildir.

7., 8., 9. ve 10. satırlarda:
if InStr(komut, ” “)>0 then
arguman=mid(komut, InStr(komut, ” “)+1)
komut=left(komut, InStr(komut, ” “)-1)
end if
kodları ile girilen komutta boşluk var ise boşluktan sonraki kısım argüman, boşluğa kadar olan kısım da komut olarak ayrılmış oluyor.

Bundan sonraki kısımda Select Case … End Select kullanılarak komutlar tanımlanmış oluyor. Yani yazılan komut case ile kıyaslanan komutla aynı ise alttaki satırdan itibaren yazılan kodlar çalışıyor.