程式語言與設計 ( 全 ) Fu nc For tion Button End Next Dim Public ByVal Form Private Sub led Enab Else
編輯大意 一 本書是一本專為普通高中 技術高中學生編寫的程式語言入門書籍, 全書以 Visual Basic 2015 Express 版的程式開發環境, 來介紹程式基礎實作, 適合首次學習程式語言及程式設計的學生使用 二 本書共分 Ⅰ Ⅱ 兩冊,Ⅰ 冊著重介紹程式設計概念與流程控制,Ⅱ 冊則著重介紹模組化程式設計與常見的程式開發應用, 兩冊章節架構如下 : Ⅰ 冊 認識程式語言 資料的運算與輸出 Visual Basic 控制項 程式設計概念 選擇結構 重複結構 Ⅱ 冊 模組化程式設計 Ⅰ- 函數與副程式 模組化程式設計 Ⅱ- 參數傳遞與變數活動範圍 繪圖 功能表與工具列的設計 檔案與資料庫 程式的部署 陣列 三 本書囊括歷年四技二專統一入學測驗 技藝競賽等程式語言相關考題重點, 全書的練習題亦以歷年試題為主 考量部分試題中的程式語法, 因 Visual Basic 版本略有差異, 在不影響原試題的考試重點前提下, 編者已微幅調整這些試題中的敘述, 使之適用於 Visual Basic 2015, 並在試題後的資料來源標示 " ", 以資區別 四 本書各章文範例 上機實作 程式設計實例及習題等檔案, 皆收錄於本書之教資光碟, 可供教師複製提供學生使用 同學亦可在 旗立資訊 網站 (http://www.fisp.com.tw) 下載取得 五 本書雖經嚴謹校訂, 但恐疏漏之處仍在所難免, 尚祈先進不吝賜正, 不勝感激 編者 謹誌
本書使用指引 為了撰寫一本易教易學的程式語言教材, 本書在流程控制 陣列結構 程式設計實例及控制項介紹等單元, 特別做了精心的安排與規劃, 分別說明如下 : 一 為了方便教學與學習, 本書在流程控制及陣列結構的介紹上, 特別設計了相同的教學節奏 - 語法 舉例 範例及舉一反三 每一個語法介紹之後皆有舉例, 以方便教師對照說明 ; 並搭配 2 ~ 3 個由淺入深的類題範例, 以加強 教 學 的成效 語法介紹 舉例說明 類題演練 程式碼旁標有圖說文字方塊者, 表示 該範例將用來組成程式設計實例 184 程式語言與設計 -Visual Basic Ⅰ 第 5 章 選擇結構 153 語法 & 舉例 依月份判斷季節 ( 春夏秋冬 ) Select Case 資料或運算式 Case 條件式 1 程式區塊 Case 條件式 2 程式區塊 Case 條件式 N 程式區塊 Case Else 程式區塊 End Select Select Case m Case 1 To 3 MsgBox(" 春 ") Case 4 To 6 MsgBox(" 夏 ") Case 7 To 9 MsgBox(" 秋 ") Case 10 To 12 MsgBox(" 冬 ") Case Else MsgBox(" 不在範圍內 ") End Select ( 內文範例 "ch5-4c.sln") 例 1 判斷使用者輸入的整數, 是否能被 2 及 5 整除? 程式碼 內文範例 "ch5-1c.sln" Private Sub Form1_Load( )Handles MyBase.Load Dim i As Integer i = InputBox(" 輸入一個整數 ") If i Mod 2 = 0 And i Mod 5 = 0 Then MsgBox(i & " 可同時被 2 及 5 整除 ") End If 也可用 AndAlso 取代, 類似 And, 但若左側為 假, 即直接傳回假 InputBox() 預設將資料以 字串型別傳回給變數, 此處 i 已宣告為整數型別, 故輸 入的資料會以整數型別儲存 執行結果 說明 m 1 ~ 3 4 ~ 6 7 ~ 9 10 ~ 12 Else 顯示 " 春 " 顯示 " 夏 " 顯示 " 秋 " 顯示 " 冬 " Case 敘述的條件式, 有下表 3 種表示方式 (n m 各代表一個數值 ): 語法 數值或字串 Case 數值 ( 或字串 ) 指定範圍 關係運算子 表 5-5 Case 敘述的 3 種表示方式 Case n To m Case Is 關係運算子 n 範例 Case 1 Case 2, 3, 4 Case "A", "B" Case 0 To 5 Case 10 To 20 Case Is > 2 Case Is <=10 顯示 " 不在範圍內 " 舉一反三 : 若要讓程式判斷數值 i 是否能被 3 整除, 但不能被 7 整除, 應該如何修改上述程式?( 提示 : 修改 If Then 敘述的條件式 ) 例 2 判斷輸入的身高 (h) 及體重 (w) 是否合理 ( 假設合理的身高是介於 50 ~ 230 公分之間, 體重是介於 2 ~ 200 公斤之間 )? 若輸入的值不合理, 則顯示 警示訊息, 並清除身高與體重欄位的值 程式碼 內文範例 "ch5-1d.sln" Private Sub Button1_Click( )Handles Button1.Click Dim h, w As Single h = TextBox1.Text : w = TextBox2.Text If (h < 50 Or h > 230) Or (w < 2 Or w > 200) Then MsgBox(" 身高或體重不合理 ") TextBox1.Text = "" TextBox2.Text = "" ' 將游標停駐在 TextBox1 上 TextBox1.Focus() 可用 OrElse 取代, 類似 End If O r, 但若左側為真, 即直接傳回真 此範例將用來組成第 5-3 節 身體質 量指數 (BMI) 計算 程式設計實例 執行結果 TextBox1 TextBox2 條件式中若使用逗號, 表示 或 的意思, 例如 Case 2, 5 To 10 表示 "2 或 5~10" 透過模仿或小修類題程式, 加強程式實力 二 本書範例採用 由小到大 由淺入深 由單一變完整 來設計, 目標是要循序漸進, 降低學習程式設計的難度, 以提高整體的學習成效 例如下頁圖右側的 程式設計實例 是延續內文解說的程式範例, 經小幅增修後組成一個功能較完整的程式範例
例 2 猜數字 ( 假設答案為 7) 此範例將用來組成第 6-2 節 猜數字遊戲 程式設計實例 第 6 章 重複結構 225 程式碼 內文範例 "ch6-2c.sln" Private Sub Form1_Load( ) Handles MyBase.Load Dim n, ans As Integer ans = 7 While n <> ans n = InputBox(" 猜猜看數字是多少?(1~10)") End While MsgBox(" 猜對了!ya!") 執行結果 解析 假設輸入的數字分別 為 4 2 7 ans n n <> ans 7 4 T 2 T 7 F 內文解說的程式範例 : 猜數字遊戲程式 ( 答案固定為 7) Step3- 撰寫程式 雙按開始猜鈕 (Button1), 開啟 Button1 的 Click 事件程序之程式碼視窗, 撰寫如下的程式碼 本程式範例是由第 6-2 節的例 2 延伸而來 Private Sub Button1_Click( ) Handles Button1.Click 10 Dim n, ans As Integer 20 Randomize() 30 ans = Int(Rnd() * 100) + 1 40 While n <> ans 50 n = InputBox(" 猜猜看數字是多少?(1~100)") 60 If n > ans Then MsgBox(" 猜錯了, 再小一點 ") 70 If n < ans Then MsgBox(" 猜錯了, 再大一點 ") 80 End While 90 MsgBox(" 猜對了!ya!") 100 Label2.Text = ans 說明 10 : 宣告程式需使用的變數 n( 使用者猜的數字 ) ans( 隨機產生的亂數 ) 20 : 設定亂數的序列, 避免程式每次執行時, 皆產生相同的一組亂數 30 : 產生 1~100 之間的整數亂數, 並指定給 ans, 作為答案 40~80 : 當 n 不等於 ans( 表示沒猜中 ), 執行 While End While 迴圈 : (1) 將使用者輸入的數字指定給 n 程式設計實例 : 沿續猜數字遊戲程式, 經小幅增修後, 可隨機產生數字作為答案, 並給予使用者猜答案的提示 (2) 如果 n( 使用者輸入的數字 ) 比 ans( 答案 ) 大, 顯示 " 猜錯了, 再小一點 " (3) 如果 n( 使用者輸入的數字 ) 比 ans( 答案 ) 小, 顯示 " 猜錯了, 再大一點 " 90 : 顯示 " 猜對了!ya!" 100 : 在 Label2 顯示 ans 的值 三 本書對於用來設計程式視窗畫面的控制項, 分為以下兩部分來介紹 : 1. 基本控制項 : 為了讓學生快速學會基本控制項的使用, 本書將 Form( 表單 ) Button( 按鈕 ) Label( 標籤 ) TextBox( 文字方塊 ) 等 4 個控制項, 安排以簡易的程式範例來做介紹 ( 如下圖所示 ) 106 程式語言與設計 -Visual Basic Ⅰ 第 3 章 Visual Basic 控制項 107 範例主題 說明 標籤範例 - 井字遊戲 ( 內文範例 "ch3-2b.sln") 範例說明 : 使用 9 個標籤控制項來顯示井字遊戲中的 O 或 X 當使用者在標籤上按滑鼠左鍵一下 (Click) 時, 標籤顯示 O; 當使用者在標籤上連按滑鼠左鍵二下 (DoubleClick) 時, 標籤顯示 X( 圖 3-15) 撰寫程式碼 : 1. 在 Label1 的 Click 事件中, 設定 Label1 控制項的 Text 屬性值為 "O" 2. 在 Label1 的 DoubleClick 事件中, 設定 Label1 控制項的 Text 屬性值為 "X" 簡易程式 碼撰寫 3. 參照上述說明, 在其他標籤 (Label2 ~ Label9) 的 Click 事件中, 設 定控制項的 Text 屬性值為 "O";DoubleClick 事件中, 設定控制項的 Text 屬性值為 "X" 程式 Private Sub Label1_Click( ) Handles Label1.Click Label1.Text = "O" 在任一標籤上單按, 在任一標籤上雙按, 會顯示 O 會顯示 X 控制項佈 建與屬性 設定 圖 3-15 標籤範例的執行結果 佈建控制項及設定屬性 : 1. 在表單上佈建 9 個 Label( 標籤 ) 控制項 ( 圖 3-16) Tip Label1~Label9 所需設定的屬性皆相同, 建議先建立一個 Label 控制項, 並將其屬性設定好後, 再利用複製及貼 Private Sub Label1_DoubleClick( ) Handles Label1.DoubleClick Label1.Text = "X" Private Sub Label9_Click( ) Handles Label9.Click Label9.Text = "O" Private Sub Label9_DoubleClick( ) Handles Label9.DoubleClick Label9.Text = "X" 上, 複製出 Label2~Label9 等控制項 圖 3-16 標籤範例的表單佈建畫面 Tip 井字遊戲若加入選擇結構 ( 如第 5 章將說明的 If Then 敘述 ), 即可判斷 O 或 X 是 2. 同時選取 Label1 ~ Label9 控制項, 在屬性視窗中, 點選 Font; 並按 否連成一線 鈕, 在開啟的字型交談窗, 設定這些控制項的字型樣式為 " 粗體 " 大小為 "36"
2. 常用控制項 : 為了讓學生確實學會如何將控制項與程式設計結合使用, 本書將 Timer( 計時器 ) GroupBox( 群組方塊 ) RadioButton( 選項按鈕 ) CheckBox( 核取方塊 ) PictureBox( 圖片方塊 ) ListBox ( 清單 ) ComboBox( 下拉式方塊 ) 等常用控制項, 安排在 7 個程式設計實例中, 逐一介紹 ( 如下圖所示 ) 174 程式語言與設計 -Visual Basic Ⅰ 第 5 章 選擇結構 175 程式設計實例 身體質量指數 (BMI) 計算 2. 依下表設定控制項的相關屬性 建立 "ans5-3a.sln" 新專案, 判斷使用者輸入的身高 體重是否合理 ( 假設合理的身高應介於 50 ~ 230 公分, 合理的體重應介於 2 ~ 200 公斤 ) 若不合理, 則顯示錯誤訊息並清除已輸入的資料 ; 反之, 則依下列公式計算身體質量指數 (Body Mass Index, BMI), 並判定使用者身材 ( 圖 5-8) 身體質量指數 (BMI) 計算公式 : 體重 ( 公斤 )/ 身高 2 ( 公尺 ) 表 5-3 控制項的屬性設定 控制項名稱 屬性 設定值 控制項名稱 屬性 設定值 Form1 Text 身體質量指數 (BMI) 計算 Label5 Text ( 空白 ) Button1 Text 計算 Label6 Text ( 空白 ) Label1 Text 身高 ( 公分 ): GroupBox1 Text 性別 Label2 Text 體重 ( 公斤 ): Text 男 RadioButton1 Label3 Text BMI 值 : Checked True Label4 Text 身材判定 : RadioButton2 Text 女 男性 BMI 大於 27.8, 女性大於 27.3 即表示肥胖 圖 5-8 身體質量指數 (BMI) 計算範例的執行結果 Step1- 設計表單畫面 ( 或開啟已佈建好控制項的範例檔案 "ex5-3a.sln") 1. 在表單上佈建, 如圖 5-9 所示之控制項, 其中 2 個 RadioButton( 選項按鈕 ) 控制項, 應佈建在 GroupBox( 群組方塊 ) 內 3. 本實例將使用 RadioButton( 選項按鈕 ) 及 GroupBox( 群組方塊 ) 控制 項來區隔選項按鈕與其它控制項, 以下是這二種控制項的使用說明 延伸學習 GroupBox 及 RadioButton 控制項 GroupBox( 群組方塊 ) 控制項可用來將視窗程式上相關的控制項群組在一起 ; 好處是可將控制項分類, 且同一群組中的控制項可一起移動 RadioButton( 選項按鈕 ) 控制項可用來佈建單選式選項資料 ( 圖 5-10), 以便使用者由多個項目中選取其中一個項目 表 5-4 為此二種控制項常用的屬性 GroupBox ( 群組方塊 ) RadioButton ( 選項按鈕 ) 表 5-4 GroupBox 與 RadioButton 控制項常用的屬性 RadioButton1 RadioButton2 TextBox1 TextBox2 控制項屬性功能 GroupBox Text 顯示文字 RadioButton Text Checked 顯示文字 是否被點選, True 為點選, False 為不點選 ( 預設值 ) 圖 5-9 身體質量指數 (BMI) 計算範例的表單佈建畫面 圖 5-10 PowerPoint 定位點交談窗 (GroupBox 與 RadioButton 控制項的使用實例 ) 教師可視實際教學需要, 彈性於課堂中 講授, 或略過由同學自行研讀 四 本書各章內文中, 標有 粗體 字型樣式者, 表示該字彙為專有名詞 Visual Basic 視窗中的元件名稱或 Visual Basic 關鍵字
目錄 Ⅰ 冊 第 1 章 認識程式語言 1-1 程式語言簡介... 2 1-2 Visual Basic 簡介...15 第 2 章 資料的運算與輸出 2-1 資料型別與宣告...44 2-2 輸入與輸出...56 2-3 運算子...70 第 3 章 Visual Basic 控制項 3-1 控制項的特徵與功能...88 3-2 基本控制項...99 第 4 章 程式設計概念 4-1 演算法簡介... 126 4-2 程式設計簡介... 137 4-3 結構化程式設計... 141 第 5 章 選擇結構 5-1 If Then 判斷敘述... 152 5-2 If Then Else 判斷敘述... 156 5-3 巢狀 If 判斷敘述... 170 5-4 Select Case 判斷敘述... 184
第 6 章 重複結構 6-1 For Next 迴圈敘述... 204 6-2 While End While 迴圈敘述... 218 6-3 Do Loop 迴圈敘述... 230 6-4 巢狀迴圈敘述... 249 第 7 章 陣列 7-1 認識陣列... 268 7-2 陣列的應用... 293 Ⅱ 冊 第 8 章 模組化程式設計 Ⅰ- 函數與副程式 8-1 模組化設計的概念... 2 8-2 函數... 8 8-3 副程式...36 第 9 章 模組化程式設計 Ⅱ- 參數傳遞與變數活動範圍 9-1 參數的傳遞...56 9-2 程序的種類與活動範圍...65 9-3 變數的活動範圍與存留期...71 第 10 章 繪圖 10-1 認識 Visual Basic 的繪圖環境...90 10-2 線段與文字的繪製...95 10-3 幾何圖形的繪製... 106 10-4 點陣影像的建立... 118
第 11 章 功能表列與工具列的設計 11-1 認識功能表與工具列群組控制項... 134 11-2 功能表列... 135 11-3 快顯功能表... 143 11-4 工具列... 150 第 12 章 檔案與資料庫 12-1 檔案存取... 166 12-2 資料庫簡介... 179 12-3 資料庫程式設計... 191 第 13 章 程式的部署 13-1 程式部署的概念... 210 13-2 程式部署的方法... 210 附錄 A... 218 附錄 B... 223 索引... 236