作者fumizuki (小獅子)
看板Visual_Basic
標題Re: [VB6 ] 計算機
時間Fri Jun 10 19:46:44 2005
※ 引述《TrueFeeling (昨日之死)》之銘言:
: 首先要謝謝你拔刀相助,不然我真的不知道該怎麼辦^^
: 我還是很多地方不懂想問問^^
: ※ 引述《fumizuki (小獅子)》之銘言:
: : 有學過 Goto 嗎?
: : GoSub 跟 Goto 一樣,無條件跳到指定行,但 GoSub 可以用 Return 回來。
: 嗯,那這個我懂了
: : 函數名稱=運算式 的意思是傳回一個值。
: : 這個函數(Eval)的流程是
: : 把 s 運算式拆解並運算,先找加號,再找減號,再找乘號,再找除號,
: : 當四個運算子都被消掉後,只剩下數值,直接傳回。 → Eval = Val(s)
: 我看書上說的是這種:
: Function F(X,Y,Z)
: F=X^2+3*Y+Z*X
傳回 X的2次方、3Y、XZ 的和
: End Function
: ==
: 呼叫:
: V=F(X,Y,Z)
V=上面那個算出來的結果...
: print V
: ==
: 所以,我還是看不懂orz
: : 例如:(以下紅色的數字代表第幾次執行 Eval,黃色代表傳回值)
: : 原式
: : 00 → "3 + 4 + 5 * 6 - 7"
: : 去除所有空白 Replace(s, " ", "")
: 嗯,這部分有3個問題:
: 1.當按鈕按下去後,Text1.Text顯示的字串如何傳到程式碼?
: (因為我沒有看到Function中有和Text1.Text的轉換關係)
Print Eval(Text1.Text)
: 2.為何字串中間會有空白?
: (因為數入Text1.Text的時候並沒有空白)
假設一定會有空白...這樣程式比較「活」,不會因為有空白就不能計算了...
: 3.
: Static c As Integer: c = c + 1
: If c = 1 Then s = Replace(s, " ", "")
: 這段程式碼中的c作用是什麼?
進入函數加一,離開減一;第一次執行才做 Replace 的動作。
: : 01 → "3+4+5*6-7"
: : 找加號,將此運算式分割成前後兩組運算式
: : 兩運算式相加 Eval(op1) + Eval(op2)
: 這部分
: 1.分成兩組運算式後,他們的資料型別(DataType)是?
沒指定型態的話,預設是 Variant ,不固定的型態,由實際資料內容決定。
: (因為如果還是字串的話,再用+連結好像又回到原本的字串了
我給它字串,它就是字串;我給它整數,它就是整數。
字串加數字等於字串,數字加數字等於數字,字串加字串還是字串。
因為 Eval 最後傳回值一定是個數值,所以不會有型態的問題。
(傳入的值一定是字串)
--
VB 程式設計 倉木麻衣 PTT 星爺板 行列輸入法
======================================================
Visual_Basic MaiKuraki Stephen Array
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.58.156.43