จีดับบิวเบสิก (GW-BASIC)

ปรับปรุง : 2551-06-23 (เพิ่มตัวอย่าง)
GW-BASIC
GW คำว่า GW ย่อมาจาก "Gee Whiz" เป็นภาษาในยุคแรก ๆ ที่ใช้ประกอบการสอนการเขียนโปรแกรมในคอมพิวเตอร์ และทำงานบน PC ได้ดีในระดับหนึ่ง มีการทำงานเป็น Interpreter มีการนำภาษานี้ใช้สอนในหนังสือ คอมพิวเตอร์เบื้องต้น และเทคนิคการเขียนโปรแกรม ที่เขียนโดย รศ.วัชราภรณ์ สุริยาภิวัฒน์ ที่มีการนำไปใช้สอนในสถาบันต่าง ๆ กันมาก เพราะมีการตีพิมพ์กว่า 20 ครั้ง ซึ่งสมัยผมเป็นนักศึกษา ก็เริ่มเรียนภาษานี้เป็นภาษาแรก
การนำโปรแกรม GWBASIC.EXE ไม่ต้องติดตั้ง เพราะมีโปรแกรมเดียวขนาดประมาณ 79 KB สำหรับรุ่น 3.23 เพื่อ run โปรแกรมนี้แล้วจะพบหน้าจอดังข้างล่างนี้ หากต้องการออกจากโปรแกรมก็เพียงแต่พิมพ์ system เพื่อปิดโปรแกรม และกลับสู่ระบบ

e-book: http://www.antonis.de/qbebooks/gwbasman/index.html
Source Code : GW-Basic Game
- copy มาและแตกได้แฟ้ม .bas
- เปิดด้วย GWBASIC แล้ว save ใหม่แบบ ,a
- DOS>gwbasic roborat.bas
โปรแกรมจาก http://scottserver.net (expired)

- 5starZ.bas
- ต่อดาว 5 ดวง

- flipper.bas
- สลับสีจนเป็นสีเดียว

- roborat.bas
- วางแผน แล้วกดลูกศร
- บังคับให้หนูไปกินเนย

- search.bas
- Click อักษรคำแรก
- Click อักษรสุดท้าย
Download ตัวแปลภาษา :
KindlyRat, Rhinorc, Nmt.edu, noaa.gov #
บทเรียนที่ 1
- รับค่า แล้วพิมพ์ค่านั้นออกมา จากนั้นปิดโปรแกรมไปเลย
    รายละเอียดเพิ่มเติม
  1. อักษรสีขาว คือสิ่งที่ระบบแสดงออกมา
  2. อักษรสีเหลือง คือสิ่งที่เราพิมพ์ หรือป้อนเข้าไป
  3. Source code โปรแกรมนี้มี 2 บรรทัดคือ รอรับค่าเข้าตัวแปร A$ จากนั้นแสดงออกมา
  4. เมื่อพิมพ์ run แล้ว จะสั่งให้ประมวลผลตามคำสั่งที่พิมพ์เข้าไป
  5. เมื่อพิมพ์ system แล้ว จะสั่งปิดโปรแกรม GWBASIC แล้วกลับเข้าระบบปฏิบัติการ หรือ OS นั่นเอง
GW-BASIC 3.23
(C) Copyright Microsoft 1983,1984,1985,1986,1987,1988
(C) Copyright American Research Corporation. 1988,1989
60300 Bytes free
Ok
100 INPUT A$
200 PRINT "YOU TYPED "; A$
run
? abcdef
abcdef
OK
system

บทเรียนที่ 2
- พิมพ์ 1 ถึง 5 ด้วย go to
    รายละเอียดเพิ่มเติม
  1. ใช้ go to พิมพ์ 1 ถึง 10
  2. ถ้าใช้ if ร่วมกับ go to ในบรรทัดที่ 20 อาจต้องใช้ go to 2 คำสั่งในโปรแกรมนี้
