程式語言(programming language)

Similar documents
<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

CHAPTER VC#

Excel VBA Excel Visual Basic for Application

四川省普通高等学校

Visual Basic D 3D

Microsoft PowerPoint - VB14.ppt

Visual C# 2005程式設計

untitled

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

PowerPoint Presentation

untitled

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

投影片 1

Microsoft Word - ch03.doc

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - VB3

投影片 1

國立北斗家商 107 學年度第 2 學期第二次期中考科目 : 計算機應用 計算機概論 IV 班級 : 商二 1 2 貿二 資二 綜二 1 作答方式 : 答案卡 選擇題共 33 題, 除第 1 題 4 分, 其餘每題 3 分, 注意作答時間 1. ( ) 使用 Visual Basic 程式語言 (

投稿類別:電子工程類

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Microsoft PowerPoint - OPVB1基本VB.ppt

05322AR13.indd

IsPostBack 2

Microsoft Word - ACL chapter02-5ed.docx

PowerPoint 簡報

p-2

Microsoft PowerPoint - Chapter4

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

untitled

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Microsoft Word - Chap05.doc

C/C++基礎程式設計班

此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運算子以移至內附範例的詳細資料頁面 x && y 邏輯 AND 如果第一個運算元為 false,c# 就不會評估第二個運算元 條件 OR 運算子 此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運

Microsoft PowerPoint - 06_迴圈2.pptx

Microsoft PowerPoint - ch2.pptx

投稿類別:資訊類

untitled

untitled

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft PowerPoint - VB5

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python_02

Ⅰ 冊索引 A Activated 事件 102 algorithm 演算法 126 Array.IndexOf() 方法 306 Array.Reverse() 方法 300 Array.Sort() 方法 300 array 陣列 268 assembler 組譯器 4 assembly lan

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

05 CHAPTER Information.IsNumeric ( ) Information.IsDate ( ) True False Date Date True False Y Y Information.IsArray ( ) True False Y Information.IsErr


untitled

2010年3月计算机等级考试四级网络工程师笔试

VB程序设计教程

碩命題橫式

附 錄

穨文件1

多層次傳銷與獎金系統

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

untitled

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

untitled

Microsoft PowerPoint - 03_FlowControl.pptx

Microsoft Word - ACI chapter00-1ed.docx

編輯大意 一 本書是一本專為普通高中 技術高中學生編寫的程式語言入門書籍, 全書以 Visual Basic 2015 Express 版的程式開發環境, 來介紹程式基礎實作, 適合首次學習程式語言及程式設計的學生使用 二 本書共分 Ⅰ Ⅱ 兩冊,Ⅰ 冊著重介紹程式設計概念與流程控制,Ⅱ 冊則著重介

05855BT05.indd

投影片 1

PowerPoint 簡報

TC35短信发送程序设计

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

資料結構之C語言重點複習

Microsoft Word - 第3章.doc

Microsoft Word C-A卷.docx

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

Microsoft Word - temp71.doc

CU0594.pdf

05224AA12.indd

CC213

MVB-1001.DOC

CC213

(Microsoft PowerPoint - \245\250\266\2606)

Microsoft Word - 透析8051之迴圈控制方法.doc

《Visual Basic程序设计》实验课

untitled

Microsoft Word - 6.doc

2

Chapter 16 集合

Microsoft Word - Chap05.doc

封面-12

第5章修改稿

untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

ThreeDtunnel.doc

目次 CONTENTS 2 1 乘法公式與多項式 二次方根與畢氏定理 因式分解 一元二次方程式

######## First set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else y <- 2 ######## Second set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else ###

上海市教育考试院关于印发新修订的

上海市本科教学质量年度报告

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

¦ÛµM¬ì²Ä3¦¸²Õ¨÷-¾Ç´ú¤ºŁ¶«ÊŁ±.prn, page Normalize ( <4D F736F F D20A6DBB54DACECB2C433A6B8B2D5A8F72DBEC7B4FAA4BAADB6ABCAADB12E646F63> )

Object-Oriented Programming, Mid-term Test, 11/21/2000

Transcription:

程式語言 (programming language) 使用 Visual Basic 劉和師 Part 2

基本元件 (Button Label TextBox) 視窗程式都是由這些基本元件組成的, 你應該用的很熟了 TextBox Button Label 2

基本元件 (Button Label TextBox) 這裡有幾個物件? 3

基本元件 (Button Label TextBox) 這裡有幾個物件? Label Form PictureBox Button 4

按鈕 (Button) 大概是最常用到的元件了, 主要是讓使用者點選 常用屬性 : Text: 按鈕上顯示的文字 Font: 按鈕上顯示文字的字型 常用事件 : Click: 當按鈕被滑鼠點一下時 5

標籤 (Label) 也是很常用到的元件, 主要是用來顯示文字 常用屬性 : Text: 標籤上要顯示的文字 Font: 按鈕上顯示文字的字型 Visiable: 該標籤是否顯示出來或隱藏 常用事件 : 比較沒有, 因為通常就是顯示資訊, 不當作控制項 6

文字方塊 (TextBox) 用來接受使用者的輸入資訊 常用屬性 : MultiLine: 是否接受多行 MaxLength: 最多可接受多少字元 PasswordChar: 使用者輸入以 * 號顯示, 通常用於輸入密碼欄位 ScrollBars: 是否使用捲軸 常用事件 : TextChange: 輸入項內的文字發生改變時觸發 7

練習 請做出這個畫面 8

練習 設計如下之程式, 輸入攝氏溫度, 轉換為華氏溫度 ( 公式 :F = ( 9.0 * C ) /5.0 + 32 ) Page 6-15 9

參考作法 程式碼 : TextBox 輸入的皆視為字串, 要做運算需做適當轉換 & 運算子串接不同格式的資料格式成為字串 CSng( ) 函數是將字元轉換成單精度數值 10

基本輸出入 程式常需要與使用者互動, 有下列基本指令 : 視窗模式 : MsgBox( ) 自 VB6 就有的指令, 簡單易用 MessageBox( ) VB2010 增加了這個, 跟 MsgBox( ) 一樣的功能, 但更強一些 InputBox( ) 請使用者輸入訊息 命令列模式 ( 前面介紹過了 ): Console.Write( ) Console.Read( ) 11

MsgBox( ) 語法 : MsgBox( 訊息, 樣式, 視窗標題 ) 例 :MsgBox(" 這是訊息 ", vbyesnocancel, " 範例 ") 12

MsgBox( ) 關於樣式 : MsgBox( 訊息, 樣式, 視窗標題 ) + 13

MsgBox( ) 練習 請顯示下列訊息框 MsgBox(" 樣式練習 ", vbyesnocancel + vbinformation, " 這是標題 ") 14

MsgBox( ) 傳回值 那怎麼知道使用者是按了哪個件呢? MsgBox( ) 會傳回一個數值來表示使用者按了哪個鍵 例如 : 如果傳回 1 或 vbok, 就表示使用者按了 OK 這個按鈕 15

貼心的 VB 環境 系統在幫得上忙的地方就會自動跳出視窗提示你可用的選項 16

MessageBox( ) 與 MsgBox( ) 相同, 請參考課本 略過 17

InputBox( ) 請使用者輸入訊息, 語法 : InputBox( 提示, 標題, 預設值 ) 例 : instr = InputBox(" 請輸入資訊 ", " 請求輸入 ", " 你好嗎?") 由一個變數來接收使用者的輸入 18

InputBox( ) 從 InputBox( ) 輸入的資料一律為 字串, 所以如果是要求輸入數值的話要自己轉換一下 很方便的一個指令, 但也可以直接在表單上設計好, 讓使用者經由 TextBox 元件輸入資訊 19

作業 Page 6-16 ~ 17 請練習這些基本指令 20

程式語言的三種控制結構 1. 循序結構 由上往下, 依序執行 2. 選擇結構 根據條件成立與否來選擇要執行的路徑 3. 重複結構 利用迴圈重複執行一個區塊 沒有具備這三種結構的就不能稱為程式語言 (HTML 就不算是正式的程式語言, 因為它沒有選擇和重複的結構指令 ) 21

選擇結構 如果 22

If Then 指令 如果 那就 語法 : If 條件式 Then 敘述 條件式結果為假則略過敘述, 往下執行 條件式結果為真時執行 例 : If A > B Then A = 10 23

If Then 指令 例 : Dim A As Integer = 300 Dim B As Integer = 150 If A > 200 Then A = A * 0.8 If B > 200 Then B = B * 0.8 執行結果 : A 為 240 B 為 150 ( 為什麼?) 24

If Then End If 指令 如果條件成立需要執行多行敘述, 則可以寫成 : 假 If 條件式 Then 敘述一真敘述二 : : End If 下一道敘述 25

If Then End If 指令 例 : Dim A, B, C As Intege Dim X As Integer = 10 A = 5 : B = 5 : C = 5 If X >= 10 Then A = A + 1 B = B + 1 C = C + 1 End If 執行結果 :A, B, C 的值各被加 1 26

If Then End If 指令 例 : Dim A, B, C As Intege Dim X As Integer = 10 A = 5 : B = 5 : C = 5 If X > 10 Then A = A + 1 B = B + 1 C = C + 1 End If 執行結果 :A, B, C 維持原值 ( Why? ) 27

If Then Else 指令 如果 那就 否則 條件式成立或不成立都有敘述要做 語法 : 條件式結果為真時執行 If 條件式 Then 敘述一 Else 敘述二 條件式結果為假時執行 28

If Then Else 指令 例 : Dim A As Integer = 300 If A>500 Then A = A*0.8 Else A = A*0.9 執行結果 :270 值 ( Why? ) 29

If Then Else 指令 多行式寫法 : 假 If 條件式 Then 敘述一真 : Else 敘述二 : End If 30

If Then Else 指令 多行式寫法例 : Dim A As Integer = 300 If A>500 Then A = A*0.8 Else A = A*0.9 End If 31

If 指令流程圖 32

If 練習 1. 輸入一數值, 若大於等於 60 則印出 及格, 否則印出 不及格 2. 輸入兩數值, 印出較大者 3. 輸入三數值, 印出最大者 4. 判斷 PH 酸鹼值, 若輸入小於 7 則印出 酸性, 若等於 7 則印出 中性, 若大於 7 則印出 鹼性 33

參考寫法 題目 1( 命令列模式 ): Dim x As Integer Console.Write(" 請輸入數值 : ") x = Val(Console.ReadLine()) If x >= 60 Then Console.WriteLine(" 及格 ) Else Console.WriteLine(" 不及格 ) End If Console.Read() 34

參考寫法 題目 1( 視窗模式 ): Dim x As Integer x = Val(InputBox(" 請輸入數值 : ")) If x >= 60 Then MsgBox(" 及格 ") Else MsgBox(" 不及格 ") End If 35

參考寫法 題目 2( 命令列模式 ): Dim a, b As Integer Console.Write(" 輸入第一個數值 : ") a = Val(Console.ReadLine()) Console.Write(" 輸入第二個數值 : ") b = Val(Console.ReadLine()) If a > b Then Console.WriteLine(a) Else Console.WriteLine(b) End If Console.Read() 36

參考寫法 題目 2( 視窗模式 ): Dim a, b As Integer a = Val(InputBox(" 輸入第一個數值 : ")) b = Val(InputBox(" 輸入第二個數值 : ")) If a > b Then MsgBox(a & " 比較大 ") Else MsgBox(b & " 比較大 ") End If 37

參考寫法 題目 3( 命令列模式 ): 38 Dim A, B, C, MAX As Integer Console.Write(" 請輸入第一個數值 : ") A = Val(Console.ReadLine()) Console.Write(" 請輸入第二個數值 : ") B = Val(Console.ReadLine()) Console.Write(" 請輸入第三個數值 : ") C = Val(Console.ReadLine()) If A > B Then Max = A Else Max = B If MAX > C Then Console.WriteLine(MAX) Else Console.WriteLine(C) End If Console.Read()

參考寫法 題目 3( 視窗模式 ): Dim A, B, C, MAX As Integer A = Val(InputBox(" 請輸入第一個數值 : ")) B = Val(InputBox(" 請輸入第二個數值 : ")) C = Val(InputBox(" 請輸入第三個數值 : ")) If A > B Then MAX = A Else MAX = B If MAX > C Then MsgBox(MAX & " 是最大值 ") Else MsgBox(C & " 是最大值 ") End If 39

參考寫法 題目 4( 命令列模式 ): Dim PH As Single Console.Write(" 請輸入酸鹼值 : ") PH = Val(Console.ReadLine()) If PH > 7 Then Console.WriteLine(" 鹼性 ") If PH = 7 Then Console.WriteLine(" 中性 ") If PH < 7 Then Console.WriteLine(" 酸性 ") Console.Read() 40

參考寫法 題目 4( 視窗模式 ): Dim PH As Single PH = Val(InputBox(" 請輸入酸鹼值 : ")) If PH > 7 Then MsgBox(" 鹼性 ") If PH = 7 Then MsgBox(" 中性 ") If PH < 7 Then MsgBox(" 酸性 ") 41

參考寫法 題目 1( 視窗模式 ): 設計執行結果 Label1 TextBox1 Button1 Form1 Label2 42

參考寫法 題目 1( 視窗模式 ): Private Sub Button1_Click(sender As Object Dim x As Integer x = Val(TextBox1.Text) If x >= 60 Then Label2.Text = " 及格 Else Label2.Text = " 不及格 End If End Sub 43

參考寫法 題目 2( 視窗模式 ): 設計執行結果 Label1 Label3 Form1 TextBox1 TextBox2 Button1 Label2 44

參考寫法 題目 2( 視窗模式 ): Private Sub Button1_Click(sender As Object If Val(TextBox1.Text) >= Val(TextBox2.Text) Then Label2.Text = TextBox1.Text Else Label2.Text = TextBox2.Text End If End Sub 45

參考寫法 題目 3( 視窗模式 ): 設計執行結果 Label1 Label3 Label4 Form1 TextBox1 TextBox2 TextBox3 Button1 Label2 46

參考寫法 題目 3( 視窗模式 ): Private Sub Button1_Click(sender As Object Dim a, b, c, max As Integer a = Val(TextBox1.Text) b = Val(TextBox2.Text) c = Val(TextBox3.Text) If a > b Then max = a Else max = b If max < c Then max = c Label2.Text = max End Sub 47

參考寫法 題目 4( 視窗模式 ): 設計執行結果 Label1 TextBox1 Form1 Button1 Label2 48

參考寫法 題目 4( 視窗模式 ): Private Sub Button1_Click(sender As Object Dim PH As Single PH = Val(TextBox1.Text) If PH > 7 Then Label2.Text = " 鹼性 " If PH = 7 Then Label2.Text = " 中性 " If PH < 7 Then Label2.Text = " 酸性 " End Sub 49

IIF( ) 條件函數 當 IF 的判斷很單純時, 可以使用此方式 語法 : 變數 = IIF( 條件運算式, 設定值 1, 設定值 2) 條件運算式為真 條件運算式為假 50

IIF( ) 條件函數 簡化三數比大小的寫法 : Private Sub Button1_Click(sender As Object Dim a, b, c, max As Integer a = Val(TextBox1.Text) b = Val(TextBox2.Text) c = Val(TextBox3.Text) max = IIf( a > b, a, b ) Label2.Text = IIf( max > c, max, c ) End Sub 51

If Then ElseIf 當有多重的判斷時, 可以這樣用 If Then 敘述一 Else If Then 敘述二 Else If Then 敘述三 Else 敘述四 End If End If End If If Then 敘述一 ElseIf Then 敘述二 ElseIf Then 敘述三 Else 敘述四 End If 有沒有簡化很多呢? 52

練習 請把 Page 7-12 的範例做出來 53

Select Case 判斷式 當需要多重判斷時, 還有比 If ElseIf 更簡潔的方式, 就是用 Select Case, 語法 : Select Case 變數 Case 條件式一敘述一 Case 條件式二敘述二 : Case Else 敘述 End Select 可以有很多 Case 第一個符合條件的 Case 會被執行, 之後的都忽略 Case Else 可省略 54

Select Case 判斷式 流程圖 只有一個程式區塊會被執行到 若所有 Case 皆不成立, 也沒有 Case Else, 則直接離開, 沒有任何程式區塊會被執行 若所有 Case 皆不成立, 則執行 Case Else 的區塊 55

Select Case 判斷式 輸入月份, 顯示是第幾季 : 設計執行結果 Label1 TextBox1 Form1 Button1 Label2 56

Select Case 判斷式 參考寫法 : 57 Dim M As Integer M = TextBox1.Text Select Case M Case 1, 2, 3 Label2.Text = " 第一季 " Case 4 To 6 Label2.Text = " 第二季 " Case 7 Label2.Text = " 第三季 " Case 8, 9 Label2.Text = " 第三季 " Case 10 To 12 Label2.Text = " 第四季 " Case Is > 12 Label2.Text = " 一年只有 12 個月 " Case Else Label2.Text = " 你輸入了什麼?" End Select

Select Case 判斷式 Case 可接受的運算式 : Case 運算式 Case 100 Case ABC Case 1 To 5 Case 1, 2, 3 Case Is > 100 說明直接寫出數值直接寫出字元或字串是否介於某一範圍個別列舉是否大或小於某一值 58

Select Case 練習 1. 依據氣象局規定 : 風速每小時低於 62 公里時為熱帶低氣壓, 達 62~117 公里為輕度颱風,118~183 公里為中度颱風,184~220 公里為強烈颱風, 超過 220 公里則為超級颱風, 寫一程式, 依輸入風速來判定為何種等級的台風 2. 寫一程式判斷成績等第 (90~100 分為優等,80~89 分為甲等,70~79 為乙等,60~69 分為丙等,60 分以下為丁等 ) 59

Select Case 練習 題 1. 參考寫法 : W = Val(TextBox1.Text) Select Case W Case Is < 62 Label2.Text=" 熱帶低氣壓 " Case 62 To 117 Label2.Text=" 輕度颱風 " Case 118 To 183 Label2.Text=" 中度颱風 " Case 184 To 220 Label2.Text=" 強烈颱風 " Case Is > 220 Label2.Text=" 超級颱風 " End Select 60

Select Case 練習 題 2. 參考寫法 : S = Val(TextBox1.Text) Select Case S Case 90 To 100 Label2.Text=" 優等 " Case 80 To 89 Label2.Text=" 甲等 " Case 70 To 79 Label2.Text=" 乙等 " Case 60 To 69 Label2.Text=" 丙等 " Case Is < 60 Label2.Text=" 丁等 " End Select 61

Select Case 注意事項 如果 S 輸入 100, 雖然所有 Case 都符合條件, 但只有第一個符合的會被執行, 其他敘述會被忽略 S = Val(TextBox1.Text) Select Case S Case 100 Label2.Text=" 優等 " Case 90 To 100 Label2.Text=" 甲等 " Case Is > 60 Label2.Text=" 乙等 " End Select 62

重複結構 重複執行某個區段, 又稱迴圈, 一共有四種 : For While Do loop For each( 於陣列時介紹 ) 63

重複結構 64

For Next 敘述 讓程式區段依照給定的起始值及終止值, 重複執行多次, 語法 : For 變數 = 起始值 To 終止值 Step 增 / 減量 : : 可省略程式區段 : : Next 變數 可省略 65

For Next 敘述 範例練習, 印出 10 次 I Love VB : For I = 1 To 10 Step 1 Console.WriteLine(I & I Love VB ) Next I 執行結果 : 66

For Next 敘述 變數 = 起始值 To 終止值 Step 增 / 減量 For I = 1 To 10 Step 1 Console.WriteLine(I & I Love VB ) Next I I = 1 時, 印一行 I Love VB I = 2 時, 印一行 I Love VB : I = 10 時, 印一行 I Love VB 一共印出 10 行 67

For Next 敘述 也可以用倒數的 : For I = 10 To 1 Step -1 Console.WriteLine(I & I Love VB ) Next I 執行結果 : 68

For Next 敘述 增 / 減量也可以不是整數 : 插入一個跳格 (Tab) For I = 1 To 10 Step 0.5 Console.WriteLine(I & vbtab & I Love VB ) Next I 執行結果 : (20 次 ) 69

For Next 敘述 增 / 減量是 +1 時可省略,Next 後面的變數可省略 : For I = 1 To 10 Step 1 Console.WriteLine(I & I Love VB ) Next I For I = 1 To 10 ( 省略 ) Console.WriteLine(I & I Love VB ) Next ( 省略 ) 在多重迴圈中若需要辨識, 還是可以寫出來 70

For Next 敘述 錯誤的用法 :( 一次都不會執行 ) For I = 10 To 1 Step 1 Console.WriteLine(I & I Love VB ) Next I 或 For I = 1 To 10 Step -1 Console.WriteLine(I & I Love VB ) Next I 原因 : 增 / 減量無法讓初始值趨向終止值 71

For 練習一 1. 計算 1+2+3 +1000 的值 2. 計算 1+3+5 +99 的值 3. 印出 1~100 之間可被 7 整除的數 4. 印出 1~1000 之間可被 7 和 13 整除的數 72

For 練習一參考寫法 1. 計算 1+2+3 +1000 的值 Dim Sum As Integer = 0 For i = 1 To 1000 Sum = Sum + i Next Console.WriteLine(Sum) 印出結果 Console.Read() 暫停螢幕 73

For 練習一參考寫法 2. 計算 1+3+5 +99 的值 Dim Sum As Integer = 0 For i = 1 To 99 Step 2 Sum += i Next Console.WriteLine(Sum) 印出結果 Console.Read() 暫停螢幕 74

For 練習一參考寫法 印出 1~100 之間可被 7 整除的數 For i = 1 To 100 If i Mod 7 = 0 Then Console.WriteLine(i) End If Next Console.Read() 75

For 練習一參考寫法 印出 1~1000 之間可被 7 和 13 整除的數 For i = 1 To 100 If i Mod 7 = 0 And I Mod 13 = 0 Then Console.WriteLine(i) End If Next Console.Read() 76

For 巢狀迴圈 就是迴圈裏面還有迴圈 For I = n to m For j = x To y : 程式區塊 : Next Next 注意 : 套得越多層, 效率越差 77

For 巢狀迴圈 範例說明 : Console.WriteLine("i j") Console.WriteLine("-------------") For i = 1 To 3 Console.Write(i & ": ") For j = 10 To 30 Step 10 Console.Write(j & " ") Next Console.WriteLine() Next Console.Read() 執行結果 : 78

For 巢狀迴圈 印出一個 9*9 乘法表, 參考寫法 : For i = 1 To 9 For j = 1 To 9 Console.Write(i * j & vbtab) Next Console.WriteLine() Next Console.Read() 79

For 巢狀迴圈 印出一個 9*9 乘法表執行結果 : 80

For 巢狀迴圈 練習做出下面的 9*9 乘法表 81

For 巢狀迴圈 9*9 乘法表參考寫法 : For i = 1 To 9 Step 3 For j = 1 To 9 Console.WriteLine( i & " * " & j & " = " & i * j & vbtab & i + 1 & " * " & j & " = " & (i + 1) * j & vbtab & i + 2 & * & j & = & (i + 2) * j & vbtab ) Next Console.WriteLine() Next Console.Read() 82

For 巢狀迴圈 9*9 乘法表另一種寫法 : For i = 1 To 9 Step 3 For j = 1 To 9 Console.Write( {0} * {1} = {2}, i, j, i * j & vbtab) Console.Write("{0} * {1} = {2} ", i + 1, j, (i + 1) * j & vbtab) Console.WriteLine("{0} * {1} = {2} ", i + 2, j, (i + 2) * j & vbtab) Next Console.WriteLine() Next Console.Read() 83

補充 Consloe.Write( ) 可以對輸出做格式化 : Console.Write( {0} * {1} = {2}, i, j, i * j) 格式化字串 變數內容依序交給格式化字串裡的 {n} 位置 雖然現在都是視窗程式了, 但有時還是會用到命令列模式輸出 84

For 練習 印出下列圖形 : * ** *** **** * ** *** **** * *** ***** ******* * *** ***** ******* ***** *** * A AB ABC ABCD A ABA ABCBA ABCDCBA 4321 321 21 1 7531 531 31 1 13 135 1357 提示 :Space(n) 函數可以印出 n 個空白 提示 :Chr(n) 函數可以轉換數值為字元 85

函數說明 Space 函數可印出指定數目的空白 : Console.Write(Space(10) & * ) 會印出 10 個空白和一個 * Chr( ) 與 Asc( ) 函數 : Console.Write(Chr(65)) 印出 A Console.Write(Asc( A )) 印出 65 ( 會印出數值 65 相對的 ASCII 字碼 (65=A)) ( 會印出字母 A 相對的 ASCII 值 (A=65)) 86

For 練習參考寫法 1. For i = 1 To 4 For j = 1 To i Console.Write("*") Next Console.WriteLine() Next Console.Read() * ** *** **** 87

For 練習參考寫法 2. For i = 1 To 4 Console.Write(Space(4 - i)) For j = 1 To i Console.Write("*") Next Console.WriteLine() Next Console.Read() * ** *** **** 88

For 練習參考寫法 3. Dim X As Integer = 3 For i = 1 To 7 Step 2 Console.Write(Space(X)) X = X - 1 For j = 1 To i Console.Write("*") Next Console.WriteLine() Next Console.Read() * *** ***** ******* 89

For 練習參考寫法 4. 90 Dim X As Integer = 3 For i = 1 To 7 Step 2 ' 畫上半部 Console.Write(Space(X)) X = X - 1 For j = 1 To i Console.Write("*") Next Console.WriteLine() Next X = 1 For i = 5 To 1 Step -2 ' 畫下半部 Console.Write(Space(X)) X = X + 1 For j = 1 To i Console.Write("*") Next Console.WriteLine() Next Console.Read() * *** ***** ******* ***** *** *

For 練習參考寫法 5. 提示 : 數值 65 是 A 的 ASCII 值 For i = 0 To 3 For j = 65 To 65 + i Console.Write(Chr(j)) Next Console.WriteLine() Next Console.Read() A AB ABC ABCD 91

For 練習參考寫法 6. Dim S As Integer = 3 For i = 0 To 3 Console.Write(Space(S)) S = S - 1 For j = 65 To 65 + i Console.Write(Chr(j)) Next For j = 64 + i To 65 Step -1 Console.Write(Chr(j)) Next Console.WriteLine() Next Console.Read() A ABA ABCBA ABCDCBA 92

For 練習參考寫法 7. For i = 4 To 1 Step -1 For j = i To 1 Step -1 Console.Write(j) Next Console.WriteLine() Next Console.Read() 4321 321 21 1 93

For 練習參考寫法 8. ' 畫上半部 For i = 7 To 1 Step -2 For j = i To 1 Step -2 Console.Write(j) Next Console.WriteLine() Next ' 畫下半部 For i = 3 To 7 Step 2 For j = 1 To i Step 2 Console.Write(j) Next Console.WriteLine() Next Console.Read() 94 7531 531 31 1 13 135 1357

Exit For 敘述 此敘述可以強迫跳出所在的迴圈, 不執行剩下的敘述 範例 : For j = 1 To 10 Console.Write(j) If j = 5 Then Exit For End If Next 跳出迴圈, 執行迴圈外的下一道敘述 95

Exit For 敘述 Exit For 只能跳出所在的迴圈, 不會一次全跳出來 For i = 1 To 10 For j = 1 To 10 Console.Write(j) If j = 5 Then Exit For End If Next Console.WriteLine() Next 96

重複結構 While 97

While End While 敘述 使用 For 迴圈時是依照起始值及終止值計算需重複多少次, 那如果不確定要執行幾次呢? 例如賽車遊戲, 如果在時間內繞完一圈, 就再玩一次, 否則就結束, 所以高手和魯蛇玩的次數一定不同, 那迴圈要執行幾次呢? 這是不能寫死的 這種不確定要執行 幾次的情況就用 : 98

While End While 敘述 當條件為真時執行迴圈, 為假時結束迴圈 While 條件真 : : 敘述 : : End While 假 99

While End While 敘述 範例練習, 印出 10 次 I Love VB : Dim i As Integer i = 1 While i <= 10 Console.WriteLine(i & " I Love VB") i += 1 增 / 減量 End While Console.Read() 執行結果 : 每次執行條件測試, 看是否為真 100

While End While 敘述 無盡迴圈, 因無意或故意, 讓迴圈永遠不會結束 例 : While 1=1 : : End While While 1 : : End While 故意的, 因為測試條件永遠是真 i = 1 While i <= 10 Console.WriteLine(i)? End While 無意的, 因為忘了改變 i 值, 使測試條件永遠是真 101

While End While 敘述 While 當無盡迴圈用是常見的 不是的話記得要有敘述改變測試條件 While 測試條件 : 敘述 : End While 控制迴圈要不要繼續的關鍵 102

Exit While 敘述 此敘述可以強迫跳出所在的迴圈, 不執行剩下的敘述, 功能與 Exit For 相同 範例 : While X <= 100 Console.Write(X) If X = 10 Then Exit While End If X += 1 End While 跳出迴圈, 執行迴圈外的下一道敘述 103

While 練習 1. 由鍵盤輸入 10 個數值並將其加總 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 3. 承上題, 增加印出最大值及最小值 4. 實作 Page 7-24 的範例 104

While 練習參考寫法 1. 由鍵盤輸入 10 個數值並將其加總 Dim i, x, sum As Integer i = 0 : sum = 0 While i < 10 x = Console.ReadLine() sum += x i += 1 End While Console.WriteLine("Sum= " & sum) Console.Read() 說明 : 冒號 : 是將多行敘述寫在同一行時當分隔符號 105

While 練習參考寫法 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 Dim x, sum As Integer x = 0 : sum = 0 While x <> 999 sum += x x = Console.ReadLine() End While Console.WriteLine("Sum= " & sum) Console.Read() 106

While 練習參考寫法 3. 承上題, 增加印出最大值及最小值 107 Dim x, sum, max, min As Integer x = 0 : sum = 0 max = Int32.MinValue : min = Int32.MaxValue While x <> 999 sum += x x = Console.ReadLine() If x <> 999 Then If x > max Then max = x If x < min Then min = x End If End While 說明 : Int32.MinValue 是取得整數可表示的最小值 Int32.MaxnValue 是取得整數可表示的最大值 Console.WriteLine( Max= & max &, Min= " & min) Console.WriteLine("Sum= " & sum) Console.Read()

While 練習參考寫法 4. 實作 Page 7-24 的範例 ( 請參看課本 ) 108

Do Loop 109

Do Loop 敘述 區分為前測式與後測式迴圈 : 前測式後測式 先判斷條件再執行迴圈 Do While 條件 : : Loop 先執行迴圈再判斷條件 Do : : Loop While 條件 Do Until 條件 : : Loop Do : : Loop Until 條件 110

Do Loop 敘述 前測式效果與 While 敘述相同, 端看各位喜歡用哪種敘述來寫 Do While 條件 : 真 : 敘述 : : Loop 假 111

Do Loop 敘述 後測式語法 While: 真 Do : 敘述 : : Loop While 條件 假 112

Do Loop 敘述 後測式語法 Until: 假 Do : 敘述 : : Loop Until 條件 真 113

Do Loop 敘述 記住 : While 是條件為真時要重複為假時要離開 Until 是條件為假時要重複為真時要離開 真 While 假 假 Until 真 114

Do Loop 敘述 後測式是先執行迴圈內的敘述, 再判斷要不要繼續重複執行 後測式最大的不同是迴圈內的敘述一定會執行至少一次 Do While 條件 ( 假 ) : 執行了 0 次 : Loop 條件為假, 故不進入迴圈, 直接離開 Do : 執行了一次 : Loop While 條件 ( 假 ) 執行了一次, 但條件為假, 故不回頭重複 115

Exit Do 敘述 此敘述可以強迫跳出所在的迴圈, 不執行剩下的敘述, 功能與 Exit While 相同 範例 : Do While X <= 100 Console.Write(X) If X = 10 Then Exit Do End If X += 1 Loop 跳出迴圈, 執行迴圈外的下一道敘述 116

Continue 指令 Continue For: 跳過 For 迴圈剩下的指令, 回到 For 的開頭, 執行下一個 For/Next 迴圈 Continue Do: 忽略之後的指令, 跳回 Do 去執行 跟 Exit 指令相反 117

Continue 指令 範例 : Dim i, sum As Integer Do While i < 10 i = i + 1 If i Mod 2 = 0 Then Continue Do End If sum = sum + 1 Loop Console.WriteLine(sum) Console.Read() 執行結果 : 5 118

Continue 指令 範例 : Dim i, sum As Integer For i = 1 To 10 If i Mod 2 = 0 Then Continue For End If sum = sum + 1 Next Console.WriteLine(sum) Console.Read() 執行結果 : 5 119

Do Loop 練習 將 While 的程式改寫為 Do Loop 型式 1. 由鍵盤輸入 10 個數值並將其加總 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 3. 實作 Page 7-39 的範例 120

Do Loop 練習參考寫法 1. 由鍵盤輸入 10 個數值並將其加總 ( 前置 ) Dim i, x, sum As Integer i = 0 : sum = 0 Do While i < 10 x = Console.ReadLine() sum += x i += 1 Loop Console.WriteLine("Sum= " & sum) Console.Read() 說明 : 冒號 : 是將多行敘述寫在同一行時當分隔符號 121

Do Loop 練習參考寫法 1. 由鍵盤輸入 10 個數值並將其加總 ( 後置 ) Dim i, x, sum As Integer i = 0 : sum = 0 Do x = Console.ReadLine() sum += x i += 1 Loop While i < 10 Console.WriteLine("Sum= " & sum) Console.Read() 說明 : 冒號 : 是將多行敘述寫在同一行時當分隔符號 122

Do Loop 練習參考寫法 1. 由鍵盤輸入 10 個數值並將其加總 ( 前置 ) Dim i, x, sum As Integer i = 0 : sum = 0 Do Until i >= 10 x = Console.ReadLine() sum += x i += 1 Loop Console.WriteLine("Sum= " & sum) Console.Read() 說明 : 冒號 : 是將多行敘述寫在同一行時當分隔符號 123

Do Loop 練習參考寫法 1. 由鍵盤輸入 10 個數值並將其加總 ( 後置 ) Dim i, x, sum As Integer i = 0 : sum = 0 Do x = Console.ReadLine() sum += x i += 1 Loop Until i >= 10 Console.WriteLine("Sum= " & sum) Console.Read() 說明 : 冒號 : 是將多行敘述寫在同一行時當分隔符號 124

Do Loop 練習參考寫法 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 ( 前置 ) Dim x, sum As Integer x = 0 : sum = 0 Do While x <> 999 sum += x x = Console.ReadLine() Loop Console.WriteLine("Sum= " & sum) Console.Read() 125

Do Loop 練習參考寫法 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 ( 後置 ) Dim x, sum As Integer x = 0 : sum = 0 Do sum += x x = Console.ReadLine() Loop While x <> 999 Console.WriteLine("Sum= " & sum) Console.Read() 126

Do Loop 練習參考寫法 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 ( 前置 ) Dim x, sum As Integer x = 0 : sum = 0 Do Until x = 999 sum += x x = Console.ReadLine() Loop Console.WriteLine("Sum= " & sum) Console.Read() 127

Do Loop 練習參考寫法 2. 由鍵盤輸入 n 個數值, 直到輸入 999 為止 (999 不算 ), 將輸入之數值加總印出 ( 後置 ) Dim x, sum As Integer x = 0 : sum = 0 Do sum += x x = Console.ReadLine() Loop Until x = 999 Console.WriteLine("Sum= " & sum) Console.Read() 128

Do Loop 練習參考寫法 4. 實作 Page 7-39 的範例 ( 請參看課本 ) 129

亂數 讓電腦隨機產生一個數值, 而且不可預期, 如果產生一連串數值, 那看起來必須是沒有任何規律的數列 是電腦遊戲不可或缺的功能 使用兩個函數來達成 : Randomize( ) Rnd( ) 130

亂數 Randomize( ): 亂數起使種子 亂數函數也是一段小程式, 是程式就會有固定的程序, 所以為了避免產生的亂數發生 亂中有序 的情況, 我們用 Randomize( ) 函數給它一個起始值 ( 通常是系統時間, 因為每分每秒的值都不同 ), 讓亂數的產生每次起始條件都不同, 這樣就能保證真的很亂! 語法 : Randomize() 就這樣, 寫在 Rnd( ) 使用前就可以了 131

亂數 Rnd( ) 函數 : 會產生 0.0000.1 ~0.9999.9 之間的任意值 再經過運算得到我們想要的範圍 語法 : 變數 = Int( Rnd() * 範圍 ) + 起始值 Ex: n = Int( Rnd() * 10 ) + 1 可得到 1~10 之間的任意整數 132

亂數 產生 1~10 之間的任意整數說明 : n = Int( Rnd() * 10 ) + 1 產生 0.00 1 ~ 0.99 9 *10 後變成 0.00 1 ~ 9.99 9 Int 後變成 0 ~ 9 n = +1 後變成 1 ~ 10 133

亂數 範例 : Dim n As Integer Randomize() For i = 1 To 10 n = Int( Rnd() * 10 ) + 1 Console.WriteLine(n) Next Console.Read() 134

亂數 範例 : 產生 1~49 之間的亂數 Int( Rnd() * 49 ) + 1 1~49 一共有 49 種變化 產生 -5~+5 之間的亂數 Int( Rnd() * 11 ) - 5-5~+5 一共有 11 種變化 (-5,-4,-3,-2,-1,0,1,2,3,4,5) 135

亂數練習 練習 : 1. 印出六個 1~49 之間的亂數 2. 印出 100 個 1~50 之間的亂數, 並統計 25 出現幾次 3. 產生 100 個 0~100 之間的亂數, 印出最小值及最大值 平均值 4. 寫一個簡易猜數字大小的遊戲 : 產生一個 1~100 之間的亂數, 請玩家猜大小, 要提示猜得太大或太小了 136

亂數練習參考寫法 1. 印出六個 1~49 之間的亂數 Dim n As Integer Randomize() For i = 1 To 6 n = Int( Rnd() * 49) + 1 Console.WriteLine(n) Next Console.Read() 137

亂數練習參考寫法 2. 印出 100 個 1~50 之間的亂數, 並統計 25 出現幾次 Dim n, m As Integer m = 0 Randomize() For i = 1 To 100 n = Int( Rnd() * 50) + 1 Console.Write(n & ",") If n = 25 Then m += 1 Next Console.WriteLine(vbCrLf & "25 出現了 " & m & " 次 ") Console.Read() 138

亂數練習參考寫法 3. 產生 100 個 0~100 之間的亂數, 印出最小值及最大值 平均值 Dim n, max, min As Integer Dim avg As Double Randomize() max = 0 : min = 100 For i = 1 To 100 n = Int( Rnd() * 101) If n > max Then max = n If n < min Then min = n avg += n Next Console.WriteLine(" 最小值 : " & min) Console.WriteLine(" 最大值 : " & max) 為什麼是 101? Console.WriteLine(" 平均值 : " & avg / 100) Console.Read() 139

亂數練習參考寫法 4. 寫一個簡易猜數字大小的遊戲 : 產生一個 1~100 之間的亂數, 請玩家猜大小, 要提示猜得太大或太小了 Dim num, x As Integer Randomize() num = Int( Rnd() * 100) + 1 Do Console.Write(" 請輸入數字 : ") x = Console.ReadLine() If x < num Then Console.WriteLine(" 太小了 ") If x > num Then Console.WriteLine(" 太大了 ") Loop Until num = x Console.WriteLine(" 答對了!!") Console.Read() 140

上學期進度結束 ~ 141