計算機 概論 visual basic 程式設計

45
計計計計計 Visual BASIC 計計計計 計計計計計計 計計計 E-Mail: [email protected]

Upload: jenna-gamble

Post on 02-Jan-2016

58 views

Category:

Documents


3 download

DESCRIPTION

計算機 概論 Visual BASIC 程式設計. 德霖技術學院 廖文淵 E-Mail: [email protected]. Chapter 8. 迴圈. 8-1 For...Next 陳述式 8-2 Print 方法 8-3多層迴圈 8-4程式範例. 8-1-1 For...Next 迴圈陳述式. 8-1 For...Next 陳述式. 當我們在設計程式時,若碰到所要解決的問題程式行有其規則性或相似時,可以設計成迴圈結構。 Visual Basic 提供的迴圈指令是 For…Next 和 Do… Loop( 第10章)兩種結構 。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 計算機 概論 Visual BASIC  程式設計

計算機概論Visual BASIC 程式設計

德霖技術學院廖文淵E-Mail: [email protected]

Page 2: 計算機 概論 Visual BASIC  程式設計

迴圈8-1 For...Next 陳述式8-2 Print 方法8-3 多層迴圈8-4 程式範例

Chapter 8

Page 3: 計算機 概論 Visual BASIC  程式設計

8-1 For...Next 陳述式

• 當我們在設計程式時,若碰到所要解決的問題程式行有其規則性或相似時,可以設計成迴圈結構。

• Visual Basic 提供的迴圈指令是 For…Next 和 Do… Loop( 第 10 章 ) 兩種結構 。

• 當程式中某段敘述要重覆執行的次數是可以計數時,可用到計數迴圈 For…Next 陳述句。

• 利用迴圈的索引指標的定義來控制迴圈中的陳述句要執行幾次,且可使用索引指標的資料來計算 。

8-1-1 For...Next 迴圈陳述式

Page 4: 計算機 概論 Visual BASIC  程式設計

語法• 語法 :

– For counter = start To End [Step Step][statements][Exit For][statements]Next [counter]

– For 計數變數 = 起始值 To 終止值 [Step 間隔值 ]陳述式[Exit For]陳述式Next 計數變數

Page 5: 計算機 概論 Visual BASIC  程式設計

語法說明 單元 描述

Counter 必要引數,此為用做迴圈計數器的數值變數,這個變數不能是一個Boolean,也不能是一個陣列元素。通常用 I、J、K、L、M、N代表。

Start 必要引數,計數器的初始值,可以是常數或變數。End 必要引數,計數器的終值,可以是常數、變數或數值運算式。Step 選擇性引數,讓計數器每次改變的間隔值,如果沒有指定,則

Step的預設值為1。可以是正數或負數。Statements 選擇性引數,放在For和Next之間的一行或多行指令。Exit For 強迫離開For Next迴圈。

Page 6: 計算機 概論 Visual BASIC  程式設計

運作說明 • 一進入 For 迴圈,計數變數先等於起始值,「檢查終值條件」是否成立,若成立則開始執行敘述,一直執行到 Next 敘述時又跳回 For 處,此時計數變數等於起始值 + 間隔值,再繼續「檢查終值條件」,以此類推,直到「檢查終值條件」不成立為止。

• 「檢查終值條件」的法則有二– 1. 若間隔值是正數,則 counter<=End 代表條件成立。– 2. 若間隔值是負數,則 counter>=End 代表條件成立。

• 跳出迴圈時,可以利用 Exit For 指令和配合If...Then 來控制。

Page 7: 計算機 概論 Visual BASIC  程式設計

【程式】 CH08-01 密碼檢查程式

– Private Sub Form_Activate()– Rem 輸入三次密碼,若其中一次正確,即離開迴圈– Rem XPASS1 是系統的密碼, XPASS2 是輸入的密碼– XPASS1=”1234” : XFLAG =”False”– For I = 1 To 3– XPASS2=InputBox(“ 請輸入密碼” )– If XPASS1=XPASS2 Then– XFLAG = “True”– Exit For– End If– Next I– If XFLAG = “True” Then– MsgBox “ 密碼正確”– Else– MsgBox “ 密碼不正確”– End If– End Sub

