1 / 41

Visual Basic 程式設計

Visual Basic 程式設計. 講師:戴志華 hana@ arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所. 第三章 變數、運算子與流程控制. 變數 運算子 流程控制. 變數. 程式執行時用來記錄資料的地方 每個變數對應一塊記憶體空間 各式的變數功能不同 先宣告再使用. 變數型別. 變數型別( cont’d). 變數型別( cont’d). Boolean: test = true 整數 : test = 10 小數 : test = 1.0 日期( Date): test = #12/30/1999#

lori
Download Presentation

Visual Basic 程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 變數型別

  5. 變數型別(cont’d)

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

  7. 宣告變數 • Dim 變數名 [As 型別] • 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! Print VarType(vntVariant) vntVariant=0.01# Print VarType(vntVariant) vntVariant=“test” Print VarType(vntVariant)

  12. Variant(cont’d)

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

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

  15. 變數命名規則(cont’d) • 下列何者正確? • 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() …… End Sub 在模組內宣告 在函示內宣告

  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() Print i End Sub 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() Dim i As Integer i=2 Print i End Sub 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=3.1415926 Const Pi As Single = 3.1415926

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

  25. 變數命名規則-建議(cont’d)

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

  27. 算術運算子 • 先後順序 • ^ > -(負數) > *,/ > \ > Mod > +,- > &

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

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

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

  31. IF Statement(cont’d) 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

  33. 邏輯運算子 • 運算結果為True或False

  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

  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 Print “夏天” Case 7 to 9 Print “秋天” Case 10 to 12 Print “冬天” Case Else Print “打錯了” End Select

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

More Related