史萊姆論壇

返回   史萊姆論壇 > 綜合討論二區 > 生活話題、日常閒聊、喇勒唬爛灌水區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』


發文 回覆
 
主題工具 顯示模式
舊 2017-06-11, 11:34 PM   #1
魔術王子
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
Talking 灌水 - 回味一下Basic吧

其實這又是一篇很怪異的發文
多怪異呢
看下去就知道啦
相信有很多曾經玩過DOS的人一定接觸過Basic
我覺得那是我玩電腦的時光中,最快樂的時光
就算是現在的系統多強大多好用,就因為過於強大好用,用起來反而覺得綁手綁腳的
最後還是懷念直譯式的Basic
曾經透過虛擬機器來回味,可是仍覺得太過於麻煩
因為我想要玩Basic的操作環境,卻又希望能有Windows般的控制環境
最後就突發奇想的想自己用C++ Builder設計一個
我的做法很簡單
在新表單上放一個Rich的元件,這元件的功能就類似記事本,但比記事本強大,所以其實是Windwos附屬應用程式裡的Wordpad(因為大家比較常用記事本,所以先講記事本,讓大家對原本功能有點印象)
接著放兩個ListBox元件一個存放變數名稱,一個存放變數值
當程式指令下達A=10時
程式會先搜尋ListBox的項目,看是否有這個變數值若有,就改變值
引用:
_for (int i=0 ; i<=ListBox1->Items->Count-1 ; i++)
__if (ListBox1->Items->Strings[i]==v1) {
___p=i;
___ListBox2->Items->Strings[p]=v2;
___break;
__}
若沒有新增值
引用:
_if (p<0){
__ListBox1->Items->Add(v1);
__ListBox2->Items->Add(v2);
__p=ListBox1->Items->Count-1;
然後就是最基本的PRINT指令
PRINT必須顯示""中間的文字
引用:
_String v1,v2;
_if(s.Pos("\"")){
__s=s.SubString(s.Pos("\"")+1,s.Length()-s.Pos("\""));
__if(s.Pos("\"")) s=s.SubString(1,s.Length()-1);
_} else {
以及顯示變數值
引用:
__v1=s.SubString(s.Pos(" ")+1,s.Length()).UpperCase();
__for (int i=0 ; i<=ListBox1->Items->Count-1 ; i++) if (ListBox1->Items->Strings[i]==v1) s=ListBox2->Items->Strings[i];
_}
_RichEdit1->Lines->Add(s);
有輸出就一定要有輸入
但利用Rich元件實在很難控制輸入的指令,而且既然是在Windows環境,就該"入境隨俗",利用Windows的資源InputBox
引用:
_if(s.Pos("\"")){
__v1=s.SubString(s.Pos(",")+1,s.Length()).UpperCase();
__s=s.SubString(s.Pos("\"")+1,s.Pos(",")-s.Pos("\"")+1);
__if(s.Pos("\"")) s=s.SubString(1,s.Length()-1);
__v2=InputBox("選擇",s.c_str(),"");
__for (int i=0 ; i<=ListBox1->Items->Count-1 ; i++)
___if (ListBox1->Items->Strings[i]==v1) {
____p=i;
____ListBox2->Items->Strings[p]=v2;
____break;
___}
__if (p<0){
___ListBox1->Items->Add(v1);
___ListBox2->Items->Add(v2);
___p=ListBox1->Items->Count-1;
__}
_}
感謝的沒學過C++ Builder或C++的朋友,很感謝你耐心的看到這裡
實在想不出該發些什麼文了,只好把這個無聊的興趣也跟大家分享
不知大家看了有沒有什麼想法
__________________
『唸金母心咒:嗡。金母。悉地。吽。』
持此咒者,可免一切瘟疫,一切瘟神抱頭四散。

魔術就是欣賞神奇的效果
如果魔術的秘密被破解了
那魔術就失去欣賞的價值
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
有 2 位會員向 魔術王子 送花:
a471 (2017-06-12),johnss (2017-06-11)
感謝您發表一篇好文章
舊 2017-06-11, 11:58 PM   #2 (permalink)
長老會員
榮譽勳章
UID - 9349
在線等級: 級別:24 | 在線時長:698小時 | 升級還需:27小時級別:24 | 在線時長:698小時 | 升級還需:27小時級別:24 | 在線時長:698小時 | 升級還需:27小時級別:24 | 在線時長:698小時 | 升級還需:27小時
註冊日期: 2002-12-10
文章: 310
精華: 0
現金: 16362 金幣
資產: 21442 金幣
預設

Visual Basic(VB)會不會比較符合你所需
__________________
史版是一個有人情味的地方
johnss 目前離線  
送花文章: 2905, 收花文章: 156 篇, 收花: 427 次
回覆時引用此帖
有 2 位會員向 johnss 送花:
a471 (2017-06-12),魔術王子 (2017-06-12)
感謝您發表一篇好文章
舊 2017-06-12, 06:47 AM   #3 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

引用:
作者: johnss 查看文章
Visual Basic(VB)會不會比較符合你所需
不會
因為想要 直譯式 的感覺
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
向 魔術王子 送花的會員:
a471 (2017-06-12)
感謝您發表一篇好文章
舊 2017-06-12, 03:57 PM   #4 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時
註冊日期: 2002-12-07
文章: 13249
精華: 0
現金: 26241 金幣
資產: 3024051 金幣
預設


https://voicespice.com/Player.aspx?c...C7DB11&j=52C8B
mini 目前線上  
送花文章: 1999, 收花文章: 7957 篇, 收花: 26749 次
回覆時引用此帖
有 2 位會員向 mini 送花:
a471 (2017-06-12),魔術王子 (2017-06-12)
感謝您發表一篇好文章
舊 2017-06-12, 06:57 PM   #5 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

其實呢小王子也沒有那麼無聊,只設計變數跟輸出/輸入指令,就拿來當做Basic
再來就分享小王子自行設計的判別式IF...THEN...ELSE
引用:
__String v1,v2,v3;
__int p=-1,n1,n2;
__if(s.Pos("=")) {
____v1=s.SubString(s.Pos(" ")+1,s.Pos("=")-s.Pos(" ")-1).UpperCase();
____v3=s.SubString(s.Pos("=")+1,s.UpperCase().Pos("THEN")-s.Pos("=")-2);
____if (v3.Pos("\"")) v3=v3.SubString(2,v3.Length()-2);
____for (int i=0 ; i<=Form2->ListBox1->Items->Count-1 ; i++)
______if (Form2->ListBox1->Items->Strings[i]==v1) {
________p=i;
________v2=Form2->ListBox2->Items->Strings[p];
________break;
______}
____if ((p>=0)&&(v2==v3)){
______if(s.UpperCase().Pos("ELSE")) v1=s.SubString(s.UpperCase().Pos("THEN")+5,s.UpperCase().Pos("ELSE")-s.UpperCase().Pos("THEN")-6); else v1=s.SubString(s.UpperCase().Pos("THEN")+5,s.Length());
______RESOLVE(v1);*
____} else {
______if(s.UpperCase().Pos("ELSE")) {
________v2=s.SubString(s.UpperCase().Pos("ELSE")+5,s.Length()-s.UpperCase().Pos("ELSE")-1);
________RESOLVE(v2);
______}
____}
__} else {
____v1=s.SubString(s.Pos(" ")+1,s.UpperCase().Pos("THEN")-s.Pos(" ")-2).UpperCase();
____if(v1[1]=='!') { v3="False"; v1=v1.SubString(2,v1.Length()); } else v3="True";
____for (int i=0 ; i<=Form2->ListBox1->Items->Count-1 ; i++)
______if (Form2->ListBox1->Items->Strings[i]==v1) {
________p=i;
________v2=Form2->ListBox2->Items->Strings[p];
________break;
______}
____if ((p>=0)&&(v2==v3)){
______if(s.UpperCase().Pos("ELSE")) v1=s.SubString(s.UpperCase().Pos("THEN")+5,s.UpperCase().Pos("ELSE")-s.UpperCase().Pos("THEN")-6); else v1=s.SubString(s.UpperCase().Pos("THEN")+5,s.Length());
______RESOLVE(v1);
____} else {
______if(s.UpperCase().Pos("ELSE")) {
________v2=s.SubString(s.UpperCase().Pos("ELSE")+5,s.Length()-s.UpperCase().Pos("ELSE")-1);
________RESOLVE(v2);
______}
____}
__}
*RESOLVE()是收集所有的指令的函式,以後會介紹
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
舊 2017-06-13, 06:55 AM   #6 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

在思考如何設計這個程式時
小弟有一個感覺,就好像在跟電腦對話一樣
如果沒記錯的話,Basic可以用?來代替PRINT指令
所以如果要BASIC幫你運算,除了輸入PRINT 1+2之外,也可以輸入? 1+2
不過現在這些產品已經都走向商業化了,大概也沒機會體驗這種感覺了
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
向 魔術王子 送花的會員:
a471 (2017-06-13)
感謝您發表一篇好文章
舊 2017-06-13, 08:04 PM   #7 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

背死渴 ...

想當年 ... 一開使接觸學習,可不像現在這樣有老師解說指令作用或是程式流程 ...

而是 ... 背程式 ... 背程式 ... 背程式 .... 打字 ... 打字 ... 打字 ...

記憶力好兼打字快的人多吃香啊 ...

此帖於 2017-06-13 08:19 PM 被 getter 編輯.
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
向 getter 送花的會員:
a471 (2017-06-14)
感謝您發表一篇好文章
舊 2017-06-13, 10:20 PM   #8 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

引用:
作者: getter 查看文章
背死渴 ...

想當年 ... 一開使接觸學習,可不像現在這樣有老師解說指令作用或是程式流程 ...

而是 ... 背程式 ... 背程式 ... 背程式 .... 打字 ... 打字 ... 打字 ...

記憶力好兼打字快的人多吃香啊 ...
記得那段時光,本來只寫一段小小的小程式,然後邊玩,腦筋邊浮出無數的靈感
就邊玩邊改,結果原本才十行不到,最後改到成快一百行
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
向 魔術王子 送花的會員:
a471 (2017-06-14)
感謝您發表一篇好文章
舊 2017-06-13, 10:25 PM   #9 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

這是FOR的程式
引用:
__String ls;
__ls=s.SubString(s.Pos(" ")+1,3);
__SET(ls);
__s=s.SubString(s.UpperCase().Pos("TO"),s.Length());
__Tag_Num=s.SubString(s.Pos(" ")+1,s.Length()).ToInt();
NEXT
引用:
__String v1=s.SubString(s.Pos(" ")+1,s.Length()).UpperCase();
__for (int i=0 ; i<=Form2->ListBox1->Items->Count-1 ; i++) if (Form2->ListBox1->Items->Strings[i]==v1) s=Form2->ListBox2->Items->Strings[i];
__int n=s.ToInt();
__if (n==Tag_Num) {
__} else {
____n=n++;
____v1=v1+"="+n;
____SET(v1);
____for(int i=0;i<=Form2->RichEdit1->Lines->Count;i++){
______s=Form2->RichEdit1->Lines->Strings[i];
______if (s.UpperCase().Pos("FOR")) { Proc_No=i; break; }
____}
__}
GOTO
引用:
__String s1;
__s=s.SubString(s.Pos(" ")+1,s.Length());
__for(int i=0;i<=Form2->RichEdit1->Lines->Count;i++){
____s1=Form2->RichEdit1->Lines->Strings[i];
____s1=s1.SubString(1,s1.Pos(" ")-1);
____if (s1==s) { Proc_No=i-1; break; }
__}
ON ... GOTO
引用:
__String s1,v1,v2;
__v1=s.SubString(4,1);
__for (int i=0 ; i<=Form2->ListBox1->Items->Count-1 ; i++) if (Form2->ListBox1->Items->Strings[i]==v1) v2=Form2->ListBox2->Items->Strings[i];
__s=s.SubString(11,s.Length())+",over";
__int i=1;
__while(1){
____if (i==v2.ToInt()) {
______if (s.Pos(",")) s=s.SubString(1,s.Pos(",")-1);
______break;
____} else {
______if (s.Pos(",")) s=s.SubString(s.Pos(",")+1,s.Length()); else break;
____}
____i++;
__}
__if (s!="over") {
____for(int i=0;i<=Form2->RichEdit1->Lines->Count;i++){
______s1=Form2->RichEdit1->Lines->Strings[i];
______s1=s1.SubString(1,s1.Pos(" ")-1);
______if (s1==s) { Proc_No=i-1; break; }
____}
__}
下面是這個小程式,分享給大家玩玩,第一次用MEGA空間分享,不知會不會有問題
https://mega.nz/#!fMAQ3aiI!OL8Lx0A6r...PIR_ZLtngYcghw

https://mega.nz/#!KcxhVBrT!OmEE-sDWL...rn8y0atlZOySBY

此帖於 2017-06-13 10:43 PM 被 魔術王子 編輯.
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
向 魔術王子 送花的會員:
a471 (2017-06-14)
感謝您發表一篇好文章
舊 2017-06-14, 02:47 PM   #10 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時級別:96 | 在線時長:9665小時 | 升級還需:132小時
註冊日期: 2002-12-07
文章: 13249
精華: 0
現金: 26241 金幣
資產: 3024051 金幣
預設

原來是在實作 basic直譯器
可以做一個中文直譯器
這樣可以給小學生玩(賣給安親班賺一筆
例:
「錢包」<有7>元
<狀況1>爸爸<每1>天給10元<共6>天
所以「錢包」每次<加10>元
<狀況1完>
<告知>我的錢包擁有「錢包」元

「」裝變數
<> 裝識別字,及阿拉伯數字

「錢包」<有7>元
相當於「錢包」=7

<狀況1>爸爸<每1>天給10元<共6>天
相當於1 To 6 Step 1

所以「錢包」每次<加10>元
相當於「錢包」=「錢包」+10

沒有被<>及「」所包住的字是註解 可有可無
如行首是<告知>
則列印出來
mini 目前線上  
送花文章: 1999, 收花文章: 7957 篇, 收花: 26749 次
回覆時引用此帖
有 2 位會員向 mini 送花:
a471 (2017-06-14),魔術王子 (2017-06-14)
感謝您發表一篇好文章
舊 2017-06-14, 09:37 PM   #11 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:1985小時 | 升級還需:36小時級別:42 | 在線時長:1985小時 | 升級還需:36小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 2945
精華: 0
現金: 14765 金幣
資產: 2678395 金幣
預設

引用:
作者: mini 查看文章
原來是在實作 basic直譯器
可以做一個中文直譯器
這樣可以給小學生玩(賣給安親班賺一筆
例:
「錢包」<有7>元
<狀況1>爸爸<每1>天給10元<共6>天
所以「錢包」每次<加10>元
<狀況1完>
<告知>我的錢包擁有「錢包」元

「」裝變數
<> 裝識別字,及阿拉伯數字

「錢包」<有7>元
相當於「錢包」=7

<狀況1>爸爸<每1>天給10元<共6>天
相當於1 To 6 Step 1

所以「錢包」每次<加10>元
相當於「錢包」=「錢包」+10

沒有被<>及「」所包住的字是註解 可有可無
如行首是<告知>
則列印出來
雖然程式勉強可以做出類似Basic的程式效果
但小王子仍舊不滿意,只是這已經是自己的極限了
所以分享出來,希望以後有人可以把它設計得更好
魔術王子 目前離線  
送花文章: 1523, 收花文章: 1553 篇, 收花: 3892 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
Visual Basic封裝後安裝程式會認機器 s.h.e. 程式語言討論區 9 2004-09-11 10:03 PM
[找尋]visual basic.net(英文版)的下載點 cell 一般電腦疑難討論區 3 2003-10-03 10:43 AM
有誰知道哪個網站可以下載Visual Basic 6.0中文版 tina007 一般電腦疑難討論區 0 2003-03-18 10:45 PM


所有時間均為台北時間。現在的時間是 08:52 AM


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


SEO by vBSEO 3.6.1