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.
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.