Ch05 VB.NET的程序與函數 網頁程式設計.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
ASP.NET 網頁製作教本 -- 從基本語法學起
計算機程式語言實習課.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
DREAMWEVAER MX 2004入门 楼斌 BBS ID:lou 生命科学学院
网页 设计与制作.
Chapter 5 遞迴 資料結構導論 - C語言實作.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
Chapter 5 迴圈.
教師: 陳明瑤 電郵: 網際網路應用-網頁設計3 教師: 陳明瑤 電郵:
Ch11 檔案上傳及電子郵件 WEB程式設計.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
第5章 数组 Visual Basic程序设计.
列舉(enum).
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
过程 第 7 章.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
C 程式設計— 函式 台大資訊工程學系 資訊系統訓練班.
第6章 函數與巨集 6-1 由上而下的設計方法 6-2 建立函數 6-3 函數的參數呼叫方式 6-4 變數的有效範圍 6-5 遞迴函數
流程控制、陣列 台南市聖功女子高級中學 毛全良.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
網頁切換移轉 JS vs. ASP.NET.
Merge Partners’ programs by Matlab
程式語言Visual Basic 傳址與傳值
第7章 程序與函數 7-1 模組化程式設計 7-2 程序與函數 7-3 程序與函數的變數範圍 7-4 常用的內建函數 7-5 遞迴函數.
第2章 Visual Basic語法的ASP.NET程式
第3 章 VBScript的控制结构.
Java 程式設計 講師:FrankLin.
網頁切換移轉 JS vs. ASP.NET.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
Ch20. 計算器 (Mac 版本).
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
第 19 章 XML記憶體執行模式.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
|07 函數.
Ch04 VB.NET的流程控制 網頁程式設計.
輸入&輸出 函數 P20~P21.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
打地鼠(陣列版).
期末考.
撰寫MATLAB基礎財務程式 柯婷瑱.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
HTML大探索.
引用檔案.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 14 章 自定函數.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
函數應用(二)與自定函數.
亂數 隨機產生亂數 Random類別支援的方法: Next多載方法 Next :傳回亂數。
陣列與結構.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
1位选手参加了歌唱比赛,评委们的评分如下:
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
Chapter 6 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Ch05 VB.NET的程序與函數 網頁程式設計

大綱 模組化程式設計 VB.NET的程序與函數 程序與函數的變數範圍 VB.NET常用的內建函數

模組化的基礎 模組化就是把一件大型的工作切割成無數的小工作,切割工作屬於一種結構化分析的範疇,我們最常使用的是由上而下的設計方法,這也是我們常用的程式設計方法。 由上而下的設計方法是當我們面對問題時,先考慮整個問題將它分解成數個大模組,再對於這每一個大模組,一一分割成數個小模組,如此一直細分,最後等這些細分的小問題被一一解決後,再將它們組合起來,如此一層層的向上爬,完成整個設計。

程序 ... ... ... MySub() 程序呼叫 Sub MySub() End Sub 程序 每次呼叫均執行相同的程式碼

程序(續) 優點: 缺點: 程序具有重複使用性 程序可使程式更精簡 加上程序後,程式的可讀性會增加 將程式拆成數個程序後,程式較好偵錯、修改、維護 缺點: 程序使得程式的執行速度減慢,因為多了一道呼叫的手續

程序(續) VB2005提供了下列幾種程序: Sub程序(副程式):執行某些動作但沒有傳回值 Function程序(函式):執行某些動作而且有傳回值 Property程序:取得或設定物件的屬性 Operator程序:針對使用者自訂的類別或結構重新定義標準運算子的動作 Generic程序:定義一個或多個型別參數,每次呼叫Generic程序時可以傳遞不同型別的引數給它 事件程序:為了回應使用者或系統所觸發的事件時才會被呼叫

VB.NET的Sub程序與函數 Sub程序和函數可以將程式中一些常用的共同程式碼獨立成一個區塊,以便建立模組化程式設計,以便在程式中重複呼叫程序和函數,函數和Sub程序的差別在於函數有傳回值,而Sub程序沒有。 在ASP.NET Sub程序和函數一定需要使用<script>標籤的寫法,雖然可以置於任何位置,但是,通常都是置於程式檔案的開頭。 <Script Language = “VB” Runat=“Server”> … </Script>