Page 8: 計算機 概論 Visual BASIC  程式設計

8-1-2 For...Next 範例• 【程式】 CH08-02 計算 1 到 10 的總和

– Private Sub Form_Activate( )

– Dim xsum As Integer

– Form1.Font.Size=20

– xsum=0

– For i=1 To 10

– xsum=xsum+i

– Next i

– Print “1+2+3+........+10=” ; xsum

– End Sub

8-1-2 For...Next 範例

Page 9: 計算機 概論 Visual BASIC  程式設計

程式說明 -1• 1. 此段程式碼執行的結果如右圖:• 2. 為了讓輸出的資料字體可以大一點,所以設定 Form1 的字體大小為 20 ,其程式行如下,之後的範例中,若要顯示大一點的字體時,可以加入此行程式:Form1.Font.Size=20

• 3. 此段程式說明如何應用 For...Next 來計算 1+2+......+10 之總和。首先宣告xsum 為整數變數,並令其初值為 0 。

• 4. 程式碼 For i=1 To 10 表示由 i=1 執行到 i=10 ,每次計數變數自動加 1 ,共執行 10 次。由於間隔值為 1 ,故省略Step 。

Page 10: 計算機 概論 Visual BASIC  程式設計

程式說明 -2• 5. 程式碼 xsum=xsum+i 表示將計數變數 i 的值累計至總和 xsum 裡面,故迴圈執行時,會產生下列情形:第 1 圈 xsum=xsum+1=0+1=1( 當 i=1 時,原先 xsum=0)第 2 圈 xsum=xsum+2=1+2=3( 當 i=2 時,原先 xsum=1)第 3 圈 xsum=xsum+3=3+3=6( 當 i=3 時,原先 xsum=3)...第 10 圈 xsum= xsum+10=45+10=55

( 當 i=10 時,原先 xsum=45)

Page 11: 計算機 概論 Visual BASIC  程式設計

For...Next 範例 2 • 【程式】 CH08-03 計算 1 到 100 的奇數和

– Private Sub Form_Activate( )

– Dim xsum As Integer

– Form1.Font.Size=20

– xsum=0

– For i=1 To 100 Step 2

– xsum=xsum + i

– Next i

– Print “1+3+5+........+99=” ; xsum

– End Sub

Page 12: 計算機 概論 Visual BASIC  程式設計

程式說明• 1. 此段程式碼執行的結果如右圖:• 2. 迴圈執行時,會產生下列情形:第 1 圈 xfact=xfact*1=1*1=1第 2 圈 xfact=xfact*2=1*2=2第 3 圈 xfact=xfact*3=2*3=6第 4 圈 xfact=xfact*4=6*4=24第 5 圈 xfact=xfact*5=24*5=120

Page 13: 計算機 概論 Visual BASIC  程式設計

8-2 Print 方法

• Print 是最基本的輸出陳述式 。• Object.Print 陳述式可以在 object( 物件 ) 中顯示資料, object 通常是表單 (Form) 或Debug 。

• 例如之前我們以 Debug.Print 陳述式可在「立即視窗」中顯示資料。

8-2-1 基本輸出 Print

Page 14: 計算機 概論 Visual BASIC  程式設計

語法 & 語法說明 • 語法 :

– object.Print [outputlist]

– object.Print [ 輸出串 ]

• 語法說明 :

– Debug.Print “ 程式名稱 :Print 練習” ‘輸出文字– Debug.Print ‘ 印一空白行– Debug.Print “ 日期 :2002/02/02” ‘ 輸出文字

單元 說明object 必要引數,可以是Form或Debug,Form是指「表單」,Debug是