GW-BASIC 3.23
(C) Copyright Microsoft 1983,1984,1985,1986,1987,1988
(C) Copyright American Research Corporation. 1988,1989
60300 Bytes free
Ok
list
10 dim a
20 a = a + 1
30 print a
40 if a < 5 then go to 20
Ok
run
1
2
3
4
5
Ok

บทเรียนที่ 3
- พีระมิดของตัวเลข
    รายละเอียดเพิ่มเติม
  1. สมมติให้มีการเขียนโปรแกรมแล้ว save เก็บในชื่อ p01.bas ไว้แล้ว โปรแกรมนี้จึง load โปรแกรมนี้มาใช้
  2. การใช้ for ซ้อน for
  3. การใช้ tab กำหนดตำแหน่งให้ง่ายขึ้น
  4. ฟังก์ชัน STR$ ใช้เปลี่ยนตัวเลขเป็นตัวอักษร
  5. ฟังก์ชัน RIGHT$ ใช้นำอักษรเฉพาะทางขวาเพียง 1 อักษรมาใช้
GW-BASIC 3.23
(C) Copyright Microsoft 1983,1984,1985,1986,1987,1988
(C) Copyright American Research Corporation. 1988,1989
60300 Bytes free
Ok
load "p01.bas"
OK
list
10 FOR I = 1 TO 5
15 PRINT TAB(40 - I);
20 FOR J = 1 TO I
30 PRINT RIGHT$(STR$(J),1);
40 NEXT J
50 PRINT
60 NEXT I
Ok
run
                                      1
                                     12
                                    123
                                   1234
                                  12345
Ok

บทเรียนที่ 4
- รับค่าลงอาเรย์ 5 จำนวนแล้วหาค่า max
    รายละเอียดเพิ่มเติม
  1. แสดงตัวอย่างอาเรย์
  2. การใช้ for ทำซ้ำ 2 ครั้ง
  3. การใช้ if เลือกตามค่า max
    แบบฝึกหัด
  1. เพิ่มการหาค่า min
  2. เพิ่มการหาค่าเฉลี่ย
  3. แต่งให้สวยงามขึ้น
GW-BASIC 3.23
60300 Bytes free
Ok
10 DIM AR(5)
20 MAX = 0
30 I = 0
40 FOR I = 1 TO 5
50 INPUT AR(I)
60 NEXT
70 FOR I = 1 TO 5
80 IF AR(I) > MAX THEN MAX = AR(I)
90 NEXT
100 PRINT MAX

บทเรียนที่ 5
- วัดเวลาการทำงาน (สามารถทดสอบ Code Optimization ได้)

5 START = TIMER
10 DIM X
20 FOR I = 1 TO 1000000!
30 X = X + I
40 NEXT
50 PRINT X
60 PRINT(TIMER - START)

run
 4.999414E+11 
 1.589844
Ok
บทเรียนที่ 6
- ประมวลผลใน Commmand Line
- จากตัวอย่างข้างล่าง สามารถนำไปใช้ใน Editplus ช่วยการเขียน และประมวลผลได้

DOS> copy con x.bas
10 print 5
20 system

DOS> gwbasic x.bas

DOS> gwbasic x.bas > y.txt

