Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ch04 VB.NET的流程控制 網頁程式設計.

Similar presentations


Presentation on theme: "Ch04 VB.NET的流程控制 網頁程式設計."— Presentation transcript:

1 Ch04 VB.NET的流程控制 網頁程式設計

2 流程控制的基礎 程式語言撰寫的程式碼大部分是一列指令接著一列指令循序的執行,但是對於複雜的工作,為了達成預期的執行結果,需要使用「流程控制結構」(Control Structures)。 流程控制可以配合條件判斷以便執行不同區塊的程式碼,或是重複執行區塊的程式碼,流程控制指令可以分為兩類,如下所示: 條件控制:條件控制是一個選擇題,可能為單一選擇或多選一,依照條件運算子的結果,決定執行那一個區塊的程式碼。 迴圈控制:迴圈控制是重複執行區塊的程式碼,其中擁有結束條件,以便結束迴圈的執行。

3 流程控制的基礎(續) 判斷結構 (decision structures) 迴圈結構 (loop structures)
If...Then…Else Select…Case Try…Catch…Finally 迴圈結構 (loop structures) For...Next For Each...Next Do...Loop While…End While

4 VB.NET的條件控制 If … Then是否選條件敘述 If … Then … Else二選一條件敘述
If … Then … ElseIf多選一條件敘述 Select Case多選一條件敘述 Try…Catch…Finally處理可能有錯誤的程式片斷(例如:除以零)

5 If … Then是否選條件敘述-說明 If…Then條件敘述是一種是否執行的條件,決定是否執行區塊內的程式碼,如果If條件為True,就執行Then...End If間的程式碼,如下所示: If score >= 60 Then Response.Write(name & "成績及格! ") Response.Write("學生成績: " & score & "<br>") End If

6 If … Then是否選條件敘述-流程圖

7 範例1: 將分數轉換成等第 優等: 90分(含)以上 甲等: 80分(含)以上 乙等: 70分(含)以上 丙等: 60分(含)以上
丁等: 低於60分

8 範例1: 將分數轉換成等第 加上HTML Dim score = 76
<head> <title>Ch 04 範例1 Ex04_01.aspx</title> </head> <body> <% 加上HTML Dim score = 76 Response.Write("分數 : " & score & "==> 得") If (score >= 90) Then Response.Write("優等<br>") End If If (score < 90 And score >= 80) Then Response.Write("甲等<br>") If (score < 80 And score >= 70) Then Response.Write("乙等<br>") If (score <70 And score >= 60) Then Response.Write("丙等<br>") If (score < 60) Then Response.Write("丁等<br>") VB… %> </body> </html>

9 If … Then … Else二選一條件敘述-說明
如果是排它情況的2個執行區塊,只能二選一,我們可以加上Else指令,如果If條件為True,就執行Then...Else間的程式碼,False就執行Else...End If間的程式碼,如下所示: If sex = "男" Then Response.Write(name & "男士您好! ") Else Response.Write(name & "女士您好!<br>") End If

10 If … Then … Else二選一條件敘述-流程圖

11 範例2: 將分數轉換成等第 Dim score = 76
Response.Write("分數 : " & score & "==> 得") If (score >= 90) Then Response.Write("優等<br>") Else ‘小於90 If (score >= 80) Then Response.Write("甲等<br>") Else ‘小於80 If (score >= 70) Then Response.Write("乙等<br>") Else ‘小於70 If (score >= 60) Then Response.Write("丙等<br>") Else ‘小於60 Response.Write("丁等<br>") End If

12 If … Then … ElseIf多選一條件敘述-說明
If … Then … ElseIf條件敘述屬於If … Then條件敘述的延伸,使用ElseIf指令建立多選一條件指令,如下所示: dtWeekday = Weekday(Today) If dtWeekday = 1 Then wdstring="星期日" ElseIf dtWeekday = 2 Then wdstring="星期一" ElseIf dtWeekday = 3 Then ………. Else wdstring="無法分辨是星期幾" End If

13 If … Then … ElseIf多選一條件敘述-流程圖

14 範例3: 將分數轉換成等第 Dim score = 76
Response.Write("分數 : " & score & "==> 得") If (score >= 90) Then Response.Write("優等<br>") ElseIf (score >= 80) Then Response.Write("甲等<br>") ElseIf (score >= 70) Then Response.Write("乙等<br>") ElseIf (score >= 60) Then Response.Write("丙等<br>") Else Response.Write("丁等<br>") End If

15 Select Case多選一條件敘述-說明
dtWeekday = Weekday(Today) Select Case dtWeekday Case 1: wdstring="星期日" Case 2: wdstring="星期一" Case 3: wdstring="星期二" Case 4: wdstring="星期三" Case 5: wdstring="星期四" Case 6: wdstring="星期五" Case 7: wdstring="星期六" Case Else Wdstring="無法分辨是星期幾" End Select