指「立即視窗」。outputlist 選擇性引數。欲顯示的運算式,可以是一長串,用分隔符號分

( ; ) ( , ) 號 或逗號 隔開,如果忽略會顯示一列空白。

Page 15: 計算機 概論 Visual BASIC  程式設計

outputlist 引數語法說明 • 語法 :

– {Spc(n) | Tab(n)} expression charpos– {Spc(n) | Tab(n)} 運算式 位置控制符號

– Debug.Print Spc(10);“ 程式名稱 :Print 練習”– Debug.Print Tab(10);“ 日期 :2002/02/02”– Debug.Print Tab(10);“ 指令 :Print ”;Spc(2);”Spc ”;– Debug.Print “tab”

單元 說明Spc(n ) 選擇性引數, 使 用此 功能 可插入空白 字元到輸 出 文 字 中 , n代

表空白字元數。Tab(n ) n選擇性引數,用來移動文字插入點到適當行數位置, 代表移動

n行數。如果 省略,則插入點會移到下一個預設顯示區的開頭位置。

expression 選擇性引數,顯示數值運算式或字串運算式。選擇性引數,指定下個字元的插入點位置。有下列三種情況:1. 使用分號( ; )的話,插入點會接在上個字元所顯示地方的後面。2. 使用逗號( , )的話,插入點會移到下個預設位置。3. 省略charpos的話,跳到下一列的起頭位置。

Charpos

Page 16: 計算機 概論 Visual BASIC  程式設計

Print 範例 1 • 【程式】 CH08-05 輸出文字圖形

– Private Sub Form_Activate()– Form1.Font.Size=20– For N=1 To 5– Print string(N*2-1,”$”)– Next N– End Sub

• 【說明】– 1.String 函數是產生指定的符號,語法 String(N,Character)– 2.N=1 時, N*2-1=1 ,輸出 $

N=2 時, N*2-1=3 ,輸出 $$$ N=3 時, N*3-1=5 ,輸出 $$$$$ N=4 時, N*4-1=7 ,輸出 $$$$$$$ N=5 時, N*5-1=9 ,輸出 $$$$$$$$$

Page 17: 計算機 概論 Visual BASIC  程式設計

Spc 函數範例 1 • 【程式】 CH08-06 用 Spc 函數輸出文字圖形

– Private Sub Form_Activate()– Form1.Font.Size=20– For N=1 To 5– Print Spc(6-N) ; String(N*2-1,”$”)– Next N– End Sub

• 【說明】– 1.String 函數是產生指定的符號,語法 String(N,Character)– 2.N=1 時, N*2-1=1 ,空 5 格再輸出,即 $

N=2 時, N*2-1=3 ,空 4 格再輸出,即 $$$ N=3 時, N*3-1=5 ,空 3 格再輸出,即 $$$$$ N=4 時, N*4-1=7 ,空 2 格再輸出,即 $$$$$$$ N=5 時, N*5-1=9 ,空 1 格再輸出,即 $$$$$$$$$

Page 18: 計算機 概論 Visual BASIC  程式設計

Tab 函數範例 1 • 【程式】 CH08-07 且用 Tab 排列 N! 的值

– Rem 計算 N! 的值, N!=N*(N-1)*……*3*2*1 ,且用 Tab 排列– Private Sub Form_Activate()– Form1.Font.Size=20– xfact=1:n=5 ‘ 注意 XFACT 的起始值是 1– Print Tab(10);”i”;Tab(20);;”i!”– Print Tab(9);”---”;Tab(19);;”------”– For i=1 To n– xfact=xfact*i– Print Tab(9);i;Tab(20);;xfact– Next i– End Sub

Page 19: 計算機 概論 Visual BASIC  程式設計

Tab 函數範例 1 • 【說明】

– 1. 此段程式碼執行的結果如右圖:– 2. 迴圈執行時,會產生下列情形:第 1 圈 xfact=xfact*1=1*1=1第 2 圈 xfact=xfact*2=1*2=2第 3 圈 xfact=xfact*3=2*3=6第 4 圈 xfact=xfact*4=6*4=24第 5 圈 xfact=xfact*5=24*5=120

