zwBASIC

3.2.1 3.4.1 3.4.2

二.zwBASIC各命令用法及示範

在我們提供的命令中絕大部分語句於標準qbasic是統一的,但是有個別語句暫時並不是與之完全一樣,例如read/data。另外zwBASIC暫時不提供檔案操作,這個缺陷也會在以後的版本中得到修改。
基本上所有的命令都有相應的示範程式,對於那些沒有示範程式的命令,照標準qbasic使用就行。或照類似語句使用,例如while ……wend 與do while………loop。

2.1 定義常量,變數,數組語句

2.1.1 Common shared 命令
2.1.2 Const 命令
Const定義的對象必須在定義的時候初始化,後來的程式中不能對常量進行賦值,輸入等寫操作。對於普通變數的賦值用類似於:const pi = 3.14這樣的語句就可以了,對於數組的賦值,類似於c語言中的數組初始化,但是要換行輸入的時候記得加換行轉義符’\’.
2.1.3 Dim 命令
用來定義局部變數和局部數組,定義的時候不能對它們進行初始化。對於某些命令使用陌生變數時會自動定義,而不報錯,例如input,for,let等。假設語句input x 中的x之前沒有定義,但是這條語句在編譯的時候不會報錯,在這後面的語句中也可以使用x。但為了程式的穩健性,最好用dim語句定義之後再使用。
2.1.4 Dim shared命令
用來定義全局數組

2.2 定義函式和sub語句

2.2.1 Function命令
定義函式命令,在傳參的時候,有值傳遞方式和地址傳遞方式之分,這個於qbasic是一致的,但函式調用的時候不支持STATIC選項。注意在定義function和Sub時,一定要在basic程式的最前面用declare命令聲明!
2.2.2 Sub命令
2.2.3 DEF FN命令
定義單行函式。注意定義當行函式也要在程式的最開頭用declare聲明,單行函式的函式名應該以字母fn開頭。
示範程式

2.3 聲明語句

DECLARE 命令
注意function,sub命令的示範程式

2.4 選擇結構語句

2.4.1 IF….THEN…..ELSE…IF…. ENDIF命令
注意else if後面要加then,不然判斷語句失效. 支持單行if語句模式
2.4.2 SELECT CASE ..CASE…….. CASE ELSE…END SELECT命令
現在只支持數字類型使用這條命令
2.4.3 ON…GOSUB……..命令

2.5 循環結構語句

2.5.1 Do……………………loop命令
2.5.2 Do……………… loop until命令
2.5.3 Do while ………………loop命令
2.5.4 FOR... TO..STEP... NEXT命令

2.6 輸入輸出語句

2.6.1 INPUT命令
為變數賦值,回車鍵作為結束
示範程式
2.6.2 PRINT命令
顯示命令。如果一次顯示多個對象,各對象之間用‘;’隔開,如果一行顯示不完所有的對象,會自動換行顯示。如果一屏顯示不完,自動清屏,從螢幕的左上角開始顯示。
示範程式
2.6.3 xprint命令
調試用print命令,效果於print命令一樣,只是在PC機上用來調試,對象顯示在編譯信息欄里,真正的在小機上運行,不執行這條語句。將print命令示範程式中的print命令換成xprint,即可看到效果
2.6.4read/data命令
與qbasic的標準語法一致,不同點是在我們自己定義的function或是sub中也可以使用read/data語句.每個function或是sub中都有自己的data棧.一個function或sub中的data語句不會影響到其他函式的data區.
示範程式
2.6.5 restore 命令
與標準語法一致,示範程式見read/data的示範程式

2.7 其他命令

2.7.1 Let命令
可以直接用賦值符號‘=’代替次語句,例如語句:let a = 2 和語句 a = 2效果時一樣的。
2.7.2 Pause命令
暫停鍵,按任意鍵繼續!
上面有太多程式用到Pause鍵,這裡就不寫出示範程式
2.7.3 Inc/dec命令
一個是自增,一個自減運算。它們操作的對象只能是數字變數
示範程式
2.7.4 end命令
程式執行結束標識,每個basic程式都至少應該有一條end語句
2.7.5 Rem命令
注釋用,在zwBASIC中有兩種注釋方式,一種是整行都是注釋信息,用rem語句,另一種是在一條語句後面加上符號’注釋。注意用後面的注釋方式時,符號’以後不要出現冒號。

三.zwBASIC庫函式用發及示範

