Basic için program örnekleri

Başlatan ekremsenturk, 01 Ocak 2012 - 21:52:57

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ekremsenturk

                   
                          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 #1a$
40 line input #1b$
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




gecegezen

örnekler ve anlatım için çok teşekkür ederim. acaba bwbasic'te fonksiyon oluşturabiliyor muyuz?
Yotube kanalım hepinizi beklerim...
https://www.youtube.com/channel/UCsRQPZxNJKZbfpGy6r97nJw

ekremsenturk

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

mahira

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ı?

ekremsenturk

#4
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

ekremsenturk

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.

ekremsenturk

#6
                                                          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




ekremsenturk

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