Page 20: 計算機 概論 Visual BASIC  程式設計

8-2-2 Space 函數• Space 函數可以傳回特定數目的空格,通常和字串合用 。

• 語法 :– Space(n)

• 運作說明 :– n 是必要引數, n 是為我們想要的空格數。一般用來和字串結合使用。

8-2-2 Space 函數

Page 21: 計算機 概論 Visual BASIC  程式設計

Space 函數範例• 【程式】 CH08-08 用 Space函數輸出文字圖形

– Private Sub Form_Activate()

– Form1.Font.Size=20

– For N=5 To 1 Step -1

– Print Space(6-N)+String(N*2-1,”$”)

– Next N

– End Sub

• 【說明】– 1.Str 函數是產生指定的符號,語法格式

String(N,Character)

– 2.N=1 時, N*2-1=1 ,合併 1 格空白,即$$$$$$$$$N=2 時, N*2-1=3 ,合併 2 格空白,即 $$$$$$$N=3 時, N*3-1=5 ,合併 3 格空白,即 $$$$$N=4 時, N*4-1=7 ,合併 4 格空白,即 $$$N=5 時, N*5-1=9 ,合併 5 格空白,即 $

Page 22: 計算機 概論 Visual BASIC  程式設計

8-3 多層迴圈

• 當我們要處理的問題可以用二個索引變數來控制迴圈時,可以設計成二層迴圈,它和巢狀式If...Then...Else結構相似 。

• 在巢狀式迴圈中,每層迴圈中的索引變數 (或稱計數器 ),要使用不同的變數名稱,且要符合配對方式 。

8-3-1 巢狀式 For…Next

Rem正確的搭配方式 Rem錯誤的搭配方式For I=1 To 10 For I=1 To 10

For J=1 To 10 For J=1 To 10

For K=1 To 10 ...

... Next I

Next K Next J

Next J

Next I

Page 23: 計算機 概論 Visual BASIC  程式設計

8-3-2 巢狀式 For...Next 範例 • 【程式】 CH08-09 顯示九九乘法表

– Private Sub Form_Activate( )– For I=1 To 9– For J=1 To 9– Debug.Print J;”x”;I;”=”;I*J,– Next J– Debug.Print– Next I– End Sub

• 【說明】– 1. 此段程式碼執行的結果如下圖:

8-3-2 巢狀式 For...Next 範例

Page 24: 計算機 概論 Visual BASIC  程式設計

巢狀式 For...Next 範例 1

– 2. 此段程式主要是運用兩層巢狀式 For...Next來列出「九九乘法表」。

– 3.I 變數控制從 1 到 9 , J 變數也控制從 1 到9 ,第 1 行 Print 敘述印出 I*J 的結果,且不跳行。

– 4. 當 J 迴圈結束時,執行 Print 敘述,會跳一行且回到 I 迴圈, I 遞增 1 ,繼續執行 J 迴圈。

– 5. 當 I 迴圈執行完 9 次後,程式結束。

Page 25: 計算機 概論 Visual BASIC  程式設計

8-4 程式範例

• 「邏輯運算式」是用來處理二項資料之間的邏輯關係,其結果非真(True) 即假 (False) 。

• Visual Basic 所提供的邏輯運算子有以下六種:NOT 、 AND 、 OR 、XOR 、 EQV 、 IMP 。

• 右表是 VB 邏輯運算子的運算方式與優先順序。

8-4-1 範例 1 :求某數最接近的倍數值

優先順序 邏輯運算子

1 NOT

2 AND

3 OR

4 XOR

5 EQU

6 IMP

說明

將真變假、假變真

二項皆真,結果才為真

只要有一項為真,結果即為真

二項同值,結果才為假

二項同值,結果才為真

第一項為真,第二項為假,結果才為假

功能名稱

