4 變數、常數

 

4-1 變數

在程式設計中,變數是一在某一塊記憶體位置中所放的資料,而這個變數(資料)可能會因程式的執行過程,而發生改變。

如同數學中之: y=f(x),x為一自變數、y為應變數、f(x)為一函數。例如:
令 半徑為x、圓周率為pi之圓周長為:
y=f(x)=2*pi*x

很明顯的,若是x的值改變,y的值也會改變。

我們在寫程式時要清楚的告訴程式,誰是變數?又變數是何種資料型別(Ch4-3)?為何要宣告呢?因為我們若不宣告或是宣告錯誤,會讓程式不知變數的資料型別,導致執行時的數值錯誤。

這個步驟叫做宣告變數,其語法如下:

Dim 變數名稱 As 資料型別

如以計算圓周長為例,我們可以宣告x、y為:

Dim x As Single
Dim y As Single

 

4-2 常數

在程式的執行過程中不會被改變的稱為常數。同上例之圓周率pi。

我們可以在寫程式時告訴程式某個常數值為何,這個步驟叫做定義常數,其語法如下:

Const 常數名稱 As 資料型別=常數內容

如以計算圓周長為例,我們可以定義pi為:

Const pi As Single=3.1415

定義常數的優點為:某些常用而不需要在程式執行過程中改變的值,可在程式的起始定義之(如以上的pi值)。

而不管是變數或是常數,有一些保留字是VB中有特殊定義的(如object,private…等),不可使用。


 

4-3 資料型別

數字類

資料類別 數字類 數字類 數字類 數字類 文字類
資料型別 Integer(整數) Long(長整數) Single(單精準浮點數) Double(雙精準浮點數) String(字串)
型別字元 % & ! # N/A
佔用記憶體 2Bytes 4Bytes 4Bytes 8Bytes 視所使用的字串長度而定
範圍 -32768~32767 -2147483648~2147483647 -3.402823E38~3.402823E38
(註2)
-1.79769373486232E308~
1.79769373486232E308
任何字元(包含數字)
說明 沒有小數部份的整數(註1)。 同Integer但可以有更大範圍的整數。 可以包含小數的數,但精準度有限。 同Single但可以有更大範圍的數。 僅做"文字"使用(註3)。


註1.
若宣告為Integer,但使用者給的變數值含小數時,則以4捨6入,5以雙規則取整數,此規則僅在小數點下僅有一位數時才需要,使用此法的原因為,進位和捨去的機率會一樣大,而不致有4(1、2、3、4)捨5(5、6、7、8、9)入的不公平現象。
即:

取整數前 取整數後  
a.b a if b<=4
a.b a+1 if b>=6
a.b a if b=5, and a=2n , n=0,1,2,3......。
a.b a+1 if b=5, and a=2n+1 , n=0,1,2,3......。


例如:

取整數前 取整數後  
4.4 4 小數位小於等於4,故捨去。
4.6 5 小數位大於等於6,故進位。
4.5 4 小數位等於5,因整數位為數,故小數位捨去。
5.5 6 小數位等於5,因整數位為數,故小數位進位。

註2.
E為科學記號表示法,E為10的指數,如1.034E3=1034

註3.
若將數字宣告成String則有可能會有計算錯誤的問題。

製作程式(ex4_1.exe):

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "宣告變數1"
'''''此行定義Form1的標題,也就是Form1的Text屬性

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
a = 100
'''''先宣告,再給值
Label1.Text = a
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a As Single = 200.44
'''''也可宣告時直接給值,此宣告與以上對a之宣告指定互不影響…why?
Label1.Text = a
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a As Integer = 200.44
'''''錯誤的宣告資料型別會導致執行時的數值錯誤
Label1.Text = a
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim a = 200.44
'''''也可不宣告資料型別,但會導致執行時的效能變低

''''若是要使用文字,則需宣告成string,
Label1.Text = a
End Sub
End Class

ex_p2-14_Integer與Long
ex_p2-17_Single與Double
ex_p2-21字串