300 likes | 542 Views
程式語言 -Visual Basic. 重覆結構. 重覆結構. 重覆結構俗稱迴圈( Loop ) 主要功能:重複執行指定動作,達到累積運算效果 可分為 計次迴圈:程式會依指定次數重複執行 條件迴圈:當符合條件時,重複執行指定程式. 計次迴圈 For……Next. 語法 For 計次變數 = 初始值 To 終止值 [Step 間隔值 ] 程式區段 Next 計次變數 剛開始執行迴圈時,會將初始值指定給計次變數 當計次變數值介於初始值和終止值,則執行 程式區段 ,然後遇到 Next ,將計次變數加上間隔值,再重新回到 For… 執行
E N D
程式語言-Visual Basic 重覆結構
重覆結構 • 重覆結構俗稱迴圈(Loop) • 主要功能:重複執行指定動作,達到累積運算效果 • 可分為 • 計次迴圈:程式會依指定次數重複執行 • 條件迴圈:當符合條件時,重複執行指定程式
計次迴圈 For……Next • 語法For 計次變數=初始值 To 終止值 [Step 間隔值]程式區段Next 計次變數 • 剛開始執行迴圈時,會將初始值指定給計次變數 • 當計次變數值介於初始值和終止值,則執行程式區段,然後遇到Next,將計次變數加上間隔值,再重新回到For…執行 • 若計次變數超過終止值,則跳離迴圈
計次迴圈注意事項 • [Step 間隔值] 表示可省略,則預設間隔值為1 • Next 計次變數 也可簡寫成Next • 間隔值可以為正數,也可以為負數,但須注意要讓計次變數最終可以超過終止值,否則將行成無窮迴圈 • 間隔值為正數時,終止值要大於初始值 • 間隔值為負數時,終止值要小於初始值
範例1 • 計算1到100的總和Private Sub Button1_Click(ByVal …. Dim i, s As Integer For i = 1 To 100 s = s + i Next i Label1.Text = s End Sub
練習1 • 請設計計算1到100的奇數和的程式
練習2 • 請設計一程式,由使用者輸入一數字,然後計算出1到該數字的偶數和,若輸入數字為錯誤(小於1),則顯示錯誤訊息
格式化輸出 • vbNewLine、vbCrLf常數 • vbNewLine與vbCrLf是VB提供用來進行強迫換行的字元常數 • 當程式執行到vbNewLine與vbCrLf時,便會將插入點移至下一行的最前面,進行換行 測試: TextBox1.Text=“GoodMorning!” & vbNewLine & “早安!”
vbTab常數 vbTab的作用就相當於文書處理軟體中的Tab 可用來進行編排時的定位設定 當執行到vbTab時,便會將插入點移至下一個定位點顯示,每個定位點間可以容納8個字元。 測試 TextBox1.Text=“漢堡”&vbTab & “薯條” & vbTab & “可樂”
範例2 Private Sub Form1_Load(ByVal sender As ……… Dim i, j As Integer Dim a As String For i = 1 To 4 For j = 1 To 5 a &= “*” Next a &= vbNewLine Next MsgBox(a) End Sub 利用For 迴圈印出下圖 ***** ***** ***** *****
練習3 請改寫範例2成為下列圖案 * ** *** ****
練習4 請改寫範例2成為下列圖案 * ** *** ****
練習5 請改寫範例2成為下列圖案 * *** ***** *******
練習6 請利用for 迴圈印出下列之九九乘法表 1*1=1 2*1=2 3*1=3 ………….9*1=9 1*2=2 2*2=4 3*2=6 ………….9*2=18 | | | | 1*9=9 2*9=18 3*9=27 ………….9*9=81
練習7 請將練習6之九九乘法表改為九宮格式 1*1=1 2*1=2 3*1=3 | | | 1*9=0 2*9=18 3*9=27 4*1=4 5*1=5 6*1=6 | | | 4*9=36 5*9=45 6*9=54 7*1=7 8*1=8 9*1=9 | | | 7*9=63 8*9=72 9*9=81
條件迴圈 • 前測迴圈 Do [While | Until ] 條件式 程式區段Loop • 後測迴圈:至少執行一次 Do 程式區段 Loop [While | Until] 條件式 While 條件 True 程式區段 False Loop Loop之後的程式
範例3-計算2的N次方 • Private Sub Button1_Click(ByVal …. Dim i, p ,N As Integer i=1 : p=1 N=Val(TextBox1.Text) Do While i <= N p = p * 2 i = i + 1 Loop Label1.Text=“2的” & N & “次方等於” & pEnd Sub
範例4-模擬四星彩開獎 Private Sub Button1_Click(ByVal …… Dim N, i As Integer N = 0 i = 1 Randomize() Do While i <= 4 N = Int(Rnd() * 10) Select Case i Case 1 : TextBox1.Text = N Case 2 : TextBox2.Text = N Case 3 : TextBox3.Text = N Case 4 : TextBox4.Text = N End Select i = i + 1 Loop End Sub
練習8 • 請利用Do …Loop Until迴圈設計猜數字遊戲 • 請使用輸入函數InputBox()要求使用者輸入數字 • 亂數產生一1~100之間的數字 a • 若輸入的數字大於產生的亂數,使用輸出函數MsgBox()顯示「太大了」,反之則顯示「太小了」,若一樣則顯示「答對了」。並顯示共猜了幾次 • InputBox()簡單用法: • 存放資料之變數=InputBox(“說明文字”) • 例 a = InputBox(“請輸入一個數字”)
範例5 利用輾轉相除法,計算兩數之最大公因數 說明:輾轉相除法就的原理就是(a,b)=(b,r) r為a除以b的餘數。當a能夠被b除盡 即r為0時,b即為最大公因數 舉例:(48,33)=>(33,15)=>(15,3)=>(3,0)
Dim a, b, r As Integer a = Val(TextBox1.Text) b = Val(TextBox2.Text) Do While b > 0 r = a Mod b a = b b = r Debug.Print("a=" & a & "b=" & b) Loop Label3.Text = "最大公因數為" & a *Debug.Print為及時運算視窗偵錯用指令
陣列的使用 • 「陣列」的基本原理是來自數學中的「矩陣」。 • 所謂「陣列」就是一群資料型別相同的變數,在主記憶體中能擁有連續存放空間的集合。 • 例如:我們想記錄50位學生的成績,便宣告一個score(49)的整數陣列,其中score是陣列名稱。此時在主記憶體中會保留50個連續位置來存放score(0)~score(49)等陣列元素,我們可以利用來存放50位同學成績。
「陣列」中每個元素相當於一個變數,在「陣列」中存取變數只需要指定索引指標就可以。通常為方便程式處理,會以座號當作陣列的索引指標,但因為索引指標是由0開始,所以要記得減1。「陣列」中每個元素相當於一個變數,在「陣列」中存取變數只需要指定索引指標就可以。通常為方便程式處理,會以座號當作陣列的索引指標,但因為索引指標是由0開始,所以要記得減1。 • 由於陣列的索引指標也可以使用變數當索引指標(如score(x)),因此配合計數For廻圈,不但可以免除為大量變數命名的困擾,而且使得程式碼的撰寫將更簡潔而有效率。
陣列宣告 • 語法:Dim arrayname(index1 [, index2 […..]]) As type • 功能:宣告一維(二維…)陣列並指定陣列所存取的資料型別 • 說明 • arrayname:代表陣列名稱,其命名方式和識別字命名一樣。 • index:為索引指標。可為常數、變數或運算式等,只有一個index時稱為「一維陣列」;若有二個index時稱為「二維陣列」;以此類推…。 • index範圍由0 ~ index為止。譬如:Dim a(5) As Integer,可定義出a(0)、a(1)、a(2)、a(3)、a(4)、a(5)共6個元素。
練習9 • 請設計一大樂透開獎程式 • 規則: • 從1~49中選出6個號碼及1個特別號 • 號碼不得重複
練習10 設計一程式,計算兩數值之最小公倍數