互斥

等值

包含

Page 26: 計算機 概論 Visual BASIC  程式設計

題目和分析 -1• 【題目 1 】 CH08-10

– 輸入數字 X ,求出比 X 大且最接近 Y 的倍數的數值。

– 例: X=3 , Y=5 ,則比 3 大,最接近 5 的倍數值的數值是 5 。

– 例: X=9 , Y=5 ,則比 9 大,最接近 5 的倍數值的數值是 10 。

• 【分析】– 1.這個問題從字面上的文字不易看出解題的方法,不能夠一下子即開始編寫程式,但若經過仔細地分析其數值的關係時,這個題目並不難,還是可以用幾行程式行或一個運算式求得結果,這就是演算法和分析問題的重要性。

Page 27: 計算機 概論 Visual BASIC  程式設計

題目和分析 -2– 2. 先觀察下列數值的推演:

若 X=3 、 Y=5 ,則答案是 5 ,因為 5=5*1若 X=9 、 Y=5 ,則答案是 10 ,因為 10=5*2若 X=13 、 Y=5 ,則答案是 15 ,因為 15=5*3

– 3.上式中最右邊的 1、 2、 3 是否和原來的 3、 9、 13 有規則嗎 ? 有的,若將 3、 9、 13除以 5取其整數再加 1 ,即是1、 2、 3 了。所以運算式應該是 =5 * ( Int(X/5) + 1 ) 。例如: X=3 、 Y=5 ,則答案 = 5 * ( Int(3/5) + 1 ) = 5 * ( Int(0.6) + 1 ) = 5 * ( 0 + 1 ) = 5例如: X=9 , Y=5 ,則答案 = 5 * ( Int( 9 / 5 ) + 1 ) = 5 * ( Int(1.8) + 1 )= 5 * (1+1) = 10例如: X=13 , Y=5 ,則答案 = 5 * (Int( 13 / 5 ) + 1 ) = 5 * (Int(2.6)+1) = 5 * (2+1) = 15

Page 28: 計算機 概論 Visual BASIC  程式設計

設計和程式• 【設計】

– 1. 由 InputBox 輸入 X 值,令 Y=5 ,答案為 Z 。– 2. 由上述分析知道運算公式 Z = 5 * ( Int(X / 5) + 1 )

• 【程式】– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 X=InputBox(“ 輸入數字” )– 4 Y=5– 5 Z=Y*(Int(X/5)+1)– 6 Print “比” ;X;” 值大的 5 的倍數值 =”;Z– 7 End Sub

Page 29: 計算機 概論 Visual BASIC  程式設計

【題目 2】 CH08-11 • 若要求得任何數值的倍數值,可將 Y 由鍵盤輸入,程式如下:– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 X=InputBox(“ 輸入數字” )– 4 Y=InputBox(“ 輸入倍數數值” )– 5 Z= Y*(Int(X/Y)+1)– 6 Print “比” ;X;” 值大的” ;Y;”倍數值 =”;Z– 7 End Sub

Page 30: 計算機 概論 Visual BASIC  程式設計

8-4-2 範例 2 :計算數列加總• 【題目 1 】 CH08-12

– 計算 1 到 100 的總和。• 【分析】

– 計算數值數列的加總是用到累計技巧,只要設定一個要累計的變數,例如 xsum ,然後利用迴圈控制累計變數,每次加上正確的值。

• 【流程】– 1. 設定加總變數為 xsum 。– 2. 設計一個從 1 執行到 100 的迴圈,迴圈變數設定為

i 。– 3. 迴圈中做累加計算,程式為 xsum = xsum + i

8-4-2 範例 2 :計算數列加總

Page 31: 計算機 概論 Visual BASIC  程式設計

程式和說明• 【程式】

– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 xsum=0– 4 For i=1 To 100– 5 xsum=xsum+i– 6 Next i– 7 Print ”1 加到 100 總和 =”;xsum– 8 End Sub