建立Sub程序-建立 Sub程序是VB.NET程式區塊,使用Sub和End Sub包圍,程序沒有傳回值,例如:PrintTitle()程序,其程式碼如下所示: Sub PrintTitle() Response.Write(“<center><h2>建立程序Sub</h2></center>") Response.Write("<hr>") End sub 而PrintTitle()程序放在<head>區

建立程序Sub-呼叫 因為沒有傳回值,當呼叫Sub程序時,我們是使用Call指令,然後加上程序名稱進行呼叫,如下所示: Call PrintTitle Sub程序呼叫因為程序並沒有參數,所以不使用Call指令也可以,如下所示: PrintTitle() 也是呼叫程序PrintTitle(),因為沒有參數,程序的括號有沒有都一樣。

範例1 <%@ Page Language="VB" %> <html> <head> <title>建立程序Sub</title> <script language="VB" runat="Server"> ' 建立程序顯示標題文字 Sub PrintTitle() ' 顯示標題文字 Response.Write("<center><h3>建立程序Sub</h3></center>") Response.Write("<hr>") End Sub ' 顯示註腳文字 Sub PrintFooter() Response.Write("<hr>(c)Copyright by 陳會安<br>") </script> </head> <body> <% ' 呼叫程序 Call PrintTitle %> <p>這個ASP.NET程式使用程序建立文件的標題文字</p> PrintFooter() </body> </html>

建立函數Function-建立 Function函數改為使用Function和End Function包圍,不過函數擁有傳回值,傳回方式是使用Return指令傳回函數值,如下所示: Function One2Ten() Dim i, total As Integer total = 0 For i = 1 To 10 Step 1 total = total + i Next i Return total End Function

建立函數Function-傳回值 傳回值是使用Return指令,如下所示: 程式碼Return指令後,就是函數傳回值的變數或常數。 Return total 程式碼Return指令後,就是函數傳回值的變數或常數。

建立函數Function-呼叫 因為函數擁有傳回值,所以通常是使用指定敘述進行呼叫,且位在指定敘述的右邊,如下所示: total = One2Ten() 變數total可以取得函數的傳回值。

範例2 <%@ Page Language="VB" %> <html> <head> <title>建立函數Function</title> <script language="VB" runat="Server"> ' 建立程序顯示標題文字 Sub PrintTitle() ' 顯示標題文字 Response.Write("<center><h3>建立函數Function</h3></center>") Response.Write("<hr>") End Sub ' 1加到10 Function One2Ten() Dim i, total As Integer total = 0 For i = 1 To 10 Step 1 total = total + i Next i Return total End Function </script> </head> <body> <% Dim total As Integer ' 呼叫程序 Call PrintTitle ' 呼叫函數 total = One2Ten() %> <p>1加到10為<%=total%></p> </body> </html>

擁有參數的程序與函數-單參數 Sub程序和函數可以傳入參數值,在呼叫時就可以指定不同的參數,以便顯示或取得不同的執行結果,擁有參數的程序寫法,如下所示: Sub PrintTitle(title As String) Response.Write("<center><h3>" & title & "</h3></center>") Response.Write("<hr>") End Sub Sub程序擁有1個參數title字串。

擁有參數的Sub程序與函數-多參數 如果參數不只一個,請使用「,」符號分隔。擁有參數的函數寫法,如下所示: Function N2N(n1 As Integer, n2 As Integer) Dim i, total As Integer total = 0 For i = n1 To n2 Step 1 total = total + i Next i Return total End Function

擁有參數的Sub程序與函數-呼叫 如果Sub程序或函數擁有參數時,在呼叫時需要指定參數值,擁有參數的Sub程序呼叫,如下所示: Call PrintTitle("擁有參數的程序與函數") 程式碼在呼叫時傳入一個字串,這也就是Sub程序參數title的值。 同樣的,如果參數不只一個,在呼叫時也需要使用「,」符號分隔,擁有多個參數的函數呼叫,如下所示: N2N(1,10)

範例3:不同色彩日期 <body> <% Dim tmTime As Date Dim i, j as Integer <html> <head> <title>第五章 範例3:日期 </title> <Script Language = "VB" Runat = "Server"> Sub showDate(dtDay As Date, c As String) Response.Write("<font color = " & c & ">") Response.Write(Year(dtDay) & "年" & Month(dtDay) & "月" & Day(dtDay) & "日") Response.Write("<br>") Response.Write("</font>") End Sub </Script> </head> <body> <% Dim tmTime As Date Dim i, j as Integer For i = 1 to 10 tmTime = TimeOfDay If (i mod 2 = 1) Then showDate(Today, "red") Else showDate(Today, "green") End If Next i %> </body> </html>

範例4:從1加到N的和 <html> <head> <title>第五章 範例4:呼叫函數來計算總和</title> <Script Language="VB" Runat="Server"> Function sumOfn(n As Integer) Dim total, i As Integer total = 0 For i = 1 to n total += i Next i Return total End Function </Script> </head> <body> <% Dim i As Integer Dim sum As Integer For i = 1 to 10 sum = sumOfn(i) Response.Write("1+...+" & i & "=" & sum & "<br>") %> </body> </html>

練習一 建立Min()和Max()函數,函數傳入3個整數參數,傳回值分別是參數中的最小值和最大值 建立Sum()和Average()函數,分別計算下列成績的總分與平均值    78, 87,57,86,92

強迫跳出程序 如果在執行Sub程序時需要中斷程序的執行,可以使用跳出程序指令,如下所示: Exit Sub 當執行Sub程序時,執行到上述指令就會馬上離開程序,如同結束程序的執行。

強迫跳出函數 如果在執行函數時需要中斷函數的執行,跳出函數使用的指令,如下所示: Exit Function 當執行函數時,執行到上述指令就馬上離開函數,如同結束函數的執行,因為函數擁有傳回值,所以在執行此指令前需要傳回函數值。

範例5 <%@ Page Language="VB" %> <html> <head> <title>強迫跳出函數</title> <script language="VB" runat="Server"> ' One加到N Function One2N(stopFunc As Integer) Dim i, total As Integer total = 0 For i = 1 To 10000 Step 1 total = total + i ' 是否結束函數 If i = stopFunc Then Return total ' 傳回值 Exit Function End If Next i End Function </script> </head> <body> <center> <h2>測試Exit Function結束函數</h2> </center><hr> 1加到10為<%=One2N(10)%><br> 1加到100為<%=One2N(100)%><br> </body>

傳值或傳址呼叫程序與函數-說明 Sub程序和函數的參數依據不同的參數傳遞方式,將影響傳入參數的值,VB.NET提供2種參數傳遞方式,如下表所示:

傳值或傳址呼叫程序與函數-範例 VB.NET程序與函數預設使用傳值呼叫,所以並不用在參數前加上Byval指令,如下所示: Sub SubA(C As Integer) ….. End Sub 只有使用傳址的程序或函數才需要特別指名Byref指令,如下所示: Sub SubB(Byref C As Integer) ….

範例6:call by value <html> <head> <title>第五章 範例6:call by value</title> <Script Language="VB" Runat="Server"> Sub visitme(n As Integer) Response.Write("這是你第" & n & "次拜訪我<br>") n += 1 End Sub </Script> </head> <body> <% Dim i As Integer For i = 1 to 5 Response.Write("第" & i & "次呼叫visitme <br>") visitme(i) Next i %> </body> </html>

範例7:call by reference <html> <head> <title>第五章 範例6:call by reference</title> <Script Language="VB" Runat="Server"> Sub visitme(Byref n As Integer) Response.Write("這是你第" & n & "次拜訪我<br>") n += 1 End Sub </Script> </head> <body> <% Dim i As Integer For i = 1 to 5 Response.Write("第" & i & "次呼叫visitme <br>") visitme(i) Next i %> </body> </html

程序與函數的變數範圍 VB.NET語法的ASP.NET程式能夠擁有多個程序或函數,而且在ASP.NET程式宣告的每個變數都擁有其有效範圍,也就是當程式執行時,變數可以讓程序或函數內或其它程式碼存取的範圍。如下所示: 區域變數(Local Variables):在程序和函數內宣告的變數,變數只能在程序或函數內使用,程序或函數外的程式碼無法存取此變數。 全域變數(Global Variables):如果變數是在程序和函數外宣告,整個ASP.NET程式的程序和函數和其它程式碼都可以存取此變數。

範例8:整體變數 <html> <head> <title>第五章 範例8:整體變數</title> <Script Language="VB" Runat="Server"> Dim i As Integer Sub visitme() Response.Write("這是你第" & i & "次拜訪我<br>") i += 1 End Sub </Script> </head> <body> <% For i = 1 to 5 Response.Write("第" & i & "次呼叫visitme <br>") visitme() Next i %> </body> </html>

範例9 <%@ Page Language="VB" %> <html> <head> <title>程序與函數的變數範圍</title> <script language="VB" runat="Server"> ' 宣告全域變數 Dim A, B As Integer ' 程序A Sub SubA() ' 宣告區域變數 A = 3 ' 設定區域變數 B = 4 ' 設定區域變數 End Sub ' 程序B Sub SubB() A = 3 ' 設定全域變數 B = 4 ' 設定全域變數 </script> </head> <body> <center><h2>測試程序函數的變數範圍</h2></center> <hr> ASP.NET程式宣告全域變數A, B<br> SubA宣告區域變數A, B<br> SubB沒有宣告任何的區域變數<br><br> <table border=1> <% A = 1 ' 設定初始值 B = 2 Response.Write("<tr><td>執行過程</td><td>全域變數A值</td>") Response.Write("<td>全域變數B值</td></tr>") Response.Write("<tr><td>初始值</td><td>" & A & "</td>") Response.Write("<td>" & B & "</td></tr>") Call SubA() ' 呼叫SubA Response.Write("<tr><td>呼叫SubA後</td><td>" & A & "</td>") Call SubB() ' 呼叫SubA Response.Write("<tr><td>呼叫SubB後</td><td>" & A & "</td>") %> </body> </html>

VB.NET常用的內建函數 日期與時間函數 字串處理函數 資料型態檢查函數 資料轉換函數 亂數與四捨五入函數

日期與時間函數-說明

日期與時間函數-時間差 VB.NET還提供函數可以取得時間差和增減日期/時間,DateDiff()函數可以計算時間差,如下所示: DateDiff(單位字串, Date1, Date2) DateDiff()函數傳回後2個參數的時間差 單位字串設定後2個參數比較單位:秒(“s”)、分(“n”) 、小時(“H”) 、日(“D”)、或月(“m”)來比較。 VB.NET的DateAdd()函數可以加減日期/時間,如下所示: DateAdd(單位字串, Number, Date) DateAdd()函數使用與DateDiff()函數相同的單位字串,將第3個參數的日期時間加減參數Number的值後傳回。

字串處理函數-1

字串處理函數-2

字串處理函數-3

資料型態檢查函數

資料轉換函數

亂數與四捨五入函數-說明

亂數與四捨五入函數-產生亂數 亂數是隨機產生的數值序列,每個序列值屬於單精浮點數值,其值介於0到1之間,為了每次執行時都能產生不同的亂數序列,需要使用Randomize()函數初始亂數產生器,如下所示: Randomize() 在使用上述函數初始後,就可以使用Rnd()函數取得亂數值,如下所示: Value = Int(Rnd(10) * 100) 函數因為乘以100,配合Int()函數取得整數的亂數值,所以值是在0~100之間。

亂數與四捨五入函數-Rnd()函數的參數

範例10: 擲骰子 <html> <head> <title>第五章 範例1:擲骰子</title> </head> <body> <img src = "point1_6.gif" width=300 height=300 align="left"> <img src = "point1_6.gif" width=300 height=300 align="center"> <% Dim i As Integer Dim va1, va2 As Integer Dim P(6) As String P(1) = "p1.gif" P(2) = "p2.gif" P(3) = "p3.gif" P(4) = "p4.gif" P(5) = "p5.gif" P(6) = "p6.gif" Randomize() va1 = Int(Rnd()*6)+1 Response.Write("<img src = " & P(va1) & " width=300 height=300 align=""left"">") va2 = Int(Rnd()*6) + 1 Response.Write("<img src = " & P(va2) & " width=300 height=300 align=""center"">") Response.Write("<br>") Response.Write("<h2>共 " & (va1+va2) & "點</h2>") %> </body> </html>

範例11: 花式數字 Dim y, m, d, hr, minu, sec As Integer Dim i, j As Integer Dim nowDate As Date Dim temps As String Dim A(10) As String A(0) = "0.gif" A(1) = "1.gif" A(2) = "2.gif" A(3) = "3.gif" A(4) = "4.gif" A(5) = "5.gif" A(6) = "6.gif" A(7) = "7.gif" A(8) = "8.gif" A(9) = "9.gif" nowDate = Now Response.Write("<h2> 進站時刻: <h2>") y = Year(nowDate) temps = Str(y) For i = 2 to Len(temps) j = Val(Mid(temps, i,1)) Response.Write("<img src = " & A(j) & " width=50 height=100>") Next i Response.Write("年")

Response.Write("<img src = " & A(j) & " width=50 height=100>") temps = Str(hr) For i = 2 to Len(temps) j = Val(Mid(temps, i,1)) Response.Write("<img src = " & A(j) & " width=50 height=100>") Next i Response.Write(":") minu = Minute(nowDate) temps = Str(minu) sec = Second(nowDate) temps = Str(sec) m = Month(nowDate) temps = Str(m) For i = 1 to Len(temps) j = Val(Mid(temps, i,1)) Response.Write("<img src = " & A(j) & " width=50 height=100>") Next i Response.Write("月") d = Day(nowDate) temps = Str(d) For i = 2 to Len(temps) Response.Write("日") Response.Write("<br>") hr = Hour(nowDate)

練習1 將測試字串的字以隨機亂排 測試字串=“我愛網頁程式設計” 字要變成花式 共有8個字, 每一個字只可以出現一次! Ex05_08.aspx