講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所
For Statement 陣列 (Array) Do Statement 第四章 迴圈 For Statement 陣列 (Array) Do Statement
For Statement For 變數=初始值 To 結束值 [Step 間隔] 程式碼 Next [變數] 變數=初始值 For i=1 to 10 Print i Next i 變數>結束值? 是 否 程式碼 For i=1 To 10 Step 2 Print i Next i 變數=變數+間隔 其它程式碼 當間隔為正數時
For Statement(cont’d) For i=12 To 10 Step -2 Print i Next i 變數=初始值 變數<結束值? For i=12 To 0 Step -2 Print i Next i 是 否 程式碼 變數=變數+間隔 For i=1 To 10 Step -2 Print i Next i 其它程式碼 當間隔為負數時
Try It! 寫一個程式會連續印Hello, world 5次 Private Sub Form_Click() Dim i As Integer For i=1 to 5 print “Hello, world” Next i End Sub
巢狀迴圈 For迴圈內還有For迴圈 i=1 j=1 j=2 j=3 i=2 For i=1 to 3 i=3 Print “i=”;i For j=1 to 3 Print “j=”;j Next j Next i
Try It * For i=1 to 5 ** For j=1 to i *** Print “*”; **** Next j ***** Next i
Try It (cont’d) * For i=1 to 5 ** For j=1 to 5-i *** Print “ ”; **** ***** For i=1 to 5 For j=1 to 5-i Print “ ”; Next j For j=1 to i Print “*”; Print Next i
Do…Loop Statement (cont’d) Do While (比較式) 程式碼 Loop Do 程式碼 Loop While (比較式) 程式碼 比較式成立嗎? 是 是 比較式成立嗎? 否 程式碼 否 其它程式碼 其它程式碼 兩種方式 差在那?
Do…Loop Statement (cont’d) 算1+2+3…+100 用For迴圈 用Do…Loop迴圈 Dim i, counter As Integer i=1 counter=0 Do While (i<=100) counter=counter+i i=i+1 Loop Print counter
Do…Loop Statement (cont’d) 中斷迴圈執行 Exit For Exit Do Dim i, counter As Integer i=1 counter=0 Do While (True) counter=counter+i i=i+1 If (i>100) Then Exit Do End If Loop Print counter
Do…Loop Statement (cont’d) Do While (比較式) 程式碼 Loop Do 程式碼 Loop While (比較式) While (比較式) 程式碼 Wend Do 程式碼 Wend While (比較式)
Do…Until Statement Do Until (比較式) Do 程式碼 程式碼 Loop Loop Until (比較式) 程式碼 比較式成立嗎? 否 否 比較式成立嗎? 是 程式碼 是 其它程式碼 其它程式碼
陣列-Array Dim intScore1 As Integer Dim intScore2 As Integer …… totalScore=intScore1+intScore2+…… 如果有100個學生…
陣列-Array (cont’d) Dim 變數名 ([下限 To]上限) As 型別 Option Base 0 Dim intScore (39) As Integer Dim intScore (1 to 40) As Integer intScore(0) intScore(1) …… intScore(39) intScore(1) intScore(2) …… intScore(40) Option Base 0 Option Base 1
陣列-Array (cont’d) 可以配合For迴圈使用 計算總分 For i=1 to 40 totalScore=totalScore+intScore(i) Next i
多維陣列 Dim intScore([下限1 To] 上限1 ,[下限2 To] 上限2) As 型別 假設每個學生都考了三科 Dim intScore(1 To 40, 1 To 3) As Integer intScore(3,2)=90 Dim intScore(1 To 3, 1 To 3) As Integer
動態調整陣列大小 宣告陣列時,不指定大小 原先資料會消失 Dim intScore() As Integer ReDim intScore(40) 原先資料會消失 使用Preserve Dim intScore() As Integer Redim intScore(4) intScore(4)=20 Print intScore(4) 1.[Redim intScore(4)] 2.[Redim Preserve intScore(4)] 注意: 使用Preserve時,ReDim只能改變最後一個維度的大小
試試看
Project 1 2 3 4 5 6 7 8 9 Hint: ---------------------------- 計算字串長度 1 2 3 4 5 6 7 8 9 ---------------------------- 1| 1 2 3 4 5 6 7 8 9 2| 2 4 6 8 10 12 14 16 18 3| 3 6 9 12 15 18 21 24 27 4| 4 8 12 16 20 24 28 32 36 …… 9| 9 18 27 36 45 54 63 72 81 Hint: 計算字串長度 Len(“test”) 將數字轉換成字串 CStr(Number) Deadline: