Presentation is loading. Please wait.

Presentation is loading. Please wait.

講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所.

Similar presentations


Presentation on theme: "講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所."— Presentation transcript:

1 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所
Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所

2 第三章 變數、運算子與流程控制 變數 運算子 流程控制

3 變數 程式執行時用來記錄資料的地方 每個變數對應一塊記憶體空間 各式的變數功能不同 先宣告再使用

4 變數型別 型別 使用空間大小(byte) 範圍 代碼 Byte 1 0~255 Boolean 2 True, False Integer
-32768~32767 % Long 4 ~ & Currency 8 …… @

5 變數型別(cont’d) 型別 使用空間大小(byte) 範圍 代碼 Single 4 ! Double 8 # Date 100/1/1~
E38 ~ E-45, E-45 ~ E38 ! Double 8 # Date 100/1/1~ 9999/12/31 String 不固定長度:2*字串長度 固定長度 $

6 變數型別(cont’d) Boolean: test = true 整數: test = 10 小數: test = 1.0
日期(Date): test = #12/30/1999# 字串(String): test = “這是字串”

7 宣告變數 Dim 變數名 [As 型別] 使用型別代碼: Dim 變數名[代碼] 好習慣: 宣告在最上面
Ex1. Dim MyName As String Ex2. Dim MyName As String, MyAge As Integer What about “Dim MyName,MyAge As Interger” ? 使用型別代碼: Dim 變數名[代碼] Ex3. Dim intMyAge% 好習慣: 宣告在最上面

8 變數型別(cont’d) 預設型別:Variant 數值型態:16 bytes 字串型態長度:22+字串長度 bytes

9 隱含宣告 VB可以直接使用未宣告的變數 VB會自動宣告成variant (原Basic的特性) 造成維護不便 打錯字 …^_^ 取消隱含宣告

10 隱含宣告(cont’d) 注意: 只對之後增加 的模組有效

11 Variant 不定型別 用VarType測試 Dim vntVariant vntVariant=0.01
Print VarType(vntVariant) vntVariant=0.01! vntVariant=0.01# vntVariant=“test”

12 Variant(cont’d) 型別 範例 常數 傳回值 Integer 10% vbInteger 2 Long 10& vbLong 3
Single 0.1! vbSingle 4 Double 0.1# vbDouble 5 0.1 String “test” vbString 8 Date #8/8/2000# vbDate 7

13 Variant(cont’d) vbEmpty (0) 型別轉換: 變數未初始化
CBool, CByte, CInt, CLng, CSng, CDbl…… intVariable=CInt(vntVariable) 由範圍大的型別轉為範小的型別時,不能超過範圍小的型別的範圍 Dim vntTest Print VarType(vntTest)

14 變數命名規則 以字母開頭(可用中文字) 僅能由字母、數字及底線組成 變數名長度不能超過255字元 不可使用一些特殊符號(型態宣告字元)和句點
不建議使用 以字母開頭(可用中文字) 僅能由字母、數字及底線組成 變數名長度不能超過255字元 不可使用一些特殊符號(型態宣告字元)和句點 ex. %,&,!,#,@,$ 不能使用關鍵字 Dim, As…… 在同一個命告範圍(scope)內不得使用相同名稱

15 變數命名規則(cont’d) 下列何者正確? Try It!
intMyAgem, 38Girl, intMy.Age, 時間, Print, My_課本 Try It! 改改看,看看 VB如何處理

16 變數命名規則(cont’d) 在同一個命告範圍(scope)內不得使用相同名稱 Option Explicit
Dim i As Integer 1.[Dim i As Integer] Private Sub Command1_Click() 2.[Dim i As Integer] End Sub Private Sub Command2_Click() …… 在模組內宣告 在函示內宣告

17 變數的有效範圍和生命週期 區域變數 全域變數 靜態變數 在函式內部使用Dim或Private宣告的變數 只有目前函式看的到
函式執行結束, 區域變數值會跟著結束消失(靜態變數例外) 全域變數 在模組或form內部使用Dim宣告的變數 公用 Public MyCount As Interger 私用 Private MyCount As Interger 靜態變數 Static MyCount as Integer 函數執行結束, 區域變數值會保留

18 變數的有效範圍和生命週期 (cont’d)
[Public|Private|Dim|Static] 變數名 As 型別 在函式內不能用Public宣告 在函式內宣告的變數,只在該函式內有效 Ex1. Option Explicit Private Sub Command1_Click() Dim i As Integer Print i End Sub Private Sub Command2_Click() Error!!

19 變數的有效範圍和生命週期 (cont’d)
Ex2. Option Explicit Private Sub Command1_Click() Dim i As Integer i=1 Print i End Sub Private Sub Command2_Click() i=2 Ok!!

