史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   生活話題、日常閒聊、喇勒唬爛灌水區 (http://forum.slime.com.tw/f23.html)
-   -   第二版的BASIC玩具程式WinBASIC交流 (http://forum.slime.com.tw/thread287951.html)

魔術王子 2017-11-22 07:27 PM

第二版的BASIC玩具程式WinBASIC交流
 
同樣是利用C++ Builder 6.0寫出來的程式(重寫),架構跟第一版是一樣的
只是加強了不少功能,由於這次是專注在克服前一版未能解決的問題,所以操作介面很簡略
裡面有四個範例給大家參考Test Code1.txt~Test Code4.txt
下面是連結
WinBASIC
https://mega.nz/#!rN41nbxD!IRkxmC60L...sk1pNjvODQa0I8
CBBasic
https://mega.nz/#!7MRz0QKT!e1mEn8_G8...nLAi4qQv2rUhxw

mini 2017-11-22 08:15 PM

要寫X譯器邏輯要很清晰
(魔王是直接在腦子裡設計的嗎? 這樣算是厲害腳色的了~)
如果是用在中小學的邏輯培養課程上
能針對 保留字標出不同色彩
會更好

魔術王子 2017-11-22 08:57 PM

引用:

作者: mini (文章 2371752)
要寫X譯器邏輯要很清晰
(魔王是直接在腦子裡設計的嗎? 這樣算是厲害腳色的了~)
如果是用在中小學的邏輯培養課程上
能針對 保留字標出不同色彩
會更好

謝謝
當有初步構想時會先隨意設計出來(免得靈感消失)
然後邊玩邊思索如何改進不滿意的地方
就這樣慢慢進化到目前的模樣

程式碼用的是TMemo元件,此元件只能顯示正常文字
輸出結果是用TRich元件,此元件就可以使用rtf的格式
我對特殊標字沒什麼興趣,也沒這方面資料,有興趣的朋友,可以從LIST按鈕著手
LIST是將TMemo的內容顯示到TRich上,這時就可以順便處理

魔術王子 2017-11-22 09:53 PM

引用:

5 C=0
10 PRINT "A=30":A=30
20 PRINT "B=70":B=70
30 PRINT "A+B=";A+B
35 C=C+1
40 S=0
50 FOR I=1 TO 100
60 S=S+I
70 NEXT I
80 PRINT "1+2+3+4+5+...+100=";S
85 IF C=3 THEN PRINT "你想累死我啊!"
90 SURE "可以結束了嗎?",B
100 IF !B THEN GOTO 10
200 PRINT "Bye~~"

這段程式碼也蠻有趣的:on_15::on_15::on_15:

魔術王子 2017-11-23 07:17 PM

引用:

作者: 魔術王子 (文章 2371753)
引用:

作者: mini (文章 2371752)
要寫X譯器邏輯要很清晰
(魔王是直接在腦子裡設計的嗎? 這樣算是厲害腳色的了~)
如果是用在中小學的邏輯培養課程上
能針對 保留字標出不同色彩
會更好

謝謝
當有初步構想時會先隨意設計出來(免得靈感消失)
然後邊玩邊思索如何改進不滿意的地方
就這樣慢慢進化到目前的模樣

程式碼用的是TMemo元件,此元件只能顯示正常文字
輸出結果是用TRich元件,此元件就可以使用rtf的格式
我對特殊標字沒什麼興趣,也沒這方面資料,有興趣的朋友,可以從LIST按鈕著手
LIST是將TMemo的內容顯示到TRich上,這時就可以順便處理

原本以為TRich元件要做特殊功能會很麻煩,看了書後,覺得很簡單,所以加入了
只是利用TRich的Findtext有些問題,詳細都寫在程式碼的remark
另外還加入了一些直覺式的結果,在資料夾內有一個Show time1.jpg的圖片
有稍微展示成果,下面是連結(上面連結也修正了)
https://mega.nz/#!rN41nbxD!IRkxmC60L...sk1pNjvODQa0I8
接下來想要克服多重回圈的問題,所以還會再分享

mini 2017-11-23 09:51 PM

多重迴圈 解析 語法
有可能會牽扯到
遞迴 與 推疊
前陣子研究一個排列組合法
當時就用到 遞迴函式
因為太久沒用過
害腦子混了好久才寫出來

之前是參考別人的多重迴圈
想說把它解析一下應該就可以
但結果就此陷入好幾天的邏輯錯亂
後來一直用跑除錯方式才改出來
結果
遞迴函式才沒幾行(簡簡單單的說)
一個簡單的經驗(設計概念)提供一下

1.函式開頭要有個結束條件 (必須放在開頭)
比如
If Lv=0 Then
...
Exit Sub
End If

2.再來接著的就是寫一個單一迴圈, 裡面有個呼叫自己的式子
比如
For i=a To N
...
呼叫自己()
...
Next

3.重點是 呼叫自己()使用的引數 要清楚了解 那些必須是傳址 那些是傳值就好 (盡量避免用全域變數設計)

只要先把這三個要點先匡出來
邏輯就會簡單多了

魔術王子 2017-11-24 06:31 AM

引用:

作者: mini (文章 2371765)
多重迴圈 解析 語法
有可能會牽扯到
遞迴 與 推疊
前陣子研究一個排列組合法
當時就用到 遞迴函式
因為太久沒用過
害腦子混了好久才寫出來

之前是參考別人的多重迴圈
想說把它解析一下應該就可以
但結果就此陷入好幾天的邏輯錯亂
後來一直用跑除錯方式才改出來
結果
遞迴函式才沒幾行(簡簡單單的說)
一個簡單的經驗(設計概念)提供一下

1.函式開頭要有個結束條件 (必須放在開頭)
比如
If Lv=0 Then
...
Exit Sub
End If

2.再來接著的就是寫一個單一迴圈, 裡面有個呼叫自己的式子
比如
For i=a To N
...
呼叫自己()
...
Next

3.重點是 呼叫自己()使用的引數 要清楚了解 那些必須是傳址 那些是傳值就好 (盡量避免用全域變數設計)

只要先把這三個要點先匡出來
邏輯就會簡單多了

我是求好心切的人,所以寫程式都很隨興,很少在引用理論
等到程式寫好與原版仍有一段差距時,才會思考理論原理
這些理論,我真的沒想過,所以會思考看看,謝謝

魔術王子 2017-11-24 07:34 PM

感謝mini版主提供的設計經驗
藉由堆疊的概念小弟終於將迴圈寫出來了
而且成功的執行了九九乘法表的程式執行
下面連結,也做了不少的修正
https://mega.nz/#!7MRz0QKT!e1mEn8_G8...nLAi4qQv2rUhxw
執行九九乘法表是設計這個程式最終的挑戰目標(因為這是我學BASIC第一個寫的程式),所以程式就暫時告一個段落了
不過距離接近"BASIC"的功能仍遙不可及,未來有機會還是會繼續挑戰的

mini 2017-11-25 10:20 AM

問個有點突兀的話
這個作品該怎麼玩 ??

魔術王子 2017-11-25 11:19 AM

引用:

作者: mini (文章 2371777)
問個有點突兀的話
這個作品該怎麼玩 ??

直接按「RUN」就可以執行九九乘法表
或到「偵錯」,自行設計,或按「LOAD」載入檔案「test code1.txt」
功能都改在畫面下面


所有時間均為台北時間。現在的時間是 05:20 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2019, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1