16 Select Case多選一條件敘述-流程圖

17 範例4: 將分數轉換成等第 Dim score = 76
Response.Write("分數 : " & score & "==> 得") Select Case score Case Is >= 90: Response.Write("優等<br>") Case 80 To 89: Response.Write("甲等<br>") Case 70 To 74, 75, 76, 77 To 79: Response.Write("乙等<br>") Case Is < 70, Is >= 60: Response.Write("丙等<br>") Case Else Response.Write("丁等<br>") End Select 注意:Case 之後可以接的型式

18 範例5: 將分數轉換成等第 Dim score = 76
Response.Write("分數 : " & score & "==> 得") Select Case (score \ 10) '做整數除法 Case 9: Response.Write("優等<br>") Case 8: Response.Write("甲等<br>") Case 7: Response.Write("乙等<br>") Case 6: Response.Write("丙等<br>") Case Else Response.Write("丁等<br>") End Select 另一種想法:利用整數除法

19 練習一 撰寫一程式,可以將阿拉伯數字轉成英文 1->one 2->two 3->three

20 VB.NET的迴圈控制種類 For … Step … Next迴圈 For Each … In … Next迴圈
Do …Exit Do … Loop迴圈 Do While … Loop迴圈 Do Until … Loop迴圈 Do … Loop While迴圈 Do … Loop Until迴圈 While … End While迴圈

21 For … Step … Next迴圈-說明 For Step Next迴圈指令可以執行固定次數的迴圈,其結束條件是Step量每次增加或減少一個值,當到達結束條件值就結束迴圈,例如:For Next迴圈每次增加1,執行1到10次相加的迴圈,如下所示: Dim i, total As Integer For i = 1 To 10 Step 1 total = total + i Next i

22 For … Step … Next迴圈-流程圖

23 巢狀的For … Next迴圈-說明 巢狀迴圈指的是在For Next迴圈中擁有其它For Next迴圈,迴圈有如巢狀般層層排列,如下所示:
For i = 1 To 9 For j = 1 To 9 …… Next j Next i

24 巢狀的For … Next迴圈-執行過程

25 範例6:列出同學名單 說明: 將學生的名單存在names陣列中 names[0] = “愛力斯” names[1] = “馬提”

26 範例6:列出同學名單 Dim names(5) As String Dim i As Integer names(0) = "愛力斯"
For i = 0 to 4 Response.Write(i & "號同學是 " & names(i) & "<br>") Next i Ex04_06.aspx

27 For Each … In … Next迴圈 For Each迴圈是使用在集合物件或陣列,可以顯示集合物件或陣列的所有元素,特別適合那些不知道到底有多少元素的集合物件或陣列,如下所示: For Each userName in names Response.Write("<td>" & userName & "</td>") Next 程式碼變數name為陣列,這個迴圈可以取得所有陣列的元素。

28 範例7:列出同學名單 Dim names(5) As String Dim userName As String
For Each userName in names Response.Write(userName & "<br>") Next

29 Exit For中斷For迴圈 如果在迴圈尚未到達結束條件時,我們可以使用Exit For指令強迫跳出For Next迴圈,結束迴圈的執行,如下所示: For i = 1 To 100 Step 1 Exit For Next For Next迴圈指令中插入Exit For指令,當迴圈執行到此指令就會中斷迴圈的執行。

30 Do …Exit Do … Loop迴圈-說明 Do Loop迴圈在VB.NET屬於十分重要且變化最多的迴圈結構,搭配條件測試可以在3種位置測試迴圈的結束條件,如下: 迴圈開始:在迴圈開始使用While或Until指令測試迴圈條件。 迴圈結尾:在迴圈結尾使用While或Until指令測試條件,結尾測試迴圈至少執行一次。 中斷迴圈:在迴圈中使用Exit Do指令中斷迴圈的執行。

31 Do …Exit Do … Loop迴圈-中斷迴圈
如果沒有使用While或Until指令在迴圈頭尾測試條件,單純Do Loop迴圈是一個無窮迴圈,我們可以使用Exit Do指令結束迴圈,如下所示: Do …. Exit Do i = i + 1 Loop Do Loop迴圈插入Exit Do指令,當迴圈執行到此指令就會中斷迴圈執行,Do Loop迴圈需要自行使用計數器變數來增減其值。

32 Do While … Loop迴圈-說明 Do Loop迴圈使用While條件在迴圈開頭檢查,開頭檢查的目的是判斷是否允許進入迴圈,換句話說,While指令的測試條件如果成立時才能進入迴圈,如下: i = 1 total = 0 Do While i <=10 total = total + i i = i + 1 Loop

33 Do While … Loop迴圈-流程圖