3.1 庫函式的簡要說明
這個版本的庫函式,暫時不提供數學上的三角函式及檔案操作函式,數學函數裡面暫時只有,隨機,求整,求絕對值等簡單的數學函式,更多的庫函式會在以後的版本中陸續推出。
3.2 字元串操作函式
3.2.1 strcmp函式
3.2.2 STRCPY函式
3.2.3 strlen函式
3.2.4 strncat函式
3.2.5 strncmp函式
3.2.6 strcat函式
3.3 顯示字元操作函式
3.3.1. SYSPUTCHAR函式 
對於一張BMP圖,如果它的寬<=159,高<=96我們就可以在電子詞典上顯示出來。
首先注意要轉換的必須是一張BMP圖,對於jpg,gif等格式的圖片可以先通過一些軟體轉換為bmp圖片。我們的顯示機制是:先將一張點陣圖中包含的信息轉換為basic程式中一個常量數組的各個成員,然後把這個數組當作putpct的最後一個參數使用。
義符”\”,直到數組賦值結束,這裡的換行轉義符只在定義常量的時候才用到,其它使用編譯時會報錯!
3.3.2. SYSPRTSTRG函式
注意此程式與print的區別,用print顯示的字元,當一行顯示不下,系統回自動換行顯示,但SYSPRTSTRG卻只顯示完一行,多餘的字元不會換行顯示。
3.4 普通圖形操作函式
3.4.1 FillRect函式
填充矩陣
3.4.2 CLSPART函式
清除部分螢幕
3.4.3 CIRCLE函式
畫圓,前兩個參數確定原點坐標,第三個參數決定半徑
3.4.4 LINE函式
畫線,前兩個參數決定線的一端點,後兩個參數決定線的另一端點
3.4.5 BOX函式
畫矩陣,前兩個參數決定矩形的左上點,後兩個參數決定矩陣的右下點
3.4.6 SET函式
畫點,前兩個參數決定畫點的左邊,最後一個參數決定是在此處畫一點,還是清楚一個點
0-清除點,1-畫點
3.4.7 LINECLEAR函式
消隱一條直線
3.4.8 CIRCLECLEAR函式
消隱一個圓,注意這裡只消隱圓的框線,圓內部的點不被消隱
3.4.9 RECTCLEAR函式
消隱一個矩形框,只消隱矩形的框線,矩形內部的點不被消隱
3.4.10 FILLCIRCLE函式
填充圓
3.4.11 LCDREVERSE函式
指定區域螢幕反顯
3.5 PUTPCT貼圖函式
它的函式原型是 putpct(x,y,width,height,bmp!),開始的兩個參數是決定開始貼圖的起始坐標,width,height分別是圖片的寬和高。這裡最重要的就是bmp!參數,它是記錄顯示圖片信息的數組名,這個數組只能定義為常量數組,數組名的最後一個字元必須是”!”。
3.6 數學函式
3.6.1 Abs函式
求一個數的絕對值
3.6.2 int函式
求整函式
范源程式
3.6.3 Rnd函式
隨機函式,假設參數是x,隨機函式返回0~x-1之中的任何一個整數
示範源程式
3.6.4 Val函式
字元串轉數字函式.
示範源程式
3.7 其他函式
3.7.1 GETKEY函式
返回按鍵的asc碼,有些電子詞典上的特殊按鍵對應的asc見表特殊鍵asc碼.txt
這裡需要注意的是:對於對電子詞典上電源開關鍵,詞典相關的熱鍵等無需理會,我們的解釋器會自動進行處理
pc機上的開發環境上,除了小機上的向上,向下的翻頁鍵,其他都與小機上是統一的。
示範源程式
1.對於所有對象,包括函式名,變數名,常量名,數組名,命令等不區分大小寫.
2.程式的每行最多只能有512個位元組(一個漢字占兩個位元組).
3.支持傳統basic的行號,也可以用字元label代替.
4.一行內可以寫入多條語句,各語句之間用‘:’隔開
例如:print 10:x = 4:y = 3
5.一個basic中至少有一個出口,即end語句.
6.zwBASIC不支持函式的嵌套定義,但支持函式的嵌套調用和遞歸調用。最多能嵌套調用50次.
7.select case語句現在只支持數字類型.
四,編譯錯誤與原因:(信息顯示再編譯信息欄)
Memory Full! 記憶體分配不足
Var Too Long! 字元太長溢出
Zero Divided! 0做了除數或是求餘數
Nesting Too Many 嵌套層數太多(包括函式嵌套,select嵌套,gosub,return等嵌套)
ERROR 中間代碼出錯
FILE OPEN ERROR 沒有選擇中間代碼檔案(只在pc上運行會顯示的報錯信息)
READ TYPE NO MATCH read變數類型於data區數據不匹配
READ OVERFLOW read數據超過data區邊界
要注意的幾點:
1,每條語句最後不要加分號,不然會有解析錯誤的報錯
2,對一行後面以’注釋時,’後面不要有“:”號,否則會報錯
3,當編譯完一個basic,編譯信息欄里提示完” 編譯成功!”,但是點運行按鈕,有時小機上會顯示ERROR
這時請重新點擊編譯和運行就OK。
示範源程式

相關詞條

相關搜尋

熱門詞條

聯絡我們