คำสั่งที่ควรรู้
1clsClear Screen
2i=0กำหนดค่าให้กับตัวแปร
3print 5,5;5;5,5, จะห่าง 1 tab ส่วน ; จะติดกัน
4goto 10ไปทำงานบรรทัดที่ 10
5input iรับตัวเลขจากแป้นพิมพ์ (a$ = String)
6locate 5,40:print "x"ย้าย Cursor ไปตำแหน่งที่ต้องการ
7if i = 1 then cls else print "a"เลือก หรือตัดสินใจ
8for j = 1 to 5
..
next
ทำซ้ำด้วย for
9save "a.bas",aเก็บแบบ Ascii เปิดด้วย Notepad ได้
    ตัวอย่างการ print แบบต่าง ๆ
  1. write 5
  2. write (5 + 5)
  3. print 5,5;5
  4. print 5;5,5
  5. print a,a,a
  6. print a;a;"ok",a;a;
  7. print tab(10) 10
  8. print tab(a) a
  9. print tab(a) a,b
  10. print tab(20) using "##,###"; a
  11. print string$(50,"-")
  12. print asc("A")
  13. print chr$(65)
  14. print abs( 5 )
  15. print exp( 5 )
  16. print int( 5 )
  17. print sqr( 5 )
  18. print sin( 5 )
  19. print cos( 5 )
  20. print tan( 5 )
  21. randomize timer
  22. print int(10 * rnd + 1)
  23. print left$("abcde",2)
  24. print right$("abcde",2)
  25. print mid$("abcde",2,3)
  26. print len$("abcde")
  27. print val("123")
  28. print str$(5)
    ตัวอย่าง คำสั่งที่น่าสนใจ
  1. cls
  2. rem This is my first program
  3. new
  4. run
  5. run 50
  6. end
  7. list 100 - 200
  8. save "a.bas" , a
  9. load "a.bas"
  10. delete 100 -
  11. edit 200
  12. auto
  13. dim x(5)
  14. dim ename$(5), esalary(5)
  15. dim aa$(10)
  16. dim a(5,10)
  17. i=0:j=10:a=5:bb$="burin"
  18. input a
  19. input bb$
  20. input "Wait your key? " ; bb$
  21. for .. next
  22. if .. then .. else ..
  23. locate 5,40:print "x"
  24. goto 20
  25. on n goto 1000, 2000, 3000
  26. gosub
  27. return
  28. read a
  29. read bb$,a
  30. data 1000,5000,2000,4500,"abc","def"
  31. swap a,b
  32. screen 0
  33. screen 2
  34. line (10,10) - (20,20)
  35. draw "BM 50,50 R 100 D 50 L 100 U 50"
  36. circle (10,20),30
  37. color 3,4
  38. play "c8de8fg9ab"
  39. rem character for play command C = DO, D = RE, E = M?, F = FA, G = SOL, A = LA, B = S?
GW-Basic Manual
Microsoft User's Reference by Thomas Shaffner from http://www.antonis.de/qbebooks/gwbasman/index.html
ABS ASC ATN AUTO BEEP BLOAD BSAVE CALL CDBL CHAIN CHDIR CHR$ CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFINT DEFDBL DEFSNG DEFSTR DELETE DIM DRAW EDIT END ENVIRON EOF ERASE ERROR EXP EXTERR FIELD FILES FIX FOR FRE GET GOSUB-RETURN GOTO HEX$ IF INKEY$ INP INPUT INPUT# INPUT$ INSTR INT IOCTL IOCTL$ KEY KILL LEFT$ LEN LET LINE LIST LLIST LOAD LOC LOCATE LOCK LOF LOG LPOS LPRINT LSET MERGE MID$ MID$ MKDIR MKD$ MKI$ MKS$ NAME NEW NEXT OCT$ ON-GOSUB ON-GOTO OPEN OPTION OUT PAINT PALETTE PCOPY PEEK PLAY PMAP POINT POKE POS PRESET PSET PRINT RANDOMIZE READ REM RENUM RESET RESTORE RESUME RETURN RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STICK STOP STR$ STRIG STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON UNLOCK USR VAL VARPTR VARPTR$ VIEW WAIT WHILE-WEND WIDTH WINDOW WRITE WRITE#

gw-man.zip # 637 KB

    แนะนำเว็บ (Web Guides)
  1. http://www.geocities.com/KindlyRat/GWBASIC.html (Number one & Many Games)
  2. http://www.antonis.de (qbebooks)
  3. http://uolang.org (Source Code)
  4. http://www.freebasic.net/ (Compiler Open Source : download 500 KB )
  5. http://www.thefreecountry.com/compilers/basic.shtml
  6. http://www.xs4all.nl/~hwiegman/gwbasic.html : document and utilities
  7. Basic programming article by Ken Holmes
  8. http://scottserver.net/basically/geewhiz.html and Games : by Gee whiz (expired)
  9. http://aragez.sitemynet.com/gwba.html (expired)

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223