34 Do Until … Loop迴圈-說明 Do Loop迴圈使用Until條件在迴圈開始檢查,Until直到條件成立,如果條件不成立就進入迴圈,如下所示: i = 1 total = 0 Do Until i > 10 total = total + i i = i + 1 Loop

35 Do Until … Loop迴圈-流程圖

36 Do … Loop While迴圈-說明 Do Loop迴圈如果使用While條件在迴圈結尾檢查,這個Do Loop迴圈至少會執行一次,如下所示: i = 1 total = 0 Do total = total + i i = i + 1 Loop While i <= 10

37 Do … Loop While迴圈-流程圖

38 Do … Loop Until迴圈-說明 Do Loop迴圈使用Until條件在迴圈結尾檢查,這個迴圈至少會執行一次,如下所示: i = 1
total = 0 Do total = total + i i = i + 1 Loop Until i > 10

39 Do … Loop Until迴圈-流程圖

40 Do/While … Loop/Until的巢狀迴圈
Do Loop迴圈如同For Next迴圈一樣,可以使用各種組合建立巢狀迴圈,如下所示: Do While i <= 9 j = 1 Do Response.Write(i & "*" & j & "=" & i*j) j = j + 1 Loop Until j > 9 i = i + 1 Loop

41 While … End While迴圈 While End While迴圈就是VB 6的While Wend迴圈,它是在迴圈開始測試條件,在功能上和Do While Loop迴圈相同,同樣While End While迴圈也可以建立巢狀迴圈,其架構如下所示: While i <= 9 j = 1 Response.Write(i & "*" & j & "=" & i*j) j = j + 1 End While i = i + 1

42 範例8:列出同學名單 Do While … Loop Dim names(5) As String Dim i As Integer
Response.Write("Do While ... LOOP <br>") i = 0 Do While ( i <= Ubound(names)) Response.Write(names(i) & "<br>") i += 1 Loop

43 範例8:列出同學名單 Do Until … Loop Dim names(5) As String Dim i As Integer
Response.Write("Do Until ... LOOP <br>") i = 0 Do Until ( i > Ubound(names)) Response.Write(names(i) & "<br>") i += 1 Loop

44 範例8:列出同學名單 Do … Loop While Dim names(5) As String Dim i As Integer
Response.Write("Do ... LOOP While <br>") i = 0 Do Response.Write(names(i) & "<br>") i += 1 Loop While ( i <= Ubound(names))

45 範例8:列出同學名單 Do … Loop Until Dim names(5) As String Dim i As Integer
Response.Write("Do ... LOOP Until <br>") i = 0 Do Response.Write(names(i) & "<br>") i += 1 Loop Until ( i > Ubound(names))

46 範例8:列出同學名單 While … End While Dim names(5) As String Dim i As Integer
Response.Write("While ... End While <br>") i = 0 While ( i <= Ubound(names)) Response.Write(names(i) & "<br>") i += 1 End While

47 VB.NET的錯誤處理-語法 在VB.NET提供更結構化的錯誤處理敘述,即Try End Try,如下所示: Try ' 測試的錯誤程式碼
……………… Catch e As Exception ' 錯誤處理的程式碼 Finally …………… End Try

48 VB.NET的錯誤處理-說明 錯誤處理敘述可以分為3個部分,如下:
Try程式區塊:在Try和Catch指令間的程式區塊是VB.NET需要錯誤處理的程式碼。 Catch程式區塊:如果Try程式區塊的程式碼發生錯誤,在Catch到Finally指令間的程式區塊將會傳入參數e的Exception例外物件,可以使用e.ToString()方法顯示錯誤資訊,或建立錯誤處理的補救程式碼。 Finally程式區塊:這是選擇性的程式區塊,不論錯誤是否產生,都會執行此區塊的程式碼,通常是用來善後的程式碼。

49 範例9:顯示錯誤訊息指出除以0 <html> <head>
<title>第四章範例9:錯誤處理程式敘述</title> </head> <body> <% Dim x As Integer = 150 Dim y As Integer = 10 Try x = x / y Catch E As Exception Response.Write("程式錯誤: " & E.ToString()) Finally Response.Write("<hr>測試值 x = " & x & "<br>") Response.Write("測試值 y = " & y & "<br>") End Try %> </body> </html>

50 練習二製作 “算術教學網頁” 教學內容為: 1+1=2 2+2=4 3+3=6 Ex04_09.aspx

51 練習三 請在ASP.NET程式使用 迴圈計算1到150所有偶數的總和 For/Next Do While/Loop
Do Until/Loop Do/Loop While Do/Loop Until While/End While 迴圈計算1到150所有偶數的總和


Download ppt "Ch04 VB.NET的流程控制 網頁程式設計."

Similar presentations


Ads by Google