• 【說明】– 這是一個最簡單的加總計算模式,程式如下:

xsum = xsum + i

Page 32: 計算機 概論 Visual BASIC  程式設計

【題目 2】 CH08-13 • 若將 100 設定為變數 n ,則上述程式可以計算 1

到 n 的總和,程式如下:– 1 Private Sub Form_Activate()

– 2 Form1.Font.Size=20

– 3 xsum=0 : n=100

– 4 For i=1 To n

– 5 xsum=xsum+i

– 6 Next i

– 7 Print “1 加到 100 總和 =”;xsum

– 8 End Sub

Page 33: 計算機 概論 Visual BASIC  程式設計

【題目 3】 CH08-14 • 若起始值 1 也設定成變數 xstart ,終止值設定為 xend ,且

xstart 和 xend 由鍵盤輸入,則可以設計出計算 xstart 到 xend的總和,例如輸入 xstart=2 , xend=7 ,則程式xsum=2+3+4+5+6+7=27 ,程式如下:– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 xsum=0– 4 xstart=InputBox(“ 輸入起始值” )– 5 xend=InputBox(“ 輸入終止值” )– 6 For i=xstart To xend– 7 xsum=xsum+i– 8 Next i– 9 Print “ 總和 =”;xsum– 10 End Sub

Page 34: 計算機 概論 Visual BASIC  程式設計

8-4-3 範例 3 :求數列的偶數和• 【題目 1 】 CH08-15

– 計算 1 到 100 的偶數和。• 【分析】

– 計算數值數列的偶數加總會用到累計技巧,只要設定一個要累計的變數 xsum ,再控制迴圈的變數值的變化,且每次迴圈執行時,都將變數值加到累計變數中。

• 【流程】– 1. 設定加總變數為 xsum 。– 2. 設計一個可執行 2 到 100 的迴圈,且每次間隔值 2 ,即迴圈變數出現奇數 2,4,6,8,10……100 。

– 3. 迴圈中做累加計算,程式為 xsum = xsum + i

8-4-3 範例 3 :求數列的偶數和

Page 35: 計算機 概論 Visual BASIC  程式設計

程式和說明• 【程式】

– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 xsum=0– 4 For i=2 To 100 Step 2– 5 xsum=xsum+i– 6 Next i– 7 Print “ 總和 =”;xsum– 8 End Sub

• 【說明】– 此程式和範例 2 相似,只是此程式多了上間隔值 2 ,控制迴圈指標變數只出現 2,4,6,8,10..... 。

Page 36: 計算機 概論 Visual BASIC  程式設計

【題目 2】 CH08-16 • 若要計算 1 到 100 的奇數和,則只要將起始值改為 1 ,其餘程式皆不變。程式如下:– 1 Private Sub Form_Activate()

– 2 Form1.Font.Size=20

– 3 xsum=0

– 4 For i=1 To 100 Step 2

– 5 xsum=xsum+i

– 6 Next i

– 7 Print “xsum=”;xsum

– 8 End Sub

Page 37: 計算機 概論 Visual BASIC  程式設計

【題目 3】 CH08-17 • 若要計算某個倍數數列的和,例如 1 到 1000 中 5,

10,15,20... 等 5 的倍數數值之和時,只要改變間隔值為 5 ,且起始值是第一個 5 的倍數即可。程式如下:– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 xsum=0– 4 For I=5 To 1000 Step 5– 5 xsum=xsum+i– 6 Next i– 7 Print “ 總和 =”;xsum– 8 End Sub

Page 38: 計算機 概論 Visual BASIC  程式設計

【題目 4】 CH08-18 • 若要設計一個可以計算任何數字範圍,及任何數值倍數的程式時,可由