20 變數的有效範圍 (cont’d) Dim a As Integer Private b As Integer
Public c As Integer Private Sub Command1_Click() Print a Print b Print c End Sub Private Sub Command2_Click() 1.[Print Form1.a] 2.[Print Form1.b] 3.[Print Form1.c] End Sub Form1 Form2

21 變數的有效範圍 (cont’d) 模組一 模組二 Public Public Private Private Private Private
比較命名範圍與有效範圍的不同處

22 靜態變數 靜態變數 Static [Public|Private] 變數名…… 用於函式內
Private Sub Form1_Click() 1.[Dim ClickCount As Integer] 2.[Static ClickCount As Integer] ClickCount=ClickCount+1 Print ClickCount End Sub Try It!

23 常數 常數=不變的變數 如何避免不小心改到? [Public|Private] Const 變數名 = 初始值
Dim Pi As Single Pi= Const Pi As Single =

24 變數命名規則-建議 範圍: 型態: g:在模組中以Public宣告 m:在模組中以Dim或Private宣告
資料型態 變數名稱 範圍: g:在模組中以Public宣告 m:在模組中以Dim或Private宣告 [無]:在函式中以Dim或Private宣告 型態: 以三個字母代表型態

25 變數命名規則-建議(cont’d) 資料型態 縮寫 Byte byt Single sng Boolean bln Double dbl
Integer int Decimal dec Long lng Date dat Currency cur String str

26 變數命名規則-建議(cont’d) 例: 變數取名不一定要拘泥於規定,前後一致即可 多人開發:決定變數取名方式 g_intMyAge
m_strMyName intMyMoney 變數取名不一定要拘泥於規定,前後一致即可 多人開發:決定變數取名方式

27 算術運算子 先後順序 符號 說明 + 相加 \ 整數除法 - 相減 Mod 餘數 * 相乘 ^ 指數 / 相除 & 字串相接 負數

28 運算式練習 ax2+bx+c=0

29 IF Statement If (比較式) Then 程式碼 End If 是 Print…… 否 例:
Year>2000? Print…… 例: If (year>2000) Then Print “21世紀” End If 其它程式

30 IF Statement(cont’d) If (比較式) Then 程式碼1 Else 程式碼2 End If 是 Print…… 否
Year>2000? Print…… 例: If (year>2000) Then Print “21世紀” Else Print “不是21世紀” End If Print… 其它程式

31 IF Statement(cont’d) If (比較式1) Then 程式碼1 ElseIf (比較式2) 是 程式碼2 Else 否
Year>2000? If (比較式1) Then 程式碼1 ElseIf (比較式2) 程式碼2 Else 程式碼3 End If Print…… Year=2000? 例: If (year>2000) Then Print “21世紀” ElseIf (year=2000) Then Print “千禧年 Else Print “都不是” End If Print…… Print…… 其它程式

32 比較運算子 運算結果為True或False < 小於 = 等於 <= 小於等於 <> 不等於 > 大於 Is
>= 大於等於 Like 像是

33 邏輯運算子 運算結果為True或False Not 不是 Not A And A And B Or A Or B

34 比較運算子與邏輯運算子 複合比較式 一般而言,比較運算子的優先順序大於邏輯運算子 試試看
Ex. (a>5 And b<4 Or Not c) 一般而言,比較運算子的優先順序大於邏輯運算子 試試看 Private Sub Form_Click() If (True And True) Then Print “True” Else Print “False” End If End Sub And T F

35 Example 1. (8 > 3) And ("a" = "b") False
2. (8 > 3) Or ("a" = "b") True 3. Not (8 > 3) False 年齡 20 ≦ age < 60 之間的條件式: (age >= 20) And (age < 60)

36 Select Case Statement Select Case Day Case 1 …… Case 2 Case 3 Case 4
Case Else End Select

37 Select Case Statement(cont’d)
Select Case Day Case 1 ‘If (Day=1) …… Case 2,3 ‘ElseIf (Day=2 Or Day=3) Case 4 to 10 ‘ElseIf (Day>=4 And Day<=10) Case Is>10 ‘ElseIf (Day>10) Case Else ‘Else End Select

38 季節判斷

39 使用If If (Month>=1 And Month <=3) Then Print “春天”
ElseIf (Month>=4 And Month <=6) Then Print “夏天” ElseIf (Month>=7 And Month <=9) Then Print “秋天” ElseIf (Month>=10 And Month <=12) Then Print “冬天” Else Print “打錯了” End If

40 使用Select Case Select Case Month Case 1 to 3 Print “春天” Case 4 to 6
Case Else Print “打錯了” End Select

41 Try It! 輸入月分,傳回當月的天數 1月31天 2月28天 …… 7月31天 8月31天 使用If與Select Case


Download ppt "講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所."

Similar presentations


Ads by Google