BÖLÜM 1: Program'lamaya yeni başlayan veya başlamak isteyenler için Kod ve program örnekleri
Çalıştırmak, denemek veya yeniden düzenlemek istediğiniz örnekleri, Metin düzenleyici ile yazın ve bir Klasörün içine, dosyanıza bir isim vererek kayıt edin. Kayıt ettiğiniz dosyanın üzerine sağ tıklayın ve özelliklerden, erişim haklarına girin ve "Bir program gibi çalışmasına izin ver" seçeneğinin kutucuğunu işaretleyin. Artık dosyanızı tıkladığınızda, açılan bir sorgu penceresi size dosyayı "Uçbirimden çalıştır", "Aç", "İptal" ve "Çalıştır" seçeneklerini sunacaktır. Bu programlar "Uçbirimden çalıştır" ile bir program gibi çalışacaktır. İsterseniz "Aç" seçeneği ile Metin düzenleyici ile açarak, programların kod'larını değiştirebilir veya inceleyebilirsiniz. Programların çalışabilmesi için BywaterBasic derleyicisini önceden kurmuş olmanız gerekir.
Bunun için Uçbirimden (İnternete bağlı iken)
sudo apt-get install bwbasic
komutunu girerek ve şifreniz ile kurulumu onaylayarak, kurulumu en kısa yoldan gerçekleştirebilirsiniz. BywaterBasic bir dahili editör''e sahip ve programları doğrudan Terminal'de yazmanızada olanak tanıyor. Tek satırlık kodlar komut gibi çalışır ve anında uygulanır. Çok satırlı programlar yazabilmeniz için, satırları numaralandırmanız gerekiyor. Bu durumda satırlar hafızada saklanıyor ve tekrar çalıştırılabiliyor veya dosya olarak kayıt edilebiliyor. Satır numaralı programlarınızı çalıştırabilmek için, satır numarası taşımayan yeni bir satıra "RUN" komutunu girmelisiniz. Programı kayıt etmek için, yine numara taşımayan yeni bir satıra "SAVE "program_adı.bas" " (program'ını adı çift tırnak içinde) girmelisiniz. Kısa programlar için pratik, ancak 30-40 satır üstü programlar için veya düzeltmeler için yeterli derecede pratik olmadığından, Metin düzenleyici ile devam etmenizi öneririm.
ALIŞTIRMALAR
Alıştırma amaçlı Kod örneklerini BywaterBasic İnteraktif Konsol'undan yazarak deneyebilirsiniz. Kod'ların daha anlaşılabilir ve seçilebilir olmaları için, farklı renklendirmeler kullandım. Sizin yazdıklarınız Siyah, Beyaz olarak görünecektir.
Kullanılan renklerin anlamları:
Mavi : Basic tanımları (Kod'lar), noktalama işaretleri ve derleyici komutları
Yeşil : Değişkenler
Siyah : Kullanıcının göreceği ifadeler
Turuncu : Hatırlatmalar (Program akışı içinde görünmeyen ifadeler)
rem Bu satır, Program içinde görünmez
print "Merhaba, benim adım Mustafa Sandal"
print "Merhaba, " ; "benim " ; "adım " ; "Tarkan " ; "Tevetoğlu "
print "Merhaba, " , "benim " ; "adım " ; "Jüneyt " ; "Arkın " ;
print "Merhaba, " , "benim " , "adım " , "Ali " , "Şen"
a$ = "Merhaba,"
b$ = " benim"
c$ = " adım"
d$ = " Pembe"
e$ = " Panter"
print a$ + b$ + c$ + d$ + e$[/colo]
a$ = "Merhaba,"
b$ = " benim"
c$ = " adım"
d$ = "Tanju"
e$ = " Çolak"
print a$ ; b$ ; c$ ; d$ ; e$
a$ = "Elma "
b$ = "Armut "
c$ = "Erik "
d$ = "Kiraz "
e$ = "Muşmula"
print "Bunlar bizim memleketimizde bilinen Meyveler : " ; a$ ; b$ ; c$ ; d$ ; e$ ;
a$ = "Muz "
A$ = "Kivi"
print a$ ; A$
a$ = "Muz "
A$ = "Kivi"
print a$ ; A$ ;
a$ = "Muz "
A$ = "Kivi"
print a$ " ve " A$
a$ = " Muz"
b$ = " Kivi"
c$ = " Ananas"
print "Bunlarda ithal Meyveler : " + a$ + b$ + c$
print 5 + 6
print 12 - 3
print 24 / 6
print 6 * 5
a = 2
b = 5
c = a + b
print c
U = 12
G = 8
MetreKare = U * G
print "Metrekare = " ; MetreKare ; " m2"
a$ = " 2 "
b$ = " 67 "
c$ = a$ + b$
print c$
a$ = " 2 "
b$ = " 67 "
c$ = a$ + " " + b$
print time$
print "Elma" : "Armut" : "Kiraz"
print " " ; date$
ÇOK SATIRLI PROGRAM'LAR ve DERLEYİCİ KOMUTLARI
Birden fazla, Basic tanımı içeren satırlardan oluşan program'lar yazmak istediğinizde, satırların başına satır numaraları eklemelisiniz. Numaralandırılmış satırlar hafızada saklanırlar ve komut beklerler. Son satıra, numaralandırmadan girilen bir derleyici komutu ile istenilen işlem başlar. Numaralandırılmış satırlar, silinene, üzerine yazılana veya Basic derleyicisinin ekranı kapatılana kadar hafızada saklı kalırlar.
10 print "İki Ekmek aldım"
20 print "Gidiyorum Ev'e
30 print "Biri küçük, biri büyük
40 print "İki Ekmek aldım"
Programı çalıştırabilmek için bir derleyici komutu girmelisiniz. Derleyici komutları bir Basic tanımı (Kod) değiller ve program içinde kullanıldığında genel olarak hata verirler.
run
Komutu ile hafızadaki program'larınızı çalıştırabilirsiniz. Program'larınıza çalıştırdıktan sonra olsa bile, halâ hafızada saklı olduklarından dolayı, yeni bir satır veya yeni satırlar ekleyebilirsiniz.
50 print "Ev'im çok uzakta ve ben'de yorgunum"
run
Program'ınızı yeniden çalıştırdığınızda, sonradan eklediğiniz kod satırının program'ınıza dahil edildiğini göreceksiniz. Program'ınızı yazarken bir satırı unutmuş olduğunuzu fark edecek olursanız, veya bir ilave kod satırı eklemenin program'ınızın kullanışlılığını artırabileceğini düşünüyorsanız, sonradan program'ınızın herhangi bir aşamasında veya sonunda bile olsa, yeni bir satırı, bir önceki ve bir sonraki satır numarası arasında numaralandırarak ekleyebilirsiniz.
15 print "Bisikletim ile"
run
Bir kod satırı üzerinde sonradan bir değişiklik veya düzeltme yapmanız gerektiğinde, aynı satır numarası ile yeni satırı düzeltilmiş olarak yamak yeterlidir. Program'ınızda aynı satır numarası ile bir den fazla kod satırı bulunuyorsa, derleyici en son yazılmış olanı okur ve diğerlerini yok sayar.
10 print "İki tane Ekmek aldım"
run
Derleyici numaralandırılmış satırlar kullanıldığında, kod satırlarını sırasına göre değil, satır numarası sırasına göre çalıştırır ve sonradan eklenen kodlar, proram'ınızda çalıştırılmak istediğiniz yerde çalışırlar. Bunun için genel olarak ondalık sırasında satırlar numaralandırılır. Siz isterseniz beşer veya birer sıralamasında satır numaraları tercih edebilirsiniz. 10 numaralı satır ile 20 numaralı satır arasına, gerekirse 9 yeni satır daha sonradan ilave edebilirsiniz. Uzun program'lar yazarken bu imkân çok yararlı olabilir.
BywaterBasic derleyicisi Metin düzenleyici ile yazılan program'larda, Metin düzenleyicinin dahili satır numaralarını adresleyemiyor. Çünkü program kayıt edildiğinde, satır numalarıda birlikte kayıt edilmiyor. Ama Metin düzenleyici ile yazılan program'lardada, gerek duyduğunuzda, satır numaraları ekleyebilirsiniz. Normalinde satır numaralarına gerek yok, ancak bazı durumlarda, özellikle kısa programlarda daha pratik olabiliyorlar. Hangi düzende satırlarınızı numaralandırırsanız numaralandırın, sonuç olarak hiç fark etmiyor. Son satır numarası 65 bin küsürü geçemiyor. Kısacası, bir tek dosyadan olan program en fazla 65000 satırdan olabiliyor.
Program'ınız istediğiniz gibi çalışıyor ve artık yaptığınız son düzenlemeler ile birlikte kayıt etmek istediğinizde
save "program_adı.bas"
komutu ile kayıt edebilirsiniz. Program disk'e kayıt edildikten sonrada halâ derleyicinin hafızasında bulunur. Aynı satır numaralarını kullanarak üstünede yazabilirsiniz, hafızayı yeni bir program için temizleyebilirsinizde.
new
Komutu, hafızayı yeni bir program için temizler. Hem hafızayı ve hem Basic terminalini (Konsol ekranını) temizlemek isterseniz
clear screen
komutu daha uygun olur. Disk'te (home dizininizde) kayıtlı bir program'ı çalıştırmak istediğinizde
run "program_adı.bas"
komutunu kullanabilirsiniz. Program'daki kod satırlarını Basic terminalinde okumak istediğinizde
list
komutunu kullanın. Ve sadece tek bir satırı görmek istediğinizde, bu satır 15 numaralı satır olsun
list 15
komutu size sadece seçilen satırı gösterekcektir. Basic terminalinden Uçbirim terminaline geçmek istediğinizde
system
komutunu kullanın. Uçbirimden doğrudan bir program'ı BywaterBasic ile başlatmak için
bwbasic program_adı.bas
komutunu kullanabilirsiniz. Bu bir Basic derleyicisi komutu değildir ve çift tırnaklar burada kullanılmıyor
HATIRLATMALAR (AÇIKLAMALAR)
10 print "Lütfen soruları cevaplandırın"
20 print
30 input "Bir ampul'ü andıran bir meyve: " a$
40 rem $ ile işaretlenen değişkenler bir ismi veya ifadeyi temsil eder
50 input "Ülkemizin en iri hayvanı: " b$
60 rem $ ile temsil edilen rakamlarda değer değil, isimdir ve çift tırnak içinde yazılmalıdır
70 print a$ + "'un iyisini " + b$ + "'lar yermiş."
10 rem Program adı : topla.bas
20 rem Açıklama : Bu program hesap yapmasını biliyor (sadece toplama yapabiliyor)
30 rem Geliştiren : Kendim geliştirdim
40 input " Birinci rakam : " a rem Basic derleyicisi veri türlerini otomatik olarak ayarlar
50 input " İkinci rakam : " b
60 print a; " + "; b; " = "; a + b
70 goto 10 rem Program başa dönecektir
KENDİNİ TEKRARLAYAN İŞLEMLER ( DÖNGÜLER )
10 print "Merhaba"
20 rem Bu program sonsuza kadar kendisini tekrarlar
30 goto 10
10 do
20 print "Koş Ali koş, kim tutar seni."
30 rem Programı durdurmak için, ctrl tuşunu basılı tutun ve c tuşuna basın
40 rem Basic'ten çıkmak için, ctrl tuşunu basılı tutun ve z tuşuna basın
50 loop
10 for i = 1 to 10
20 print i
30 next
10 for i = 12 to 2 step -2
20 print i;
30 next
10 while i < 25
20 i = i + 1
30 print i
40 wend
KOŞULLU İŞLEMLER
10 print " Aklımda bir rakam var, 1 ve 100 arası. Lütfen tahmin ediniz"
20 input a
30 if a = 12 then goto 60
40 print " Bilemediniz, lütfen tekrar deneyiniz"
50 goto 10
60 print " Bildiniz ve bir aferin kazandınız."
10 print " Lütfen bir seçim yapınız."
20 print "a"
30 print "b"
40 print "c"
50 input a$
60 if a$ = "a" then
70 print " a seçtiniz"
80 elseif a$ = "b"
90 print " b seçtiniz"
100 elseif a$ = "c" then
110 print " c seçtiniz"
120 else
130 print " Hatalı seçim.
140 end if
150 rem Çok satırlı "if" işlemlerinin nerede bittiğini
160 rem derleyicinin anlayabilmesi için, her "if" satırı başına,
170 rem bir "end if" satırını, "if" bölümünün sonuna eklemelisiniz
180 print " " rem boş satır
190 print " Çok iyi bir seçim yaptınız. Tebrikler."
RASTGELE SAYILAR
10 print rnd
20 rem 0 ve 1 arası rastgele bir küsüratlı rakam yazdırır
10 print rnd + 1
20 rem 1 ve 2 arası rastgele bir küsüratlı rakam yazdırır
10 print rnd + 10
20 rem 10 ve 11 arası rastgle bir küsüratlı rakam yazdırır
10 print rnd + 100
20 rem 100 ve 101 arası rastgele bir küsüratlı rakam yazdırır
10 print rnd * 10
20 rem 0 ile 10 arası rastgele bir küsüratlı rakam yazdırır
10 print rnd * 100
20 rem 0 ile 100 arası rastgele bir küsüratlı rakam yazdırır
10 print int(rnd * 100)
20 rem 0 ile 100 arası rastgele bir tamsayı yazdırır
10 print int( 10 + rnd * 15 )
20 rem 10 ile ( + 15 ) 25 arası rastgele bir tamsayı yazdırır
10 print " Lütfen aklımdaki rakamı tahmin ediniz."
20 print " 1 ve 100 arasında bir sayı seçtim."
30 a = int(rnd * 100)
40 input b
45 rem $ kullanılmayan değişkenler için yazı karakterleri kullanamayacağınızı unutmayın.
50 if b < a then
60 print " daha yüksek bir sayı"
70 goto 40
80 elseif b > a then
90 print " daha küşük bir sayı"
100 goto 40
110 elseif b = a then
120 print " doğru sayıyı buldunuz"
130 end if
DOSYA İŞLEME
10 open "merhaba.txt" for output as 1
20 rem merhaba.txt isimli ve yazma iziniyle yeni bir dosya açıyoruz ve dosya numarası olarak 1 atıyoruz
30 write #1, "Merhaba, benim adım Ekrem Şentürk."
40 write #1, "Sizin ile tanışabilirmiyiz?"
50 rem 1 ile numaralandırdığımız merhaba.txt dosyasına iki satır ekledik
60 close #1
70 rem dosyayı kapattık
10 open "merhaba.txt" for input as 1
20 rem var olan bir dosyayı okuma izini ile açtık
30 line input #1, a$
40 line input #1, b$
50 rem açtığımız dosyadan iki satır hafızaya aldık ve değişkenlere atadık
60 print a$
70 print b$
80 rem hafızaya kayıt edilen iki satırın metinlerini ekrana yazdırdık
90 close #1
100 rem dosyayı kapattık.
ÇAĞRILABİLİR İŞLEMLER
Program'ınız içinde bir işlemi sık olarak kullanıyorsanız, her seferinde bu işlemin kod'ların yeniden yazmak yerine, kod'ları bir program içi alt program olarak, program'ınızın sonuna ekleyip isimlendirdikten sonra GOSUB veya CALL ile çağırabilirsiniz. Satır numaraları kullandığınız program'larınızda buna benzer bir şekilde GOTO ile de program'mınızn içinde ileri ve geri geçişler yapabiliyorsunuz. Ancak yüzlerce satırdan oluşan program'larınızda, bir süre sonra kendiniz program'ınızın nasıl işlediğini anlayamaz duruma gelebilirsiniz. İç içe giren bu tür işlemler için Spagetti code deniyor. GOSUB ve CALL tanımları ile ulaşılabilen Subroutine'ler, program'ınıza düzen getirir. Bir kaç basit örnek ile nasıl işlediklerini anlatmaya çalışayım.
10 input "ilk rakam : " a
20 input "ikinci rakam : " b
30 gosub hesapla
40 print "hesap doğru ise devam edin"
50 input a$
60 goto 10
70 hesapla: rem bu satıra dikkat edin
80 print a ; " + " ; b ; " = " ; a + b
90 return
10 input "ilk rakam : " a
20 input "ikinci rakam : " b
30 call hesapla rem bu satır değişti
40 print "hesap doğru ise devam edin" rem gereksiz kaldı
50 input a$ rem gereksiz kaldı
60 goto 10 rem gereksiz kaldı
70 hesapla:
80 print a ; " + " ; b ; " = " ; a + b
90 end rem bu satır değişti
10 input "ilk rakam :" a
20 input "ikinci rakam:" b
30 call hesapla
70 hesapla:
80 print a ; " + " ; b ; " = " ; a + b
85 goto 10 rem bu satır ilave edildi
90 end
VERİ OKUMA
10 read a$, b$, c$
20 read d$, e$, f$
30 rem
40 print a$, b$, c$
50 print d$, e$, f$
60 rem
70 data "Mehmet", "Ali", "Mustafa"
80 data "Ayşe", "Fatma", "Hatice"
10 read a$, b$, c$
20 read d$, e$, f$
30 rem
40 print a$ ; " " ; d$
50 print b$ ; " " ; f$
60 print c$ ; " " ; e$
70 print d$ ; " ve "; f$
80 print rem
90 data "Merhaba", "Naber", "Nasılsın"
95 data "Ayşe", "Ali", "Mustafa"
ÖRNEKLER
1 : takdim.bas
#!/usr/bin/bwbasic
10 clear screen
11 cls
12 print
13 print
14 print
20 print " Merhaba, benim adım Ekrem Şentürk"
25 sleep 6
30 end
35 system
40 exit
2 : saatkaç.bas
#!/usr/bin/env bwbasic
clear screen
cls
print
print
print " saatkaç.bas programı: tarih ve saat'i gösterir"
print
print
print
print " Tarih:(ay-gün-yıl) ",date$
print " Saat : ",time$
print
print
print
print
print
input " Çıkmak için herhagi bir tuşa basınız: "a$
system
exit
3 : sorgulama.bas
#!/usr/bin/env bwbasic
rem Dosya adı: sorgulama.bas
clear screen
print
print
input " Lütfen adınızı ve soyadınızı kayıt edin: " a$;
clear a$
print
print
print
input " Lütfen doğum tarihinizi yazın (Gün-Ay-Yıl): " b$;
clear b$
print
print
print
print " Merhaba ";a$
print
print " Doğum tarihiniz: ";b$;" Doğurumudur ?"
print
print
input " ";c$
print " Teşekkürler, Hoşçakalın!"
sleep 4
end
quit
exit
4 : merhaba.bas
#!/usr/bin/env bwbasic
clear screen
cls
100 print
110 print
120 print
130 print
140 print
150 print
160 print
170 print
180 print
190 print " * * * * * * * * * * * * * * * * "
200 print " * * * * * * * * * * * * * * * "
210 print " * * * * * * * * * * * * * * * * * * * * "
220 print " * * * * * * * * * * * * * * * * * "
230 print " * * * * * * * * * * * * * * * * * "
235 print
240 print " ***********************************************************************"
250 print " ***********************************************************************"
255 sleep 0.8
clear screen
cls
260 goto 290
290 print " "
300 sleep 0.4
clear screen
cls
315 gosub 100
5 : bonjour.bas
#!/usr/bin/env bwbasic
clear screen
cls
do
call bonjour
call temizle
loop
sub bonjour()
print
print
print
print
print
print
print
print
print
print " # # # # # # # # # # # # # # # # # "
print " # # # # # # # # # # # # # # "
print " # # # # # # # # # # # # # # # # "
print " # # # # # # # # # # # # # # "
print " # # # # # # # # # # # # # # # "
print
print " ***********************************************************************"
print " ***********************************************************************"
print
print
print
print
print
print
print
sleep 1
return
end sub
sub temizle()
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
sleep 1
return
end sub
end
6 : gerisayım.bas
#!/usr/bin/env bwbasic
rem Dosya adı :gerisayım.bas
rem Yazar :Ekrem Şentürk
rem Yazılım :BywaterBasic sürüm 2.20
rem Son düzenleme :27-Aralık-2011
clear screen
cls
print
print
print
print
print " Geri sayım başlamıştır"
print " *************************"
print
print " Bu program on saniye sonra kendinden kapanacak"
print " **************************************************"
sleep 2
print
print
for i = 10 to 0 step -1
print " "; i
sleep 1
clear
next
system
exit
7 : countdown.bas
#!/usr/bin/env bwbasic
rem Dosya adı :coundown.bas
rem Yazar :Ekrem Şentürk
rem Yazılım :BywaterBasic sürüm 2.20
rem Son düzenleme :30-Aralık-2011
clear screen
cls
print
print
print
print
print " Geri sayım başlamıştır"
print " *************************"
print
print " Bu program 10 saniye sonra kendinden kapanacak"
print " **************************************************"
sleep 2
print
print
for i = 10 to 0 step -1
print " "; i
sleep 1
clear i
next
print
print
print
print
print " Geri sayım başlamıştır"
print " *************************"
print
print " Bu program 10 saniye sonra kendinden kapanacak"
print " **************************************************"
print
next
system
exit
8 : uygulama.bas
#!/usr/bin/env bwbasic
clear screen
new
1 rem Dosya adı : uygulama.bas
2 rem Yazar : Ekrem Şentürk
3 rem Yazılım : BywaterBasic sürüm 2.20
4 rem Son düznleme : 29 Aralık 2011
5 print
6 print
10 print " Merhaba Ziyaretçi"
15 print " *******************"
20 print
30 print " Lütfen biraz sonra seçiminizi yapınız ve devam ediniz"
32 print " *****************************************************************************"
35 sleep 6
36 clear screen
37 new
38 print
39 print
40 print
45 print " *****************************************************************************"
50 print " KAYITLI KULLANICI İÇİN = K YENİ KULLANICI İÇİN = Y "
55 print " *****************************************************************************"
56 input " " a$
60 if a$="K" or a$="k" then
65 goto 200
70 elseif a$="Y" or a$="y" then
75 goto 360
80 else
90 print " Hatalı giriş yaptınız"
95 end if
100 sleep 5.0
105 end
110 goto 50
200 print
205 input " lütfen kullanıcı adınızı giriniz: " b$
210 if b$="Yakamoz" then
215 goto 250
220 elseif b$ <> "Yakamoz" then
225 print " Hatalı giriş yaptınız."
226 print " Doğru kullanıcı adınız ' Yakamoz ' olacaktı."
240 goto 200
245 end if
250 print
255 input " Lütfen şifrenizi giriniz = " c$
260 if c$ = "1234" then
265 goto 290
270 elseif c$ <> "1234" then
275 print " Yanlış şifre girdiniz, doğru şifre '1234' olacaktı."
280 goto 250
290 end if
295 clear screen
296 cls
297 print
298 print
299 print
300 print
305 print " Tebrikler, uygulamaya başarıyla giriş yaptınız. "
310 print " ************************************************* "
315 print
320 input " Devam etmek için [D], ve iptal etmek için [İ] giriniz: " d$
330 if d$="D" or d$="d" then
335 goto 600
340 else
342 goto 700
345 end if
350 end
360 clear screen
370 cls
380 print
385 print
390 print
395 print
400 print
405 print
405 print " Bu uygulama için artık yeni üyelik kabul edilmiyor."
410 sleep 5.0
420 end
430 goto 700
600 clear screen
601 cls
602 print
603 print
604 print
605 print " Sayın kullanıcı. Bu uygulama halâ geliştirme aşamasındadır "
606 print
610 print " iki de bir, zart zurt buraya giriş yapmayınız lütfen. "
630 sleep 7.0
700 clear screen
710 cls
715 print
720 print
725 print
730 print
735 print
740 print
745 print
750 print
755 print
756 print " ****************** "
760 print " * Hoşçakalın/Bye * "
765 print " ****************** "
770 sleep 4
1000 end
1010 system
9 : hesapmakinam.bas
#!/usr/bin/env bwbasic
clear screen
cls
30 rem Dosya adı : hesapmakinam.bas
40 rem Yazar : Ekrem Şentürk
50 rem Yazılım : BywaterBasic sürüm 2.20
60 rem Son düzenleme : 29 Aralık 2011
100 input "Rakam gir: " a
110 input "Operatör : " o$
120 input "Rakam gir: " b
200 if o$="+" then
210 c=a+b
220 elseif o$="-" then
230 c=a-b
240 elseif o$="x" or o$="X" then
250 c=a*b
260 elseif o$="/" then
270 c=a/b
280 elseif o$="=" then
290 goto 600
300 else
305 print
310 print "Hatalı bir giriş yaptınız, lütfen tekrar yazınız"
320 sleep 4.0
330 return
340 end if
390 input "Operatör : " o$
400 if o$<>"=" then
410 a=c
420 goto 120
540 end if
600 print c
610 end
10: sayı-tablosu.bas
#!/usr/bin/env bwbasic
clear screen
cls
dim a(2)
i = 1
i = i + i
let i = a(1)
j = 1
j = j + j
let j = a(2)
for i = 0 to 20 step 1
for j = 0 to 26 step 1
print j;
next
print ":";i
next
11: yıldız-tablosu.bas
#!/usr/bin/env bwbasic
clear screen
cls
dim a(2)
i = 1
i = i + i
let i = a(1)
a(1) = a$
a$ = "#"
j = 1
j = j + j
let j = a(2)
a(2) = b$
b$ = "*"
for i = 0 to 20 step 1
for j = 0 to 70 step 1
print b$;
next
print a$
next
12: çarpım-tablosu.bas
#!/usr/bin/bwbasic
clear screen
cls
print
print
dim a(9,9)
a(1) = 1
a(2) = 1
for i = 1 to 10
a(1) = i
for j = 1 to 10
a(2) = j * i
print " ";a(2);
next j
print " = x";a(1)
print
next i
print
print
end
13: sayısallotto.bas
#!/usr/bin/env bwbasic
rem Sayısal Lotto için tahmin programı
rem Geliştiren : Ekrem Şentürk
rem Son düzenleme: 09-Nisan-2012
rem Rakamlar bazen çift çıkabilir
clear screen
print
print
print
print
print
print tab(20);"Sayısal Lotto için haftanın tahmini"
print
print " Bu program sizi şans oyunlarına teşvik edebilir. Devam etmek istermisiniz?"
print
input " Devam için :D Çıkmak için :C "a$
if a$ = "D" or a$ = "d" then
gosub sayısal
end
elseif a$ = "C" or a$ = "c" then
print
print
print
print tab(20);"Programdan ayrılmayı seçtiniz"
sleep 3
end
end if
system
exit
end
sayısal:
clear screen
print
print
print
print " Bu haftanın sayısal lotto tahminleri:"
print
randomize timer
for a = 1 to 6
print a;". rakam = ";
for b = 1 to 48
next
print int(1 + rnd(a) * b)
next
print
print
print " Dikkat! bazı rakamlar çift çıkabilir!"
print
print " Sayısal lotto kupon'una aynı rakamı iki kez giremezsiniz."
print
gosub tekrarla
return
tekrarla:
print
print
print
input "Bir kolon daha oynamak istermisiniz E/H"t$
if t$ = "H" or t$ = "h" then
print " "
print "Bol şans"
system
exit
end
elseif t$ = "E" or t$ = "e" then
gosub sayısal
end if
return
14: editör.bas
#!/usr/bin/env bwbasic
rem Dosya adı : editör.bas
rem Son düzenleme : 12 Nisan 2012
rem Düzenleyen : Ekrem Şentürk
clear screen
print
print
print
print " Yeni bir belge yazmak için, bir isim vererek, yeni bir dosya açın"
print
print
input " Dosya adı :" a$
open a$+".txt" for output as 1
print
print " ";a$;".txt adındaki dosyanızı işlem sonunda Kayıt etmek için :ctrl+d"
print
do
line input b$
write #1, b$
loop
15: telefonrehberi.bas
#!/usr/bin/env bwbasic
rem **********************************************************************
rem Dosya adı :telefonrehberi.bas
rem Geliştiren :Ekrem Şentürk
rem Son düzenleme :21 Nisan 2012
rem Açıklama :Kullanımı biraz zahmetli bir Telefon rehberi
rem **********************************************************************
rem * ********** Kullanım klavuzu ********* *
rem * *
rem * Telefon rehberine yeni kişiler ekleyebilmek için, boş DATA satır- *
rem * larını doldurmalısınız. Toplam kişi sayısı 10 kişiyi aşacak olursa,*
rem * yeni bir DATA satırı açıp, tüm diğer DATA satırlarınada, 10 kişiden*
rem * sonra ilave edilen kişi sayısı kadar "" (boşluk) eklemek ve *
rem * "for t = 1 to 10" satırındaki "10" rakamını, toplam kayıtlı kişi *
rem * sayısı kadar yükseltmeniz gerekecek. *
rem * *
rem * ****************************************** *
clear screen
print
print tab(28);"Telefon Defteri"
print tab(28);"***************"
print tab(8);"Yeni bir kişi ekleyebilmek için tüm dosyayı yeniden işlemelisiniz"
print " ******************************************************************************"
print " Nr "; " İsim ";" Telefon ";" Adres "
print " ------------------------------------------------------------------------------"
for t = 1 to 10
print t;
read a$,b$,c$,d$,e$,f$,g$,h$,i$,j$
print a$+b$+c$+d$+e$+f$+g$+h$+i$+j$
next t
data " Ayşe "," 0216 1234567 "," Kadıköy, İstanbul ","","","","","","",""
data " Fatma "," 0212 1234567 "," Yeşilköy, İstanbul","","","","","","",""
data " Nuri "," 0368 1234567 "," Ayancık, Sinop","","","","","","",""
data " Hatice "," 0368 1234567 "," Gerze, Sinop","","","","","","",""
data " Mehmet "," 0368 1234567 "," Çarşamba, Samsun","","","","","","",""
data " Teyzem "," 0535 1234567 "," Ereğli, Zonguldak","","","","","","",""
data " Dayım "," 0542 1234567 "," Güzelyurt, Kıbrıs","","","","","","",""
data " "," "," ","","","","","","",""
data " "," "," ","","","","","","",""
data " "," "," ","","","","","","",""
input k$
system
exit
16: tahmin.bas
#!/usr/bin/env bwbasic
rem ********** BİLGİ BÖLÜMÜ *********
rem **********************************************************************
rem * Dosya adı : tahmin.bas *
rem * Yazar : Ekrem Şentürk *
rem * Yazılım : bwbasic sürüm 2.20 *
rem * Son düzenleme : 28 Nisan 2012 *
rem * Açıklama : Kazanılabilmesi çok zor bir tahmin oyunu *
rem **********************************************************************
rem * ********** GİRİŞ BÖLÜMÜ ********** *
clear screen
rem * * Temiz bir ekran *
print
print
print
print tab(25);"Bu Program bir tahmin oyunudur."
print
print tab(5);"Bilgisayar her seferinde, 1 ve 100 arası farklı bir rakam tutar."
print tab(5);"Siz bu rakamı tahmin etmeye çalışacaksınız. Toplam 10 hakkınız var."
rem * * Kullanıcı için bilgilendirme *
print
print
print
print tab(25);"Oynamak istermisiniz E/H"
rem * * Giriş seçenekleri *
print
print
print
input e$
rem * * Kullanıcı girişi *
if e$ = "e" or e$ = "E" then
rem * * Şartlar *
gosub oyun
rem * * Oyun'a geçiş *
elseif e$ = "h" or e$ = "H" then
rem * * Şartlar *
system
rem * * Oyun'dan çıkış *
exit
rem * * Terminal'den çıkış *
else
rem * * Şartlar *
print "Hatalı giriş"
rem * * Hatalı giriş *
run
rem * * Düzeltme (seçime dönüş) *
end if
rem * * Şartlar bölümü sonu *
rem * ********** PROGRAM GÖVDESİ ********** *
oyun:
rem * * Alt bölüm için isim *
clear screen
rem * * Temiz bir Ekran *
print
print
print
print tab(15);"Lütfen 1 ve 100 arası bir rakam seçin"
print
print
print
rem * * Kullanıcı için arayüz *
for i = 1 to 10
rem * * Oyun tekrarı *
randomize timer
rem * * Rastgele başlangıç noktası *
a = int(1 + rnd * 100)
rem * * Rastgele rakamların sınırı *
input " Tahmininiz:";b
rem * * Kullanıcı girişi *
if b = a then
rem * * Şartlar *
print tab(15);"Tebrikler, doğru tahmin ettiniz."
gosub kazandınız
rem * * Tebrik bölümüne geçiş *
elseif b <> a then
rem * * Şartlar *
print tab(15);"Yanlış tahmin ettiniz."
end if
rem * * Şartlar bölümü sonu *
print tab(15);"Doğru rakam: ";a
rem * * Kıyaslama imkânı *
print
print
next
print
print
print tab(15);"Oyun kapanıyor"
rem * * Son bildirim *
sleep 3
rem * * Bekletme *
end
rem * * Alt bölüm sonu *
rem * ********** BİRİNCİ KAPANIŞ BÖLÜMÜ ********** *
system
rem * * Oyun'dan çıkış *
exit
rem * * Terminal'den çıkış *
rem * ********** OYUN SONU BÖLÜMÜ ********** *
kazandınız:
rem * * Alt bölüm için isim *
clear screen
rem * * Temiz bir Ekran *
print
print
print
print tab(15);"Tebrikler, çok zor bir tahmin oyununu kazanabildiniz"
print
print
print
print tab(30);"Oyun kapanıyor"
rem * * Son bildirim *
print
print
print
sleep 4
rem * * Bekletme *
end
rem * * Alt bölüm sonu *
rem * ********** İKİNCİ KAPANIŞ BÖLÜMÜ ********** *
system
rem * * Oyundan çıkış *
exit
rem * * Terminal'den çıkış *
Basic tanımları hakkında bilgi edinmek için
man bwbasic
komutu ile derleyicinin kullanım klavuzuna uçbirimden erişebilirsiniz. Klavuz yaklaşık 1800 satırdan oluşuyor ve tanımlar ve derleyici komutları alfabetik olarak sıralanmış durumda. Klavuz'da hızlı ilerlemek istediğinizde ve aradığınız kod'un ortalama hangi satırlarda olduğunu tahmin edebiliyorsanız, klavye'den herhangi bir rakam girdiğinizde, örnek olarak 300 olsun, bulunduğunuz satırdan 300 satır aşağıya ilerlersiniz. Yukarıya doğru, yani geriye ilerlemek için ise benzer bir kolaylık yok.
Daha fazla örneğe ihtiyac duyuyorsanız, /usr/share/doc/bwbasic/Examples klasösöründe örnekler bulabilirsiniz. Bu klasörü Masaüstünüze kopyalarsanız, örneklere ulaşmanız daha kolay olur.
*************************************************************************************************************************************************************************************
*************************************************************************************************************************************************************************************
BÖLÜM 2: Kullanışlı Programlar
Bir program'ın kullanışlı olabilmesi için, günlük hayat'tada ihtiyac duyabileceğimiz işlemleri uygulayabilmeli ve başkaları tarafındanda anlaşılabilecek ve kullanılabilecek kadar açıklayıcı ve kolay olmalıdır. Diğer kullanıcıların bizim program'larımızı her zaman bizim öngördüğümüz şekilde kullanmayabileceğinide dikkate almalıyız. Kullanıcı bir hatalı giriş yaptığında, program hata bildirir ve kapanır. Kullanıcı bu durumu kendi hatası olarak görmez ve olayı program çöktü olarak değerlendirir. Program'mımız ne kadar açıklayıcı olursa olsun, kullanıcı bu açıklamaları mecbur kalmadıkça okumayabileceğinden dolayı önlem almalıyız ve kolay anlaşılabilir ve kısa açıklamalar kullanmalıyız. Program'ın hata bildiriminden sonra kapanmasını veya bir düzeltmeden sonra fark edilemeyen hatalı işlemler yapmaya başlamasını önleyecek tedbirler almalıyız. Ve derleyicinin bildirdiği hata raporlarını, kullanıcının anlayabileceği, kendi eklediğimiz hata bildirimlerimiz ile değiştirmeliyiz. Başkalarının program'larımızı nasıl algılayıp ve nasıl kullanabileceklerini önceden tahmin etmeye çalışıp, bu olasılıklara göre önlemlerimizi almalıyız. Bu tür tahminler için, yeni Linux kullanıcılarının veya deneyimsiz kullanıcıların yaşadıkları sorunları değerlendirebiliriz,. Büyük yazılım şirketleri, kullanıcı alışkanlıklarını ve algılamalarını araştırabilmek için her sene milyonlarca Dolar harcamalarda bulunuyorlar. Bu sebepten dolayıda deneyimsiz kullanıcıların belki bizim için çok saçma gelebilecek bazı yorum ve isteklerini dikkate almalıyız ve kendi proje'lerimizde değerlendirebilmeliyiz. İleriki zamanlarda belkide bizim için başarımızın temel kaynağı oluşturabilirler.
BİR OYUN GELİŞTİRELİM
Tahmin
*************
Heyecan verici ve sürükleyici bir Bilgisayar oyunu
#!/usr/bin/env bwbasic
rem *********************************************************************************
rem * Dosya adı : Tahmin *
rem * Program adı : Tahmin sürüm 1.0 *
rem * Yazılım : Bwbasic 2.20 *
rem * Yazar : Ekrem Şentürk *
rem * Açıklama : Oyun *
rem * Son düzenleme : 05 Mayıs 2012 *
rem *********************************************************************************
rem *********** Giriş ve tanıtım bölümü ***********
clear screen
print
print
print
print tab(20);"**********************************"
print tab(20);"* Bu Program bir tahmin oyunudur *"
print tab(20);"**********************************"
print
print tab(5);"Bilgisayar her seferinde belirli araklıkta farklı bir rakam tutar"
print tab(3);"Siz bu rakamı tahmin etmeye çalışacaksınız. Toplam 10'ar hakkınız var"
print tab(3);"**********************************************************************"
print
print
print
print tab(27);"Oynamak istermisiniz E/H"
print
print
print
input " ";e$
rem: Kullanıcı girişi
if e$ = "e" or e$ = "E" then
rem: Koşullar
gosub derece1
rem: Alt programa yönlendirme
elseif e$ = "h" or e$ = "H" then
rem: Diğer seçenek
system
rem: Kapanış seçeneği
exit
else
rem: Diğer seçenek
print "Hatalı giriş"
rem: İkaz
run
rem: Yeniden başlat
end if
rem: Koşullardan çıkış
rem ********** Alt program derece1 **********
derece1:
print
print
print
print
print
print
print
print
print
print " # # # # # # # # # # # # # # # # # ### "
print " # # # # # # # # # "
print " # # # # # # # # # # # # # # # # "
print " # # # # # # # # # "
print " # # # # # # # # # # # # # # # # ### "
print
print " *****************************************************************"
print " *****************************************************************"
print
print " OYUN BAŞLAMAK ÜZERE"
print
print
print
print
print
print
sleep 2
rem: Bekeleme süresi
gosub oyun
rem: Alt programa yönlendirme
return
rem: Alt program derece1 sonu
rem ********** Alt program oyun **********
oyun:
clear screen
print
print
print
print tab(15);"*************** DERECE 1 ***************"
print tab(15);"Lütfen <1> ve <10> arası bir rakam seçin"
print tab(15);"****************************************"
print
print
print
for i = 1 to 10
rem: Tekrarlama
print " ";i;".";
rem: Yazı biçimi
randomize timer
rem: Rastgele zamanlama
a = int(1 + rnd * 10)
rem: Rastgele seçim
input " Tahmininiz:";b
rem: kullanıcı girişi
on error gosub hatabildirimi
rem: Hata bildirimi denetimi
if b = a then
rem: Koşullar
print
print
print
print tab(20);"************************************"
print tab(20);"* Tebrikler, doğru tahmin ettiniz. *"
print tab(20);"* *************** *"
print tab(20);"* Bir sonraki aşamaya geçiyorsunuz.*"
print tab(20);"************************************"
print
print
print
sleep 4
rem: Bekleme süresi
print
gosub derece2
rem: Alt programa yönlendirme
elseif b <> a then
rem: Diğer seçenek
print
print tab(15);"Yanlış tahmin ettiniz."
end if
rem: Koşullar sonu
print tab(15);"Doğru rakam: ";a;" olacaktı"
rem: Kıyaslama imkânı
print
print
next
rem: Tekrarlama sonu
print
print
print tab(15);"Toplam 10 kez yanlış tahminde bulundunuz ve kaybettiniz"
print tab(15);"*******************************************************"
print
print
sleep 5
rem: Bekleme süresi
print
gosub kapanış_seçenekleri
rem: Alt programa yönlendirme
return
rem: Alt program oyun sonu
rem ********** Alt program derece2 **********
derece2:
print
print
print
print
print
print
print
print
print
print " # # # # # # # # # # # # # # # # # ##### "
print " # # # # # # # # # # "
print " # # # # # # # # # # # # # # # # # "
print " # # # # # # # # # # "
print " # # # # # # # # # # # # # # # # ##### "
print
print " *****************************************************************"
print " *****************************************************************"
print
print " OYUN BAŞLAMAK ÜZERE"
print
print
print
print
print
print
sleep 3
rem: Bekletme süresi
gosub oyun2
rem: Alt programa yönlendirme
return
rem: Alt program derece2 sonu
rem ********** Alt program oyun2 **********
rem *** derece2, derece1 alt programı ile küçük bir kaç fark dışında aynıdır ***
oyun2:
clear screen
print
print
print
print tab(15);"*************** DERECE 2 ****************"
print tab(15);"Lütfen <1> ve <100> arası bir rakam seçin"
print tab(15);"*****************************************"
print
print
print
for i = 1 to 10
print " ";i;".";
randomize timer
a = int(1 + rnd * 100)
input " Tahmininiz:";b
on error gosub hatabildirimi
if b = a then
print tab(15);"Tebrikler, doğru tahmin ettiniz."
gosub kazandınız
elseif b <> a then
print
print tab(15);"Yanlış tahmin ettiniz."
end if
print tab(15);"Doğru rakam: ";a;" olacaktı"
print
print
next
print
print
print tab(15);"Toplam 10 kez yanlış tahminde bulundunuz ve kaybettiniz"
print tab(15);"*******************************************************"
print
print
print tab(35);"Oyun kapanıyor"
print tab(35);"**************"
sleep 5
print
gosub kapanış_seçenekleri
rem: Alt programa yönlendirme
return
rem: Alt program oyun2 sonu
rem ********** Alt program kazandınız **********
kazandınız:
clear screen
print
print
print
print tab(15);"****************************************************"
print tab(15);"Tebrikler, çok zor bir tahmin oyununu kazanabildiniz"
print tab(15);"****************************************************"
print
print
print
print tab(30);"Oyun kapanıyor"
print tab(30);"**************"
print
print
print
sleep 5
print
gosub kapanış_seçenekleri
rem: Alt programa yönlendirme
return
rem: Alt program'ın sonu
rem ********** Alt program hatabildirimi **********
hatabildirimi:
print
print tab(15);"<Lütfen sadece rakam giriniz. hata ";err;">" :rem Hata raporu
print
sleep 2
rem: Bekletme süresi
run
rem: Yeniden başlat
return
rem: Alt program'ın sonu
rem ********** Alt program kapanış_seçenekleri **********
kapanış_seçenekleri:
clear screen
print
print
print
print
print tab(28);"Kapanış için Seçenekler"
print tab(28);"***********************"
print tab(28);"Yeni Oyun ? Evet/Hayır"
print
input " "y$
rem: Kullanıcı girişi
print
if y$ = "e" or y$ = "E" then
rem: Koşullar
gosub derece1
rem: Başlangıca geri dönüş
else
system
rem: Veya kapanışa geçiş
exit
end if
end
rem: Program sonu
Tahmin1-1
****************
Tahmin1-1, Tahmin oyun'unun, satır numaraları kullanılarak yeniden yazılmış ve görünümü hafif makyajlanmış halidir. Program'a bir de tahmin.sh isimli bir başlatıcı ekliyorum. Başlatıcının çalışabilmesi için sistem'inizde wterm program'ının kurulu olması gerekiyor. Wterm bir grafik terminal'dir ve program'ınızın renkli olarak açılmasını sağlar. tahmin.sh isimli başlatıcı, bir çalıştırılabilir dosya olarak işaretlenmiş olmalıdır. tahmin.sh başlatıcısın,ı diğer Basic dosyalarından farklı olarak "Uçbirimden başlat" veya "Başlat" seçeneklerinin her ikisinden, istediğiniz ile başlatabilirsiniz. Uçbirimden başlatmanız durumunda, ekran'da iki terminal birden açılacaktır. tahmin.sh ile, isterseniz diğer Basic program'larınızıda, son satırdaki program adını değiştirerek başlatabilirsiniz. Terminal renk'lerinide kendi seçiminize göre değiştirebilirsiniz. Wterm'in benim kullandığım sürümü, Türkçe karakterleri desteklemiyor. Wterm'i Uçbirim'den
sudo apt-get install wterm
komutu ile kurabilirsiniz.
tahmin.sh
# Dosya adı : tahmin.sh
# Açıklama : Tamnin1-1 için başlatıcı
# Ekleyen : Ekrem Şentürk
# Ekleme tarihi : 13 Mayıs 2012
# Yazılım : wterm sürüm 6.2.9
# Bilinen hatalar : UTF-8 desteğini kazandırmayı başaramadığım için Türkçe
# karakterler gösterilemiyor.
# Bilgi : -bg ve -fg ile başlayan rakamları değiştirerek renk
# seçeneklerini değiştirebilirsiniz. 0 ile 16 arası
# rakamlar kullanılabilir.
wterm +sb -title "Tahmin1-1" -bg 1 -fg 11 -cr 2 -e bwbasic Tahmin1-1
Tahmin1-1 ve tahmin.sh dosyaları aynı klasör içinde bulunmaları gerekiyor. tahmin.sh isimli başlatıcıyı başka bir konumda bulundurmak istiyorsanız, son satıra, Tahmin1-1 dosyasını, tam dosya yolunu belirterek girmalisiniz. Benim Bilgisayar'ımda tam dosya yolu şu şekilde olurdu: /home/ekrem/projelerim/Tahmin1-1
Tahmin1-1
Tahmin1-1 dosyasına güzel bir görünüm kazandırmak isteyebilirsiniz. Dosyayı sağ tıklayıp, özellikler'i seçtikten sonra çıkan özellikler penceresindeki, dosya adı yanında bulunan ve Nüfus kimliklerindeki vesikalık fotografların yerini andıran boş alanı sol tıkladığınızda, karşınıza dosya ara penceresi çıkar. sol panelde görebileceğiniz klasör isimlerinden "pixmaps" seçtiğinizde, karşınıza yeni seçimler çıkacaktır. Sıralamada, önce klasörlerin geldiğini ve ardından simge isimlerinin geldiğini görürsünüz. Ben simgeler arasından "gnome-term-linux2.png" simgesini seçtim. Siz beğendiğinizi seçebilirsiniz. Bir simgenin üzerine imleç ile geldiğinizde, yeni bir yan panel açılır ve simgenin görütüsü yansıtılır. Tahmin1-1 dosyası, seçtiğiniz simgenin görünümünü alır. Bu simge görünümü sadece sizin kullanıcı hesabınızda, dosyayı hesabınızdan aktardığınız her klasörde görünür. Başka kullanıcılar tarafından kendi kullanıcı hesaplarında veya başka Bilgisayar'larda bu atama algılanmaz. Yani çalıştırılabilir dosya özelliği gibi taşınılabilir bir dosya özelliği değildir.
#!/usr/bin/env bwbasic
rem *********************************************************************************
rem * Program adı : Tahmin sürüm 1.1 *
rem * Yazılım : Bwbasic 2.20 *
rem * Yazar : Ekrem Şentürk *
rem * Açıklama : Oyun *
rem * Son düzenleme : 10 Mayıs 2012 *
rem *********************************************************************************
rem **************************** Giriş ve tanıtım bölümü ****************************
140 clear screen
145 cls
150 print
160 print
170 print
180 print " **********************************"
190 print " * Bu Program bir tahmin oyunudur *"
200 print " **********************************"
210 print
220 print " Bilgisayar her seferinde belirli araklıkta farklı bir rakam tutar"
230 print " Siz bu rakamı tahmin etmeye çalışacaksınız. Toplam 10'ar hakkınız var"
240 print " **********************************************************************"
250 print
260 print
270 print
280 print " Oynamak istermisiniz E/H"
290 print
300 print
310 print
320 input " ";e$
340 if e$ = "e" or e$ = "E" then
360 gosub derece1
380 elseif e$ = "h" or e$ = "H" then
400 system
420 exit
430 else
450 print "Hatalı giriş"
run
490 end if
rem **************************** Alt program derece1 *******************************
540 derece1:
550 print
560 print
570 print
580 print
590 print
600 print
610 print
620 print
630 print
640 print " # # # # # # # # # # # # # # # # # ### "
650 print " # # # # # # # # # "
660 print " # # # # # # # # # # # # # # # # "
670 print " # # # # # # # # # "
680 print " # # # # # # # # # # # # # # # # ### "
690 print
700 print " *****************************************************************"
710 print " *****************************************************************"
720 print
730 print " OYUN BAŞLAMAK ÜZERE"
740 print
750 print
760 print
770 print
780 print
790 print
800 sleep 2
clear screen
820 gosub oyun
840 return
rem **************************** Alt program oyun **********************************
890 oyun:
910 print
920 print
930 print
940 print " *************** DERECE 1 ***************"
950 print " Lütfen <1> ve <10> arası bir rakam seçin"
960 print " ****************************************"
970 print
980 print
990 print
1000 for i = 1 to 10
1020 print " ";i;".";
1040 randomize timer
1060 a = int(1 + rnd * 10)
1080 input " Tahmininiz:";b
1100 on error gosub hatabildirimi
1120 if b = a then
1140 print
1150 print
1160 print
1170 print " ************************************"
1180 print " * Tebrikler, doğru tahmin ettiniz. *"
1190 print " ************************************"
1200 print " * Bir sonraki aşamaya geçiyorsunuz.*"
1210 print " ************************************"
1220 print
1230 print
1240 print
1250 sleep 4
1270 print
1280 gosub derece2
1300 elseif b <> a then
1320 print
1330 print " Yanlış tahmin ettiniz."
1340 end if
1360 print " Doğru rakam: ";a;" olacaktı"
1380 print
1390 print
1400 next
1420 print
1430 print
1440 print " Toplam 10 kez yanlış tahminde bulundunuz ve kaybettiniz"
1450 print " *******************************************************"
1460 print
1470 print
1480 sleep 4
clear screen
1510 gosub 2770
1530 return
rem *************************** Alt program derece2 *******************************
1580 derece2:
1590 print
1600 print
1610 print
1620 print
1630 print
1640 print
1650 print
1660 print
1670 print
1680 print " # # # # # # # # # # # # # # # # # ##### "
1690 print " # # # # # # # # # # "
1700 print " # # # # # # # # # # # # # # # # # "
1710 print " # # # # # # # # # # "
1720 print " # # # # # # # # # # # # # # # # ##### "
1730 print
1740 print " *****************************************************************"
1750 print " *****************************************************************"
1760 print
1770 print " OYUN BAŞLAMAK ÜZERE"
1780 print
1790 print
1800 print
1810 print
1820 print
1830 print
1840 sleep 3
clear screen
1860 gosub 1940
1880 return
rem **************************** Alt program oyun2 ********************************
rem *** derece2, derece1 alt programı ile küçük bir kaç fark dışında aynıdır ***
1940 oyun2:
1960 print
1970 print
1980 print
1990 print " *************** DERECE 2 ****************"
2000 print " Lütfen <1> ve <100> arası bir rakam seçin"
2010 print " *****************************************"
2020 print
2030 print
2040 print
2050 for i = 1 to 10
2060 print " ";i;".";
2070 randomize timer
2080 a = int(1 + rnd * 100)
2090 input " Tahmininiz:";b
2100 on error gosub 2640
2110 if b = a then
2120 print " Tebrikler, doğru tahmin ettiniz."
2130 gosub 2390
2140 elseif b <> a then
2150 print
2160 print " Yanlış tahmin ettiniz."
2170 end if
2180 print " Doğru rakam: ";a;" olacaktı"
2190 print
2200 print
2210 next
2220 print
2230 print
2240 print " Toplam 10 kez yanlış tahminde bulundunuz ve kaybettiniz"
2250 print " *******************************************************"
2260 print
2270 print
2280 print " Oyun kapanıyor"
2290 print " **************"
2300 sleep 4
clear screen
2320 gosub kapanış_seçenekleri
2340 return
rem **************************** Alt program kazandınız ***************************
2390 kazandınız:
2410 print
2420 print
2430 print
2440 print " ****************************************************"
2450 print " Tebrikler, çok zor bir tahmin oyununu kazanabildiniz"
2460 print " ****************************************************"
2470 print
2480 print
2490 print
2500 print " Oyun kapanıyor"
2510 print " **************"
2520 print
2530 print
2540 print
2550 sleep 5
clear screen
2570 gosub kapanış_seçenekleri
2590 return
rem **************************** Alt program hatabildirimi ************************
2640 hatabildirimi:
2650 print
2660 print " <Lütfen sadece rakam giriniz. hata ";err;">"
2670 print
2680 sleep 2
2690 print
run
2720 return
rem **************************** Alt program kapanış_seçenekleri ******************
2770 kapanış_seçenekleri:
2790 print
2800 print
2810 print
2820 print
2830 print " Kapanış için Seçenekler"
2840 print " ***********************"
2850 print " Yeni Oyun ? Evet/Hayır"
2860 print
2870 input " "y$
2890 print
2900 if y$ = "e" or y$ = "E" then
2920 gosub derece1
2940 else
2950 system
2970 exit
2980 end if
2990 end
Tahmin-1.2
*****************
Tahmin-1.2 sürümü ile oyunumuza biraz daha görsellik ve işlevsellik kazandıralım. Öncelikle, Wterm tarafından deteklenmeyen Türkçe karkterleri değiştirelim ve program'ı dosyalara bölelim.
Tahmin-1.2 program'ımız artık bir "Tahmin-1.2" isimli klasör'den ve dokuz dosyadan oluşuyor. Bir başlatıcı olan birinci dosyamız "BAŞLATICI.sh"nın bir çalıştırılabilir dosya olması yeterli. Diğer
dosyaların ayrı birer pencerede, program'ımız tarafından çalıştırılmamaları için, "COMMON" ve "CHAIN" komutlarından yararlanıyoruz. Bu şekilde program'ımızın denetimi biraz zorlaşıyor, ancak daha büyük boyutlu program'larda, program'ı daha küçük ve bölümler halinde denetlenebilir olarak geliştirmek, tek bir büyük boyutlu dosyada. nerede neyin bulunduğunu tesbit edebilmekten daha kolay olacaktır. Ayriyetten, program'ımızda kullandığımız dosyaları, varsayılan olarak, başka program'larımız ile birlikte, birer modül olarak tekrar kullanabilme imkânıda doğmuş oluyor.
BAŞLATICI.sh
# Dosya adı : BAŞLATICI.sh
#
# Tahmin-1.2 oyunu için başlatıcı
#
# Parametrelerin açıklaması:
# -geometry : Karakter sayısı ölçeğinde, Ekran genişliği ve derinliği
# +sb : Kaydırma çubuğu gizleme (- olumlu, + olumsuz anlamında geçer)
# -fn : Karakter boyutu
# -title : Pencere ismi
# -bg : Arkaplan rengi
# -fg : Karakter rengi
# -cr : İmleç rengi
# -e : Çalıştırılacak uygulama ve dosya adı
wterm -geometry 100x40 +sb -fn 9x15 -title "Tahmin-1.2" -bg 6 -fg 9 -cr 4 -e bwbasic giriş
giriş.bas
rem Dosya adı : giriş.bas
rem program adı : Tahmin-1.2
rem Yazılım : bwbasic sürüm 2.20
rem Yazılım : wterm sürüm 6.2.9
rem Geliştiren : Ekrem Şentürk
rem Son düzenleme : 06 Haziran 2012
rem Açıklama : Bir tahmin oyunu
rem
rem Tahmin sürün 1.2 oyunu toplam 9 dosyadan oluşur.
rem Birinci dosya bir başlatıcıdır ve çalıştırılabilir olmalıdır.
rem Diğer dosyalar, ikinci dosyayı çalıştıran Program tarafından
rem içe aktarılır ve bütün dosyalar tek bir Program gibi çalışır.
rem Bunu sağlayabilmek için, "common" komutu ile bir değişken, sonraki
rem dosya'ya aktarılabilmek için tanımlanır ve "chain" komutu ile, ismi
rem belirtilen dosya'ya geçilir.
rem Sonraki dosyalara geçiş için "run" komutu ve çalıştırılacak dosya
rem ismi belirtilir. Dosya'ların sonundaki ".bas" uzantısının dosya
rem ismine eklemek zorunlu değil. bwbasic, .bas uzantısını tanır.
rem
rem Dosya'ların çalıştırılma sırası. 1-BAŞLATICI.sh, 2-giriş.bas,
rem 3-derece1.bas, 4-oyun1.bas, 5-kazandınız1.bas, 6-derece2.bas,
rem 7-oyun2.bas, 8-kazandınız2.bas, 9-kapanış_seçenekleri.bas
rem
clear screen
print
print
print
print
print
print
print tab(30);"**********************************"
print tab(30);"* Bu Program bir tahmin oyunudur *"
print tab(30);"**********************************"
print
print
print
print
print tab(15);"*****************************************************************"
print tab(15);"Bilgisayar'in tuttugu rakami tahmin edin. Rakam hep farkli olacak"
print tab(15);"*****************************************************************"
print tab(15);"Oyun iki farkli zorluk derecesinde, iki farkli bolumden olusuyor."
print tab(15);"*****************************************************************"
print
print
print
print tab(30);"Oynamak istermisiniz E/H"
print
print
input " "e$
if e$ = "e" or e$ = "E" then
print
common e$
chain "derece1.bas"
elseif e$ = "h" or e$ = "H" then
system
exit
else
print "Hatalı giriş"
run
end if
derece1.bas
rem Dosya adı : derece1.bas
rem
print
print
print
print
print
print
print
print
print
print
print tab(10);"###### ######## ###### ######## ###### ######## ##"
print tab(10);"####### ######## ####### ######## ###### ######## ###"
print tab(10);"## ## ## ## ## ## ## ## ####"
print tab(10);"## ## ## ## ## ## ## ## ##"
print tab(10);"## ## ###### ###### ###### ## ###### ##"
print tab(10);"## ## ###### ###### ###### ## ###### ##"
print tab(10);"## ## ## ## ## ## ## ## ##"
print tab(10);"## ## ## ## ## ## ## ## ##"
print tab(10);"####### ######## ## ## ######## ###### ######## ######"
print Tab(10);"###### ######## ## ## ######## ###### ######## ######"
print
print tab(10);"*********************************************************************"
print tab(10);"*********************************************************************"
print
print
print tab(35);"OYUN BASLAMAK UZERE"
print
print
print
print
print
print
print
print
print
print
print
print
print
print
sleep 3
print
run "oyun1.bas"
oyun1.bas
rem Dosya adı : oyun1.bas
rem
clear screen
print
print
print
print tab(28);"*************** DERECE 1 ***************"
print tab(28);"****************************************"
print tab(28);"Lutfen <1> ve <10> arasi bir rakam secin"
print tab(28);"****************************************"
print tab(28);"****************************************"
print
print
print
for i = 1 to 10
print " ";i;".";
randomize timer
a = int(1 + rnd * 10)
on error gosub hatabildirimi
input " Tahmininiz:";b
if b = a then
print
print
print tab(15);"Bildiniz ve kazandiniz"
sleep 2
print
run "kazandınız1.bas"
elseif b <> a then
print
print " Yanlis tahmin ettiniz."
end if
print " Dogru rakam: ";a;" olacakti"
print
print
next
print
print
print tab(22);"*******************************************************"
print tab(22);"*******************************************************"
print tab(22);"Toplam 10 kez yanlis tahminde bulundunuz ve kaybettiniz"
print tab(22);"*******************************************************"
print tab(22);"*******************************************************"
print
print
print
print
print
print
sleep 4
print
run "kapanış_seçenekleri.bas"
hatabildirimi:
print
print
print " <Lutfen sadece rakam giriniz. hata no: ";err;">"
print
sleep 2
print
print
return
kazandınız1.bas
rem Dosya adı : kazandınız1.bas
rem
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print tab(32);"************************************"
print tab(32);"************************************"
print tab(32);"* Tebrikler, dogru tahmin ettiniz. *"
print tab(32);"************************************"
print tab(32);"* Bir sonraki asamaya geciyorsunuz.*"
print tab(32);"************************************"
print tab(32);"************************************"
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
sleep 4
print
run "derece2.bas"
derece2.bas
rem Dosya adı : derece2.bas
rem
print
print
print
print
print
print
print
print
print
print
print tab(8);"###### ######## ###### ######## ###### ######## ########"
print tab(8);"####### ######## ####### ######## ###### ######## ########"
print tab(8);"## ## ## ## ## ## ## ## ## ##"
print tab(8);"## ## ## ## ## ## ## ## ##"
print tab(8);"## ## ###### ###### ###### ## ###### ##"
print tab(8);"## ## ###### ###### ###### ## ###### ##"
print tab(8);"## ## ## ## ## ## ## ## ###"
print tab(8);"## ## ## ## ## ## ## ## ##"
print tab(8);"####### ######## ## ## ######## ###### ######## ########"
print Tab(8);"###### ######## ## ## ######## ###### ######## ########"
print
print tab(8);"***********************************************************************"
print tab(8);"***********************************************************************"
print
print
print tab(35);"OYUN BASLAMAK UZERE"
print
print
print
print
print
print
print
print
print
print
print
print
print
print
sleep 3
print
run "oyun2.bas"
oyun2.bas
rem Dosya adı : oyun2.bas
clear screen
print
print
print
print tab(15);"*****************************************"
print tab(15);"*************** DERECE 2 ****************"
print tab(15);"Lutfen <1> ve <100> arasi bir rakam secin"
print tab(15);"*****************************************"
print tab(15);"*****************************************"
print
print
print
for i = 1 to 10
print " ";i;".";
randomize timer
a = int(1 + rnd * 100)
on error gosub hatabildirimi
input " Tahmininiz:";b
if b = a then
print
print
print tab(15);"Bildiniz ve kazandiniz"
sleep 2
print
run "kazandınız2.bas"
elseif b <> a then
print
print tab(15);"Yanlis tahmin ettiniz."
end if
print tab(15);"Dogru rakam: ";a;" olacakti"
print
print
next
print
print
print tab(15);"*******************************************************"
print tab(15);"*******************************************************"
print tab(15);"Toplam 10 kez yanlis tahminde bulundunuz ve kaybettiniz"
print tab(15);"*******************************************************"
print tab(15);"*******************************************************"
print
print tab(35);"**************"
print tab(35);"**************"
print tab(35);"Oyun kapaniyor"
print tab(35);"**************"
print tab(35);"**************"
sleep 5
print
run "kapanış_seçenekleri.bas"
hatabildirimi:
print
print
print tab(15);"<Lutfen sadece rakam giriniz. hata no: ";err;">"
print
print
sleep 2
print
return
kazandınız2.bas
rem Dosya adı : kazandınız2.bas
rem
print
print
print
print
print
print
print
print
print
print
print tab(15);"****************************************************"
print tab(15);"****************************************************"
print tab(15);"Tebrikler, cok zor bir tahmin oyununu kazanabildiniz"
print tab(15);"****************************************************"
print tab(15);"****************************************************"
print
print
print
print tab(35);"**************"
print tab(35);"**************"
print tab(35);"Oyun kapanacak"
print tab(35);"**************"
print tab(35);"**************"
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
print
sleep 5
print
run "kapanış_seçenekleri.bas"
kapanış_seçenekleri.bas
rem Dosya adı : kapanış_seçenekleri.bas
rem
clear screen
print
print
print
print
print
print
print
print
print
print
print tab(35);"***********************"
print tab(35);"***********************"
print tab(35);"Kapanis icin secenekler"
print tab(35);"***********************"
print tab(35);"***********************"
print
print tab(35);"***********************"
print tab(35);"***********************"
print tab(35);"Yeni Oyun ? Evet/Hayir"
print tab(35);"***********************"
print tab(35);"***********************"
print
print
input " "y$
print
if y$ = "e" or y$ = "E" then
print
run "derece1.bas"
else
system
exit
end if
BİR HESAPLAMA PROGRAMI GELİŞTİRELİM
Hesapmakinam
Hesapmakinam, kullanım kolaylığı açısından bakıldığında, biraz alışılmışın dışında ama işlemlerinize açıklamalar eklemenize olanak tanıyan ve de hesaplarınızın çıktısını alabileceğiniz bir hesaplama progamı.
#!/usr/bin/env bwbasic
clear screen
cls
10 rem **********************************************************************************
11 rem Program : Hesapmakinam sürüm 1.0
12 rem Gelitiren : Ekrem Şentürk
13 rem Son düzenleme: 28 Haziran 2012
14 rem Yazılım : Bywater Basic sürüm 2.20
15 rem Açıklama : Hesap çıktısı veren ve açıklamalar eklenebilmesine
16 rem imkân tanıyan bir hesaplama programı.
17 rem **********************************************************************************
30 goto 40
31 print
32 print
33 print " Rakamların sonuna virgül eklemeyi unuttunuz!"
34 print " Program yeniden başlıyor."
36 sleep 6
37 print
40 rem
clear screen
cls
50 print " ------------------------------------------------------------------------------"
51 print " Hesapmakinam"
52 print " ------------------------------------------------------------------------------"
53 print
54 print " Toplama için : +"
55 print " Çıkartma için: -"
56 print " Çarpma için : x"
57 print " Bölme için : /"
58 print " İşlem sonucu : ="
59 print
60 print
64 print " 1.Rakam sonuna virgül ekleyin. İsterseniz açıklama ekleyebilirsiniz"
65 print " 2.Operatör'lere açıklama eklemeyin.
67 print " 3.Virgül'lü rakamlar için virgül yerine nokta kullanın.'Örnek= 12.7,'"
68 print " ******************************************************************************"
69 print " DEVAM İÇİN = D ÇIKMAK İÇİN = C"
70 print " ******************************************************************************"
72 input " Giriş : " d$
73 if d$="D" or d$="d" then
74 goto 77
75 else
76 goto 635
77 end if
78 sleep 0.6
79 print
clear screen
cls
80 print
81 print "İşlem : Rakam :, Açıklama : (Rakam'ların sonuna VİRGÜL ekleyin.)"
82 print "------------------------------------------------------------------------------"
85 on error gosub 700
90 h$ = "Hesap"+time$
95 open h$+".txt" for output as #1
100 input "Rakam :" a, T1$
102 print #1, a, T1$
110 input "İşlem :" o$
112 print #1, o$
115 input "Rakam :" b, T2$
117 print #1, b, T2$
120 if o$ = "+" then
125 c = a + b
130 elseif o$ = "-" then
135 c = a - b
140 elseif o$ = "x" then
145 c = a * b
150 elseif o$ = "/" then
155 c = a / b
160 elseif o$ = "=" then
165 goto 600
170 else
174 print
175 print " İşlem için bir operatör girmelisiniz. ( +|-|x|/ )"
176 print " Son girdiğiniz rakam(lar) hesaplanmayacak."
177 print
180 sleep 4.0
185 return
190 end if
200 input "İşlem :" o$
202 print #1, o$
210 if o$ <> "=" then
220 a = c
230 goto 115
235 else
240 end if
400 print using " sonuç = ######.##"; c
410 print #1, using "Sonuç: ######.##"; c
420 close #1
601 print "*******************************************************************************"
602 print " YENİ HESAP İÇİN = Y ÇIKMAK İÇİN = Ç
603 print "*******************************************************************************"
604 input " Seç : " y$
606 print
607 if y$="y" then
608 goto 40
609 elseif y$="Y" then
610 goto 40
611 else
612 goto 635
615 end if
616 end
635 system
640 exit
700 Hata_Düzeltme:
710 close #1
720 goto 31
790 return
örnekler ve anlatım için çok teşekkür ederim. acaba bwbasic'te fonksiyon oluşturabiliyor muyuz?
Evet, bwbasic'te function oluşturabilirsin. "/usr/share/doc/bwbasic/Examples" klasöründe "callfunc.bas" ve "deffn.bas" adında iki örnek bulabilirsin.
callfunc.bas örneğinde function tanımlaması " Function TestFnc( ) " ile başlıyor ve " End Function" ile bitiyor
deffn.bas örneğinde function tanımlaması "DEF fnadd( )" ile başlıyor ve "END" ile bitiyor.
"function" ve "def" tanımlamaları ile kendi işlevlerini program'larına ekleyebilirsin.
Ya üstat beni 1980'li yıllara, ZX Spectrum'da, Atari 800 XL'de Basic diliyle program yazdığım günlere geri götürdün...Teşekkürler. Aslında sırf nostalji için kurup bakmak lazım. Peki bunun gtk tarzı uygulamalar yazan bir şekli şemali var mı?
Bwbasic grafik ve renk desteklemiyor. İlave uygulamalar kullanmak gerekiyor. Bwbasic'in ilave bir özelliği var, Terminal olarakta kullanılabiliyor.
Terminal özelliğinden nasıl yararlanılabileceğini gösteren bir örnek ekleyeyim:
10 input "Lütfen bir seçim yapın" a$
20 if a$ = "b" then
30 zenity --calendar
35 end
40 elseif a$ = "c" then
50 zenity --entry
54 end
55 else print "Desteklenmeyen seçim"
60 end if
70 end
Bölüm 2'de kullandığım grafik terminal "wterm" artık yeni ubuntu sürülerinin yazılım depolarında bulunmuyor. Wterm yerine xterm kullanabilirsiniz. Ancak parametrelerde kullandığım renk numaraları yerine, xterm'de renk isimleri kullanmanız gerekiyor.
Renk isimleri aşağıda saydığım gibi:
black : Siyah
red : Kırmızı
green : Yeşil
yellow : Sarı
blue : Mavi
gray : Gri
cyan : Açık Mavi
magenta : Pembe
Örnek olarak: xterm -bg cyan -fg magenta
şeklinde xterm terminal'ini başlatablirsiniz. Diğer parametrelerde bir değişiklik yapmanıza gerk yok.
Wterm ve Xterm arasında, daha önce Wterm terminal'ini deneme imkânınız olmuşsa, görbileceğiniz fark, Xterm terminali boyut olarak Wterm terminal'inden daha küçük.
Bwbasic kaynak kod'dan kurulum
Ubuntu veya LinuxMint'ten farklı bir Linux dağıtımı kullanıyorsanız, yazılım depolarında Bwbasic'i bulamayabilirsiniz. Bu durumda sourceforge.net'ten Bwbasic'i kaynak kod olarak indirip, Bilgisayar'ınızda derleyip, kurabilirsiniz. Bunu yapabilmek için Bilgisayar'ınızda (İşletim sistem'inizde) Gcc ve Make paketlerinin hazır kurulmuş olmaları gerekiyor.
Terminalden (Uçbirim/Konsole v.s.)
gcc -v
ve
make -v
komutlarını girerek, söz konusu paketlerin sürümlerini görebilirsiniz. Hata bildirimi almanız durumunda, paketler kurulu değiller ve kullandığınız dağıtımın depolarından önce kurulmaları gerekmektedir. Genellikle kurulu gelirler.
Biz gerekli paketlerin hazır kurulu olduğunu var sayarak devam edelim. bwbasic-xxx.zip dosyasını sourceforge.net'ten indirdikten sonra (başka yerlerde de mutlaka bulunabiliyordur) önce zip Arşivini açalım. Arşiv'den çıkan bwbasic-xxx klasörünü kullanıcı dizinimize kopyalayalım (Başka bir dizinde açılmışsa) Burada xxx olarak belirttiğim, sürüm numarasını temsil eder. Klasörü açalım ve klasör içindeki configure dosyasını bulup, Geany veya aynı ihtiyaç duyduğumuz özelliğe sahip bir başka editör ile açalım.
"(Döküman veya) Belge/Satır sonu ayarları"ından, CR/LF(Win) işaretini kaldırıp, LF(Unix) olarak işaretleyelim ve dosyayı (değişiklilk ile birlikte) kayıt edelim. Editörümüzü kapatalım ve configure dosyasını sağ tıklayalım. "özellikler" seçelim, "izinler" seçelim ve "çalıştırılabilir" olarak işaretleyelim.
Terminal açalım ve
cd bwbasic-xxx
veya ( bwbasic-xxx klasörü kullanıcı diziniden farklı bir yerdeyse, örnek: İndirilenler veya Downloads )
cd Downloads/bwbasic-xxx
komutunu girip, başlatalım.
Bu şekilde Terminal'den bwbasic-xxx klasörünün içine girmiş oluruz ve Terminal'den yaptığımız işlemler, bwbasic-xxx klasörü içerisinde gerçekleşir.
İşletim sistemimiz "sudo"yu destekliyorsa:
./configure
ardından
make
ve ardından
sudo make install
komutları ve son olarakta kullanıcı şifresi ile birlikte kurulumu tamamlayalım.
Terminal halen bwbasic-xxx klasörü içerisinde işlem yapmaktadır. Bwbasic kurulumunu deneyebilmek için, bwbasic-xxx iiçerisinde bir örnek program bulunmakta. Bu örnek Program'ı, kurulu Bwbasic derleyicimiz ile çalıştıralım ve kurulumun gerçekleştiğinden emin olalım. Program'ın adı "example.bas"
bwbasic example.bas
Bu komutu çalıştırdığımızda, bir sonuç görebiliyorsak, kurulum düzgün şekilde gerçekleşmiştir.
Yine bwbasic-xxx klasörü içerisinde bir "bwbasic.doc" isimli genel anlatım (Klavuz) bulunmakta ve bir de "bwbtest" isimli bir alt klasör içerisinde başka örnekler bulunmakta. Diğer tüm dosyaları artık silebilirsiniz. Bu şekilde kurulumda bir "man" yardım balümü kurulmamış olacak, ancak bwbasic.doc" man belgesinin içeriğini içeriyor.
Bwbasic'i Windows'a da kurmak mümkün. Yine aynı kaynak kod kullanılarak, QuickC veya BorlandC++ ile, "INSTALL" isimli dosyada anlatıldığı gibi derleyerek, bu işlem mümkün.
Linux işletim sistemimiz "sudo"yu desteklemiyor olabilir. Bu durumda aşağıdaki gibi kurulumu gerçekleştirebiliriz.
su
şifremizi girelim.
./configure
make
make install
En basitinden bir metin editörü
Terminalde çalışan ve komut ile kullanılabilen bir metin editörü örneği.
#!/usr/bin/env bwbasic
rem Dosya : me (Metin Editörü)
rem İşlev : Terminal üzerinde çalışan ve en basit editör
rem Gereksinim : bwbasic (Bywater Basic)
rem Uyumluluk : bwbasic 2.20 - 2.6.1
rem Uyumsuzluk : bwbasic 3.0
rem Yazar : Ekrem Şentürk
rem Amaç : Edtör piyasasını çalkalamak
rem Son düzenleme : 07 Mart 2016 / 22.09
baslat:
cls
clear screen
print : print : print
print tab(26);"M e t i n E d i t ö r ü"
print
print tab(26);"ctrl + d = Kaydet ve çık"
print tab(26);"esc = Kaydet ve yeni dosya aç"
print tab(26);"ctrl + c = Durdur"
print tab(26);"ctrl + z = İptal"
print : print : print tab(26);
input "Yeni dosya (isim) : " isim$
cls
clear screen
print
print tab(30); isim$ + ".txt"
print
open isim$+".txt" for output as #1
b$ = chr$(27)
do
line input a$
print #1, a$
if a$ = b$ then goto kaydet
loop
close #1
system
exit
kaydet:
close #1
goto baslat
Açıklama
ctrl + c ( "Durdur" ) ve ctrl + z ( "İptal" ) arasıdaki fark, ctrl+z ile işlem iptal ediliyor ve yazılmaya başlanan dosya boş kalıyor. ctrl+c ile yazılmaya başlanan dosya üzerindeki işlem durduruluyor ve işlem sonradan iptal edilirse, dosya boş kalıyor. Veya, devam edilmak istenirse, bwbasic üzerinden dosya'ya yazılmaya devam edilebilir.
Örnek:
Dosyamızın adı "deneme" olsun. "deneme.txt" adı altında yeni bir dosya açılır, ve biz bu dosya'ya aşağıdaki satırları yazalım.
Bu bir denemedir.
Lütfen içeriği ciddiye alınmasın
Şimdi bir satır aşağıya indikten sonra "ctrl+c" ile dosya yazımını durduralım. İstersek "ctrl+r" ile yeni bir boş satır açabiliriz, ama bwbasic halen çalışır durumda ve de "deneme.txt" isimli dosyamız da kapatılmadığı için, (her iki durumda aynı şekilde) yazmaya devam edebiliriz. Ancak nereye yazdığımızı her satırda (her iki durumda da) belirtmeliyiz. (Aşağıdaki gibi devam edelim.)
print #1, "Yazmaya tekrar devam edelim."
print #1, "bir satır daha yazalım."
İstersek dosyayı "close #1" ile kapatarak bwbasic'te devam edebiliriz, veya "ctrl+d" yada "quit" komutu ile her ikisinide kapatabiliriz.