InputBox 輸入起始值、終止值和倍數數字。此程式較困難的一點是要由輸入的值,找出正確的起始值,才能套用上述程式模式,這個程式可參考範例 CH08-10(找出比某數值大,且為另一數值的倍數 ) 。程式如下:– 1 Private Sub Form_Activate()– 2 Form1.Font.Size=20– 3 xsum=0– 4 xstart=InputBox(“ 輸入起始值” )– 5 xend=InputBox(“ 輸入終止值” )– 6 xmul=InputBox(“ 輸入倍數值” )– 7 xstart=xmul*(Int(xstart/xmul)+1)– 8 For i=xstart To xend Step xmul– 9 xsum=xsum+i– 10 Next i– 11 Print “ 總和 =”;xsum– 12 End Sub

Page 39: 計算機 概論 Visual BASIC  程式設計

8-4-4 範例 4 :用雙層迴圈輸出文字圖形• 【題目 1 】 CH08-19

– 試設計一程式,可以印出下列圖形。 @ @@ @@@ @@@@ @@@@@

• 【程式】– Private Sub Form_Activate( )– Form1.Font.Size=20– For I = 1 To 5– For J = 1 To I– Print “@”;– Next J– Print– Next I– End Sub

8-4-4 範例 4 :用雙層迴圈輸出文字圖形

Page 40: 計算機 概論 Visual BASIC  程式設計

【題目 2】 CH08-20 • 【題目】

– 試設計一程式,可以印出下列圖形。 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

• 【程式】– Private Sub Form_Activate( )– Form1.Font.Size=20– For I = 5 To 1 Step -1– Print Spc(I); – Next J– Print– Next I– End Sub

Page 41: 計算機 概論 Visual BASIC  程式設計

【題目 2】 CH08-20( 續 ) • 【說明】

– 1. 同樣地若欲顯示 N 行,可以將外圈的 For I=5 To 1 Step -1 中的 5改為 N ,而內圈的 For J = 1 To 6-I 中的 6更改為 N-1 即可。

– 2. 若將 Print Spc(I) 改成 Print Spc(I+P) ,則整個圖樣會右移 P 個位置。

Page 42: 計算機 概論 Visual BASIC  程式設計

8-4-5 範例 5 :計算樂透彩的頭彩機率• 【題目】 CH08-21

– 先算出 42 個號碼選 6 個的所有組合數 ( 令其為 X) ,中頭彩是 6 個號碼全中,即在所有的組合數中只有 1 個是頭彩,所以中頭彩機率是 1/X 。

– 42 個號碼選 6 個的所有組合數=42!/(6!*36!)=(42*41*40*39*38*37)/(1*2*3*4*5*6)

• 【程式】– Rem 計算樂透彩的所有組合數– Rem 組合數 =(42*41*40*39*38*37)/(1*2*3*4*5*6)– Rem 令 XFACT=(42*41*40*39*38*37)– Rem 令 YFACT=(1*2*3*4*5*6)– Rem 令 XNO=XFACT/YFACT ,輸出 XNO ,機率即是 1/XNO– Private Sub Form_Activate( )– Dim XFACT,YFACT,XNO AS Single

8-4-5 範例 5 :計算樂透彩的頭彩機率

Page 43: 計算機 概論 Visual BASIC  程式設計

程式 ( 續 )– Form1.Font.Size=16– XFACT=1 : YFACT=1 : XNO=0– For I=42 To 37 Step –1– XFACT=XFACT*I– Next I– For I=1 To 6– YFACT=YFACT*I– Next I– XNO=XFACT/YFACT– Print “樂透彩的所有組合數 =”;XNO– Print “樂透彩的頭彩機率 =”;1/XNO– End Sub

Page 44: 計算機 概論 Visual BASIC  程式設計

說明• 【說明】

– 1. 程式執行結果如下圖:

– 2. 計算 (42*41*40*39*38*37) 的值可以用遞減迴圈來處理,控制索引變數從 42 到 37 ,間隔值是 -1 。For I=42 To 37 Step –1 XFACT=XFACT*INext I

Page 45: 計算機 概論 Visual BASIC  程式設計

學習評量

本章結束 !要記得做學習評量哦 !

Chapter 8