440 likes | 591 Views
Windows programming 視窗程式設計. Yuan-Yu Tsai 蔡淵裕 yytsai@asia.edu.tw 辦公室: HB61. CHAPTER 3 流程控制. 綱要. 為何需要流程控制 ? 流程控制指令的介紹 條件判斷 迴圈 陣列. 為何需要流程控制 ?. 撰寫程式是為了利用電腦強大的運算能力來進行資訊處理或計算 通常處理或計算等功能都需要 重複處理 ,且需要 進行判斷 ,因此便需要 『 流程控制 』 等相關指令. 流程控制- If…Then ( 條件判斷 ).
E N D
Windows programming視窗程式設計 Yuan-Yu Tsai 蔡淵裕 yytsai@asia.edu.tw 辦公室:HB61
CHAPTER 3 流程控制
綱要 • 為何需要流程控制? • 流程控制指令的介紹 • 條件判斷 • 迴圈 • 陣列
為何需要流程控制? • 撰寫程式是為了利用電腦強大的運算能力來進行資訊處理或計算 • 通常處理或計算等功能都需要重複處理,且需要進行判斷,因此便需要『流程控制』等相關指令
流程控制-If…Then (條件判斷) • condition通常是一個布林(Boolean)運算式,但也可以是任何計算結果為數字的運算式 • 若condition為一數值,則一個為零的數值會被視為False,而任何非零數值都被看作True • 若condition為True,則會執行Then關鍵字後面的所有指令;反之,則執行Else後面的指令
Exercise • 假設家用電費每一度是2.1元,而商業用電每一度是2.7元,請設計一個程式,讓使用者輸入電表上的度數,以及用電身分(是家用還是商業用),並依照使用者輸入的資料,計算出應繳交之電費 • 利用If指令
流程控制-Select…Case • 若test expression符合Caseexpression的條件,即會執行接在Case後的statements,直到下一個Case或是End Select為止 • 若test expression符合一個以上Caseexpression的條件,則程式只會執行第一個符合條件的statements,然後就跳離Select Case • 如果在每一個Caseexpression之間找不到符合條件者,則Case Else陳述式後面的程式碼會被執行 • expression可使用多個運算式或範圍 • 1 To 4, 7 To 9 • "nuts" to "soup" • Is > Max_Number
讓使用者輸入月份,透過Select Case判斷屬於哪一種季節
數字須由小到大 條件的陳述較為簡潔
Select Case 與 If … Then之差異 判斷前的程式碼 判斷後的程式碼 當判斷式為T時所要執行的程式碼 當判斷式為F時所要執行的程式碼 繼續其他的程式碼 判斷前的程式碼 判斷後的程式碼 Case else Case A 繼續其他的程式碼 Case B … 判斷式 (回傳結果為T或F) 判斷式 (回傳結果為文字 或數字 )
Exercise-稅率表 • 綜合所得稅稅率如下表所示。請寫一個程式讀入一個申報者的年收入,計算並輸出他應繳的稅金及其佔申報者收入之比例 • 使用Select Case之語法 • 稅金=綜合所得稅淨額*稅率級距-累進差額 • 比例=稅金 / 收入 * 100
H.W. 1 • 從今年開始,由於夏天用電量吃緊,因此電力公司將採用累進制度的電費計價方式,計價方式如下表,請設計一個程式,利用Select Case 或 If 判斷指令,讓使用者輸入用電身分、電表上的用電度數、用電的月份,計算出應繳的電費:
作業繳交注意事項 • 專案名稱請以"HW1-學號"命名,作業完成後請將整個資料夾壓縮後以附件方式寄至下列信箱 yytsai@asia.edu.tw 信件標題為:[VB] HW1-學號-姓名 繳交期限:10/13 PM 23:59:59
流程控制-Try…Catch錯誤處理 Try…Catch是用來在程式中進行防止錯誤的處理,若在執行階段發生無法預期的錯誤,能夠進行最後的狀態記錄,對程式的使用者將更有保障
可能發生錯誤的程式 錯誤處理之區段
流程控制- For …Next迴圈 • 在For和Next兩個關鍵字中的程式碼,會被重複的執行 • 執行的次數依照變數counter來決定 • 變數從start開始到end,每次遞增step • 在重複執行For…Next迴圈中的程式碼時,變數『counter』將會每此被替換成不同的值。
流程控制- For …Next迴圈 重複執行12次,每次i之數值皆不同,i之數值會從1開始持續累積到12
允許迴圈執行期間,中途離開(Exit For一定會出現在判斷式之後)
Example • 建立一個程式,讓使用者輸入開始和結束數字,並且找出其中的質數 • 質數為除了1和自己之外無法整除的數 • 利用for與if
Exercise • 請利用巢狀迴圈,設計出一個如下圖的九九乘法表
Exercise • 請撰寫程式產生下列兩圖形 * ** *** **** ***** ****** ******* ******** ********* ********** * ** *** **** ***** ****** ******* ******** ********* **********
H.W. 2 • 請撰寫程式產生下列圖形 * *** ***** ******* ********* *********** ************* *************** ***************** *******************
作業繳交注意事項 • 專案名稱請以"HW2-學號"命名,作業完成後請將整個資料夾壓縮後以附件方式寄至下列信箱 yytsai@asia.edu.tw 信件標題為:[VB] HW2-學號-姓名 繳交期限:10/20 PM 11:59:59
陣列 (Array) • 陣列,是一組在記憶體中連續存放的邏輯相關值,您可以將其視為一連串同樣名稱的變數 • 使用時機:需要重複定義多個變數時 • 例如底下之陣列可以用來存放某個班級當中,每位學生的身高 其餘類推 第三位同學的身高 第二位同學的身高 第一位同學的身高
陣列的建立與使用 陣列可以宣告成任何型別,宣告的方式只需要在自訂的陣列名稱後面加上小括弧即可
陣列的建立與使用-範例 names陣列裡兩個元素的值都設成「VB」 scores陣列裡的四個元素,則依順序設成「0,1,2,3」
建立陣列 For i As Integer = 0 To 11 sum += Temperature(i) Next
二維陣列 行之索引值 列之索引值 陣列名稱
利用迴圈要求使用者輸入資料,透過Console.ReadLine,可讀取使用者輸入的資料並存放到陣列中利用迴圈要求使用者輸入資料,透過Console.ReadLine,可讀取使用者輸入的資料並存放到陣列中
Exercise • 建立一個程式,讓使用者輸入班上所有學員的考試成績(0-100),並且計算出平均分數,最後列出考試成績優於平均分數的學生 • 利用陣列機制
流程控制-Do…While迴圈 • Do…Loop與For…Next類似,都是運用在處理重複運算的迴圈,只是迴圈結束條件的方式略有不同 • condition是判斷條件,當程式碼進入Do…Loop迴圈之後,會一直執行,每次執行時都會判斷condition條件是否成立
流程控制-Do…While迴圈 程式會讓使用者輸入一個數字並找到這個數字最接近10000的倍數(最接近10000,但不能超過)
Exercise • 請建立一段密碼判斷的程式,利用Console.ReadLine要求使用者輸入密碼(密碼可事先以字串定義好,例如Dim Pwd As String=”12345”),以Do…Loop迴圈判斷使用者輸入的密碼是否正確,若密碼錯誤,則要求使用者重新輸入,直到使用者輸入正確的密碼為止 • 若密碼正確,則跳離Do…Loop迴圈,顯示出『歡迎進入系統』
Exercise • 撰寫一程式請使用者輸入一正整數N,並求得該整數開根號後之整數數值 • 使用Do…While迴圈