92
Visual Basic .NET Visual Basic .NET 語語語語 語語語語

Visual Basic .NET 語言介紹

  • Upload
    vaughan

  • View
    67

  • Download
    0

Embed Size (px)

DESCRIPTION

Visual Basic .NET 語言介紹. 程式的斷行. 斷行字元 VB.NET 使用底線「 _ 」作為斷行字元,利用斷行字元可以將太長的程式碼拆成較易閱讀的方式。斷行時必須在完整敘述的前面或後面空一個空格後,再加上斷行字元,才可以將程式敘述折到下一行。. Response.Write(CStr(sngFeet) & " 英呎 " & CStr(sngInches) & " 英吋等於 " & CStr(sngCentimeters) & " 公分 "). Response.Write(CStr(sngFeet) & " 英呎 " & _ - PowerPoint PPT Presentation

Citation preview

Page 1: Visual Basic .NET  語言介紹

Visual Basic .NET Visual Basic .NET 語言介紹語言介紹

Page 2: Visual Basic .NET  語言介紹

斷行字元斷行字元VB.NETVB.NET 使用底線「使用底線「 __ 」作為斷行字元,利用斷行」作為斷行字元,利用斷行字元可以將太長的程式碼拆成較易閱讀的方式。字元可以將太長的程式碼拆成較易閱讀的方式。斷行時必須在完整敘述的前面或後面空一個空格斷行時必須在完整敘述的前面或後面空一個空格後,再加上斷行字元,才可以將程式敘述折到下後,再加上斷行字元,才可以將程式敘述折到下一行。一行。

程式的斷行程式的斷行

Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 " & CStr(sngInches) & " " & CStr(sngInches) & " 英吋等於 英吋等於 " & CStr(sngCentimeters) & " " & CStr(sngCentimeters) & " 公分公分 ")")

Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 " & CStr(sngInches) & " " & CStr(sngInches) & " 英吋等於 英吋等於 " & CStr(sngCentimeters) & " " & CStr(sngCentimeters) & " 公分公分 ")")

Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 " & _" & _CStr(sngInches) & " CStr(sngInches) & " 英吋等於 英吋等於 " & _" & _CStr(sngCentimeters) & " CStr(sngCentimeters) & " 公分公分 ")")

Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 " & _" & _CStr(sngInches) & " CStr(sngInches) & " 英吋等於 英吋等於 " & _" & _CStr(sngCentimeters) & " CStr(sngCentimeters) & " 公分公分 ")")

Response.Write("Response.Write(" 在斷行時,必須在完整的在斷行時,必須在完整的 " & _" & _"" 敘述前面或後面空一個空格。敘述前面或後面空一個空格。 ")")

Response.Write("Response.Write(" 在斷行時,必須在完整的在斷行時,必須在完整的 " & _" & _"" 敘述前面或後面空一個空格。敘述前面或後面空一個空格。 ")")

Page 3: Visual Basic .NET  語言介紹

註解註解• 註解是給程式設計師看的程式碼說明,註解是給程式設計師看的程式碼說明, VB.NETVB.NET 遇到遇到

註解會予以忽略跳過,在註解符號後面的資料全部視註解會予以忽略跳過,在註解符號後面的資料全部視為註解。 為註解。

• VB.NETVB.NET 有兩種標籤的方式,一是使用單引號「‘」,有兩種標籤的方式,一是使用單引號「‘」,另外一種則是使用另外一種則是使用 REMREM 關鍵字。 關鍵字。

程式的註解程式的註解

sngCentimeters=((sngFeet*12)+sngInches)*2.54 ‘sngCentimeters=((sngFeet*12)+sngInches)*2.54 ‘ 將英制單位轉成公制單位將英制單位轉成公制單位sngCentimeters=((sngFeet*12)+sngInches)*2.54 ‘sngCentimeters=((sngFeet*12)+sngInches)*2.54 ‘ 將英制單位轉成公制單位將英制單位轉成公制單位

sngCentimeters=((sngFeet*12)+sngInches)*2.54 REM 這是註解REM 以上為將英制單位轉成公制單位

sngCentimeters=((sngFeet*12)+sngInches)*2.54 REM 這是註解REM 以上為將英制單位轉成公制單位

Response.Write(CStr(sngFeet) & " 英呎 " & _ CStr(sngInches) & " 英吋等於 " & _ CStr(sngCentimeters) & " 公分 ")

Response.Write(CStr(sngFeet) & " 英呎 " & _ CStr(sngInches) & " 英吋等於 " & _ CStr(sngCentimeters) & " 公分 ")

Page 4: Visual Basic .NET  語言介紹

變數的基本概念變數的基本概念• 作為暫時存放程式執行過程中部分特定值作為暫時存放程式執行過程中部分特定值

變數的宣告變數的宣告• 變數名稱:有意義的文字代碼來取代變數名稱:有意義的文字代碼來取代 1616 進制的進制的記憶位置記憶位置

• 資料型態:決定變數可佔的記憶體大小和可存資料型態:決定變數可佔的記憶體大小和可存放的內容放的內容

• 宣告方式:宣告方式: dim dim 變數名稱 變數名稱 as as 資料型態資料型態

變數變數

Page 5: Visual Basic .NET  語言介紹

變數配置與執行方式變數配置與執行方式

Page 6: Visual Basic .NET  語言介紹

資料型別資料型別 儲存大小 儲存大小 說 明 說 明 可 儲 存 的 資 料 範 圍 可 儲 存 的 資 料 範 圍CharChar 2Bytes2Bytes 字元字元 00到到 6553565535

StringString10Bytes10Bytes加上加上(( 22乘以字串乘以字串長度)長度)

字串字串00到大約到大約 22百萬個雙位元字百萬個雙位元字元元

(( UnicodeUnicode))ShortShort 2Bytes2Bytes 精簡整數精簡整數 -32,768-32,768到到 32,76732,767

IntegerInteger 4Bytes4Bytes 整數整數 -2,147,483,648 -2,147,483,648 到到2,147,483,6472,147,483,647

LongLong 8Bytes8Bytes 長整數長整數-,223,372,036,854,775,808-,223,372,036,854,775,808 到到9,223,372,036,854,775,8079,223,372,036,854,775,807

SingleSingle 4Bytes4Bytes 單精浮點數單精浮點數負數部分為負數部分為 -3.402823E38 -3.402823E38 到到 -1.401298E-45-1.401298E-45正數部分為正數部分為 1.401298E-451.401298E-45 到到 3.402823E383.402823E38

變數的資料型態變數的資料型態

Page 7: Visual Basic .NET  語言介紹

資料型別資料型別 儲存大小 儲存大小 說 明 說 明 可 儲 存 的 資 料 範 圍 可 儲 存 的 資 料 範 圍

Double 8Bytes 雙精浮點數

負數部分為 -1.79769313486231E308到 -4.94065645841247E-324,正數部分為 4.94065645841247E-323到 1.79769313486232E308

Boolean 4Bytes 布林 True或 False

Object 4Bytes 物件 任何型別的物件其記憶體位址都可以被物件型別的變數儲存

Decimal 16Bytes 數值

+/-79,228,162,514,264,337,593,543,950,335以上未帶小數,若帶小數可存 28位,為 +/-7.9228162514264337593543950335最小為 +/-0.0000000000000000000000000001

Date 8Bytes 日期 西元 1年 1月 1號至 9999年 12月 31日

Byte 1Byte 位元 0到 255

變數的資料型態變數的資料型態

Page 8: Visual Basic .NET  語言介紹

選擇變數的資料型別選擇變數的資料型別使用變數前一定要宣告使用變數前一定要宣告變數名稱變數名稱及及資料型別資料型別。。

為變數命名為變數命名變數的命名要考慮容易理解與一慣性。 變數的命名要考慮容易理解與一慣性。

變數變數

Page 9: Visual Basic .NET  語言介紹

命名規則命名規則• 須以英文字母或底線須以英文字母或底線 __ 開頭。開頭。• 其中不可包含空格,但可包含數字。其中不可包含空格,但可包含數字。• 必須在同一範圍內是獨一無二的。必須在同一範圍內是獨一無二的。• 不可以包含標點或型別宣告字元,但可以不可以包含標點或型別宣告字元,但可以包含底線。包含底線。

• 不可以和不可以和 VB.NETVB.NET 的保留字,或系統物件的保留字,或系統物件名稱一樣。名稱一樣。

變數變數

Page 10: Visual Basic .NET  語言介紹

宣告變數宣告變數 VB.NET VB.NET 以「以「 dimdim 」 關鍵字來宣告變數,並」 關鍵字來宣告變數,並且在 且在 asas 關鍵字後面指定所要使用的變數型別。關鍵字後面指定所要使用的變數型別。不指定變數的型別,不指定變數的型別, VB.NET VB.NET 預設為 預設為 Object Object 型別型別。 。

語法語法 • Dim Dim 變數名稱 變數名稱 [As [As 資料型別資料型別 ]]• Dim strUserName As StringDim strUserName As String• Dim shtPrice As ShortDim shtPrice As Short• Dim objPen As ObjectDim objPen As Object• Dim objPenDim objPen

宣告變數宣告變數

Page 11: Visual Basic .NET  語言介紹

宣告變數時也可以指定一個值作為變數的初始值 ,宣告變數時也可以指定一個值作為變數的初始值 ,語法為:語法為: Dim Dim 變數名稱 變數名稱 As As 型別 型別 = = 初始值初始值

變數初值化變數初值化

<html><html><%<%Dim strUserName As String = "Charles"Dim strUserName As String = "Charles"Dim shtAge As Short = 30Dim shtAge As Short = 30Response.Write(strUserName)Response.Write(strUserName)Response.Write(" Response.Write(" 你好你好 , , 你的年齡是你的年齡是 : "): ")Response.Write(shtAge)Response.Write(shtAge)%>%></html></html>

<html><html><%<%Dim strUserName As String = "Charles"Dim strUserName As String = "Charles"Dim shtAge As Short = 30Dim shtAge As Short = 30Response.Write(strUserName)Response.Write(strUserName)Response.Write(" Response.Write(" 你好你好 , , 你的年齡是你的年齡是 : "): ")Response.Write(shtAge)Response.Write(shtAge)%>%></html></html>

Page 12: Visual Basic .NET  語言介紹

型別宣告字元型別宣告字元VB.NETVB.NET 的變數的變數不分大小寫不分大小寫 。 。 VB.NETVB.NET為了讓我們使用方便,可以利用為了讓我們使用方便,可以利用型別宣告型別宣告字元字元來宣告變數來宣告變數

例如:例如:

Dim intIncome%Dim intIncome%

Dim intPayment As IntegerDim intPayment As Integer

Dim intIncome%, shtAge As ShortDim intIncome%, shtAge As Short

資料型別資料型別 型別宣告字元型別宣告字元SingleSingle !!

DoubleDouble ##

IntegerInteger %%

LongLong &&

StringString $$

變數型別宣告字元變數型別宣告字元

Page 13: Visual Basic .NET  語言介紹

範例 – 計算身高範例 – 計算身高 173173 公分的男生體重公分的男生體重

變數變數

<html><html><%<%Dim bytHeight As ByteDim bytHeight As ByteDim bytWeight As ByteDim bytWeight As BytebytHeight=173bytHeight=173bytWeight=(bytHeight-80)*0.7bytWeight=(bytHeight-80)*0.7Response.Write(bytWeight)Response.Write(bytWeight)%>%></html></html>

<html><html><%<%Dim bytHeight As ByteDim bytHeight As ByteDim bytWeight As ByteDim bytWeight As BytebytHeight=173bytHeight=173bytWeight=(bytHeight-80)*0.7bytWeight=(bytHeight-80)*0.7Response.Write(bytWeight)Response.Write(bytWeight)%>%></html></html>

Page 14: Visual Basic .NET  語言介紹

共用型別系統共用型別系統 在任何在任何 Microsoft.NETMicrosoft.NET 語言中所宣告的變數,語言中所宣告的變數,最終都會轉成最終都會轉成 .NET Framework.NET Framework 共用型別共用型別。。所以在所以在 VB.NETVB.NET 中也可以同時混用中也可以同時混用 .NET Fra.NET Frameworkmework 共用型別來宣告變數。共用型別來宣告變數。

Dim A As Int32 Dim A As Int32 等於 等於 Dim B As IntegerDim B As Integer

變數變數 -- 共用型別共用型別

Page 15: Visual Basic .NET  語言介紹

VB.NETVB.NET型別型別 .NET Framework.NET Framework共用型別共用型別ByteByte ByteByte

ShortShort Int16Int16

IntegerInteger Int32Int32

LongLong Int64Int64

SingleSingle SingleSingle

DoubleDouble DoubleDouble

BooleanBoolean BooleanBoolean

CharChar CharChar

DecimalDecimal DecimalDecimal

DateDate DateTimeDateTime

ObjectObject ObjectObject

StringString StringString

對應的共用型別對應的共用型別

Page 16: Visual Basic .NET  語言介紹

優先順序優先順序 運算子運算子 名 名 稱 稱

範    範    例例

結 結 果果

高高

低低

()() 括號括號 A=(10+5)*3A=(10+5)*3 A=45A=45

^̂ 平方平方 B=3^2+10B=3^2+10 B=19B=19

* /* / 乘除乘除 C=12+3*2C=12+3*2 C=18C=18

\\ 整數除法整數除法 D=11\3+5D=11\3+5 D=8D=8

ModMod 餘數餘數 E=11 Mod 3E=11 Mod 3 E=2E=2

+ -+ - 加減法加減法 F=18+4-10F=18+4-10 F=12F=12

運算子的優先順序運算子的優先順序

Page 17: Visual Basic .NET  語言介紹

運算子運算子 範例範例 說明說明

+=+= bytA + = 1bytA + = 1 等於等於 bytA = bytA + 1bytA = bytA + 1

-=-= bytB - = 1bytB - = 1 等於等於 bytB = bytB - 1bytB = bytB - 1

*=*= bytC * = 2bytC * = 2 等於等於 bytC = bytC * 2bytC = bytC * 2

/=/= bytD / = 2bytD / = 2 等於等於 bytD = bytD / 2bytD = bytD / 2

\=\= bytE \ = 3bytE \ = 3 等於等於 bytE = bytE \ 3bytE = bytE \ 3

^=^= bytF ^ = 2bytF ^ = 2 等於等於 bytF = bytF ^ 2bytF = bytF ^ 2

&=&= strG & = strHstrG & = strH 等於等於 strG = strG & strHstrG = strG & strH

VB.NETVB.NET 新增的運算子 新增的運算子

Page 18: Visual Basic .NET  語言介紹

陣列陣列陣列是一種可以用陣列是一種可以用同一個變數名稱同一個變數名稱記載記載多相多相同型別資料同型別資料的一種資料結構,這個結構裡面的一種資料結構,這個結構裡面是由相同資料型別的元素所組合而成。 是由相同資料型別的元素所組合而成。

宣告語法宣告語法Dim Dim 陣列名稱陣列名稱 (( 元素上界限元素上界限 ))    [AS [AS 資料資料型別型別 ]]Dim shtAge(5) As ShortDim shtAge(5) As Short

陣列陣列

Page 19: Visual Basic .NET  語言介紹

之前的敘述宣告了一個名為之前的敘述宣告了一個名為 shtAgeshtAge 的精簡整的精簡整數型別陣列,這個陣列可以記錄數型別陣列,這個陣列可以記錄六個元素六個元素。 。

這個陣列宣告後在記憶體中產生六個連續記憶體區塊,六個元素分別都填入了初始值 0,並且將每個元素分配了一個索引值( index )。陣列的索引值一律從 0開始,而一直到所宣告的上界限為止。若要存取指定元素中的資料,則要利用這個索引值。

陣列的存取陣列的存取

Page 20: Visual Basic .NET  語言介紹

宣告的時候指定陣列內元素的初始值宣告的時候指定陣列內元素的初始值

陣列雖然方便使用,可是它不是不用付出代陣列雖然方便使用,可是它不是不用付出代價的;這個代價就是越大的陣列越佔記憶體價的;這個代價就是越大的陣列越佔記憶體空間。故對於陣列,使用多少就宣告多少。 空間。故對於陣列,使用多少就宣告多少。

陣列初始值宣告陣列初始值宣告

Dim Dim 陣列名稱陣列名稱 () [AS () [AS 資料型別資料型別 ] = {] = { 值值 1, 1, 值值 2, 2, 值值 3,…}3,…}Dim Dim 陣列名稱陣列名稱 () [AS () [AS 資料型別資料型別 ] = {] = { 值值 1, 1, 值值 2, 2, 值值 3,…}3,…}

Dim shtAge() As Short = {20,21,22,23,24,25}Dim shtAge() As Short = {20,21,22,23,24,25}Dim shtAge() As Short = {20,21,22,23,24,25}Dim shtAge() As Short = {20,21,22,23,24,25}

Page 21: Visual Basic .NET  語言介紹

多維陣列多維陣列想要利用陣列來管理及群組資料,可以用多維陣列。想要利用陣列來管理及群組資料,可以用多維陣列。

上面敘述宣告了一個名為上面敘述宣告了一個名為 shtStudentshtStudent 精簡整數型精簡整數型別的二維陣列,這個陣列為別的二維陣列,這個陣列為 6×26×2 的陣列,可以記的陣列,可以記錄錄 1212 個元素。 個元素。

多維陣列多維陣列

Dim shtStudent(5,1) As ShortDim shtStudent(5,1) As ShortDim shtStudent(5,1) As ShortDim shtStudent(5,1) As Short

Page 22: Visual Basic .NET  語言介紹

多維陣列的初始多維陣列的初始多維陣列也可以在宣告的時後初值化陣列內容。 多維陣列也可以在宣告的時後初值化陣列內容。

多維陣列的初始值設定多維陣列的初始值設定

Dim Dim 陣列名稱陣列名稱 (,[…,]) [AS (,[…,]) [AS 資料型別資料型別 ] = {{] = {{ 值值 11 值值 ,N…}, {,N…}, { 值值 1,1, 值值 NN…}[,…{}]}…}[,…{}]}

Dim Dim 陣列名稱陣列名稱 (,[…,]) [AS (,[…,]) [AS 資料型別資料型別 ] = {{] = {{ 值值 11 值值 ,N…}, {,N…}, { 值值 1,1, 值值 NN…}[,…{}]}…}[,…{}]}

Dim shtStudent(,) As Short = {{1,2,3,4,5,6},{7,8,9,10,11,12}}Dim shtStudent(,) As Short = {{1,2,3,4,5,6},{7,8,9,10,11,12}}Dim shtStudent(,) As Short = {{1,2,3,4,5,6},{7,8,9,10,11,12}}Dim shtStudent(,) As Short = {{1,2,3,4,5,6},{7,8,9,10,11,12}}

Page 23: Visual Basic .NET  語言介紹

動態陣列動態陣列無法精確的確定陣列所要使用的大小時,無法精確的確定陣列所要使用的大小時,在宣告陣列的時候空出元素的數目即可。在宣告陣列的時候空出元素的數目即可。

ReDimReDim 敘述也可以用來敘述也可以用來重新配置陣列的重新配置陣列的大小大小。注意,。注意, ReDimReDim 是敘述不是宣告,是敘述不是宣告,故必須要先宣告任意一陣列後,才可以故必須要先宣告任意一陣列後,才可以使用使用 ReDimReDim 敘述。 敘述。

動態陣列動態陣列

Dim shtStudent() As ShortDim shtStudent() As ShortDim shtStudent() As ShortDim shtStudent() As Short

ReDim shtStudent(5)ReDim shtStudent(5)ReDim shtStudent(5)ReDim shtStudent(5)

Page 24: Visual Basic .NET  語言介紹

下列範例是將下列範例是將 shtStudentshtStudent 這個陣列這個陣列擴張擴張 11個元素,並保留其值個元素,並保留其值::

針對多維陣列也可改變其元素的數目,針對多維陣列也可改變其元素的數目,但但是陣列的維度不可被改變,而且只有最後是陣列的維度不可被改變,而且只有最後一維的元素數量可以被改變一維的元素數量可以被改變,若是你改變,若是你改變了陣列的維度或是其他維的元素數目,則了陣列的維度或是其他維的元素數目,則會導致錯誤。會導致錯誤。

改變陣列元素數目改變陣列元素數目

Dim shtStudent() As Short = {20,21,22,23,24,25}Dim shtStudent() As Short = {20,21,22,23,24,25}

ReDim Preserve shtStudent(6)ReDim Preserve shtStudent(6)

Dim shtStudent() As Short = {20,21,22,23,24,25}Dim shtStudent() As Short = {20,21,22,23,24,25}

ReDim Preserve shtStudent(6)ReDim Preserve shtStudent(6)

Page 25: Visual Basic .NET  語言介紹

物件型別的陣列物件型別的陣列• 陣列裡面的資料型別,必須要和我們在宣告陣陣列裡面的資料型別,必須要和我們在宣告陣

列時所指定的資料型別一樣。列時所指定的資料型別一樣。• 如果這個陣列的資料型別為物件(如果這個陣列的資料型別為物件( ObjectObject )型)型

別。別。

可以存放四個元素的範例: 可以存放四個元素的範例:

物件型別的陣列物件型別的陣列

Dim objStudent(3) As ObjectDim objStudent(3) As ObjectobjStudent (0) = "Charles Lin“objStudent (0) = "Charles Lin“objStudent (1) = "100 Civil Blvd“objStudent (1) = "100 Civil Blvd“objStudent (2) = 29objStudent (2) = 29objStudent (3) = #10/03/1973#objStudent (3) = #10/03/1973#

Dim objStudent(3) As ObjectDim objStudent(3) As ObjectobjStudent (0) = "Charles Lin“objStudent (0) = "Charles Lin“objStudent (1) = "100 Civil Blvd“objStudent (1) = "100 Civil Blvd“objStudent (2) = 29objStudent (2) = 29objStudent (3) = #10/03/1973#objStudent (3) = #10/03/1973#

Page 26: Visual Basic .NET  語言介紹

屬性屬性 說明說明IsFixedSizeIsFixedSize (唯讀)傳回陣列是否為固定大小(唯讀)傳回陣列是否為固定大小IsReadOnlyIsReadOnly (唯讀)傳回陣列是否為唯讀(唯讀)傳回陣列是否為唯讀

IsSynchronizedIsSynchronized (唯讀)傳回是否同步存取陣列(唯讀)傳回是否同步存取陣列

LengthLength (唯讀)傳回陣列所有維度的元素總計(唯讀)傳回陣列所有維度的元素總計RankRank (唯讀)傳回陣列維度數(唯讀)傳回陣列維度數SyncRootSyncRoot (唯讀)傳回對陣列進行同步存取的物件(唯讀)傳回對陣列進行同步存取的物件

陣列常用的屬性陣列常用的屬性

Page 27: Visual Basic .NET  語言介紹

方法方法 說明說明

BinarySearch BinarySearch 利用二進位搜尋法搜尋一維陣列內第一個符合指利用二進位搜尋法搜尋一維陣列內第一個符合指定資料的元素定資料的元素

ClearClear 設定陣列內指定範圍的元素,並依陣列型別設定設定陣列內指定範圍的元素,並依陣列型別設定指定範圍的元素其資料為指定範圍的元素其資料為 00、、 FalseFalse或或 NothingNothing

Clone Clone 複製整個陣列複製整個陣列CopyCopy 複製陣列內指定範圍的元素至另一個陣列複製陣列內指定範圍的元素至另一個陣列CopyToCopyTo 複製一維陣列所有的元素到指定的一維陣列複製一維陣列所有的元素到指定的一維陣列CreateInstanceCreateInstance 產生一個新的陣列實體產生一個新的陣列實體GetLengthGetLength 傳回陣列中指定維度的元素數目傳回陣列中指定維度的元素數目

陣列常用的方法陣列常用的方法

Page 28: Visual Basic .NET  語言介紹

方法方法 說明說明GetLowerBoundGetLowerBound 傳回陣列的下界限傳回陣列的下界限GetUpperBoundGetUpperBound 傳回陣列的上界限傳回陣列的上界限GetValueGetValue 傳回陣列中指定元素的值傳回陣列中指定元素的值

IndexOfIndexOf 搜尋一維陣列或陣列內指定範圍的元素內容,並傳搜尋一維陣列或陣列內指定範圍的元素內容,並傳回第一個符合條件的元素索引回第一個符合條件的元素索引

LastIndexOfLastIndexOf 搜尋一維陣列或陣列內指定範圍的元素內容,並傳搜尋一維陣列或陣列內指定範圍的元素內容,並傳回最後一個符合條件的元素索引回最後一個符合條件的元素索引

ReverseReverse 反轉一維陣列全部的元素或某部分範圍元素的順序反轉一維陣列全部的元素或某部分範圍元素的順序SetValueSetValue 設定指定元素的內容為指定的值設定指定元素的內容為指定的值SortSort 排序一維陣列內的元素排序一維陣列內的元素

陣列常用的方法陣列常用的方法

Page 29: Visual Basic .NET  語言介紹

基本輸入與輸出基本輸入與輸出

Page 30: Visual Basic .NET  語言介紹

• 要取得使用者輸入的資料,要使用要取得使用者輸入的資料,要使用 RequeRequestst 物件。 物件。

• 變數 變數 = Request("= Request(" 參數名稱參數名稱 ")")

取得使用者輸入取得使用者輸入

<html><html><%<%Dim strName As StringDim strName As StringstrName=Request("MyName")strName=Request("MyName")Response.Write("Hello, ")Response.Write("Hello, ")Response.Write(strName)Response.Write(strName)%>%></html></html>

<html><html><%<%Dim strName As StringDim strName As StringstrName=Request("MyName")strName=Request("MyName")Response.Write("Hello, ")Response.Write("Hello, ")Response.Write(strName)Response.Write(strName)%>%></html></html>

Page 31: Visual Basic .NET  語言介紹

客戶端要傳送資料給網頁伺服器,只要在網址後面客戶端要傳送資料給網頁伺服器,只要在網址後面加上問號,並將資料名稱以及指定的值填入即可,加上問號,並將資料名稱以及指定的值填入即可,這個輸入的資料稱為「參數」,如下敘述所示: 這個輸入的資料稱為「參數」,如下敘述所示:

使用者輸入資料使用者輸入資料

http://127.0.0.1/cr/ch03/EX07.aspx?MyName=Charleshttp://127.0.0.1/cr/ch03/EX07.aspx?MyName=Charleshttp://127.0.0.1/cr/ch03/EX07.aspx?MyName=Charleshttp://127.0.0.1/cr/ch03/EX07.aspx?MyName=Charles

Page 32: Visual Basic .NET  語言介紹

參數上傳的實際情形參數上傳的實際情形

Page 33: Visual Basic .NET  語言介紹

參數也可以同時輸入多個,參數間以參數也可以同時輸入多個,參數間以「「 && 」符號來區隔即可。 」符號來區隔即可。

多個參數輸入多個參數輸入

<html><html><%<%Dim strName, strCity As StringDim strName, strCity As StringstrName=Request("MyName")strName=Request("MyName")strCity=Request("MyCity")strCity=Request("MyCity")Response.Write("Hello, " & strName & ", You live in " & strCity)Response.Write("Hello, " & strName & ", You live in " & strCity)%>%></html></html>

<html><html><%<%Dim strName, strCity As StringDim strName, strCity As StringstrName=Request("MyName")strName=Request("MyName")strCity=Request("MyCity")strCity=Request("MyCity")Response.Write("Hello, " & strName & ", You live in " & strCity)Response.Write("Hello, " & strName & ", You live in " & strCity)%>%></html></html>

http://127.0.0.1/cr/ch03/EX08.aspx?MyName=Charles&MyCity=Taipeihttp://127.0.0.1/cr/ch03/EX08.aspx?MyName=Charles&MyCity=Taipeihttp://127.0.0.1/cr/ch03/EX08.aspx?MyName=Charles&MyCity=Taipeihttp://127.0.0.1/cr/ch03/EX08.aspx?MyName=Charles&MyCity=Taipei

Page 34: Visual Basic .NET  語言介紹

需要設定需要設定 IISIIS 伺服器對於接收及傳送資料的編碼語系,伺服器對於接收及傳送資料的編碼語系,才能正確的顯示中文,這個設定檔案名稱為「才能正確的顯示中文,這個設定檔案名稱為「 web. coweb. confignfig 」。 」。

設定設定 IISIIS 的編碼及解碼語系的編碼及解碼語系

<!--web.config Configuration File--><!--web.config Configuration File--><configuration><configuration><system.web><system.web><globalization requestEncoding="big5" responseEncoding="big5"/<globalization requestEncoding="big5" responseEncoding="big5"/>></system.web></system.web></configuration></configuration>

<!--web.config Configuration File--><!--web.config Configuration File--><configuration><configuration><system.web><system.web><globalization requestEncoding="big5" responseEncoding="big5"/<globalization requestEncoding="big5" responseEncoding="big5"/>></system.web></system.web></configuration></configuration>

Page 35: Visual Basic .NET  語言介紹

Response.write(“Response.write(“ 顯示的訊息”顯示的訊息” )) Response.redirect(“URL”)Response.redirect(“URL”) Response.end Response.end

responseresponse 物件物件

Page 36: Visual Basic .NET  語言介紹

資料型別轉換資料型別轉換

Page 37: Visual Basic .NET  語言介紹

型別轉換函式型別轉換函式VB.NETVB.NET 會會自動自動處理兩個不同型別的資料操作,自處理兩個不同型別的資料操作,自動將兩種資料型別轉換成一樣後再執行操作。動將兩種資料型別轉換成一樣後再執行操作。

自動轉換型別的缺點 自動轉換型別的缺點 讓讓 VB.NETVB.NET 自動執行型別轉換可能會發生一些不可自動執行型別轉換可能會發生一些不可預期的結果,例如執行敘述「預期的結果,例如執行敘述「 shtB = "100" + "1shtB = "100" + "10"0" 」所的到的結果為」所的到的結果為 1001010010 而不是預期而不是預期 110110 。 。

資料型別轉換資料型別轉換

Dim strA As char = "100" Dim strA As char = "100" Dim strB As short = 10Dim strB As short = 10

shtB=shtB+strA ‘shtBshtB=shtB+strA ‘shtB 的結果將會是的結果將會是 110 110

Dim strA As char = "100" Dim strA As char = "100" Dim strB As short = 10Dim strB As short = 10

shtB=shtB+strA ‘shtBshtB=shtB+strA ‘shtB 的結果將會是的結果將會是 110 110

Page 38: Visual Basic .NET  語言介紹

型別轉換的函式:型別轉換的函式:

這些函式很好記,這些函式很好記, CC 是是 ConvertConvert 轉換的意轉換的意思,然後除了轉思,然後除了轉 ShortShort 型別外都是加上要型別外都是加上要轉換的型別簡寫。 轉換的型別簡寫。

函 式 函 式 轉換型別轉換型別CIntCInt IntegerInteger

CLngCLng LongLong

CObjCObj ObjectObject

CShortCShort ShortShort

CSngCSng SingleSingle

CStrCStr StringString

函 式 函 式 轉換型別轉換型別CBoolCBool BooleanBoolean

CByteCByte ByteByte

CCharCChar CharChar

CDateCDate DateDate

CDblCDbl DoubleDouble

CDecCDec DecimalDecimal

型別轉換函式型別轉換函式

Page 39: Visual Basic .NET  語言介紹

輸入英呎及英吋,並轉換成公制單位後輸出:輸入英呎及英吋,並轉換成公制單位後輸出:

資料型別的轉換資料型別的轉換

<html><html><%<%Dim sngFeet, sngInches, sngCentimeters As SingleDim sngFeet, sngInches, sngCentimeters As SinglesngFeet=CSng(Request("Feet"))sngFeet=CSng(Request("Feet"))sngInches=CSng(Request("Inches"))sngInches=CSng(Request("Inches"))sngCentimeters=((sngFeet*12)+sngInches)*2.54sngCentimeters=((sngFeet*12)+sngInches)*2.54Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 ")")Response.Write(CStr(sngInches) & " Response.Write(CStr(sngInches) & " 英吋等於 英吋等於 ")")Response.Write(CStr(sngCentimeters) & " Response.Write(CStr(sngCentimeters) & " 公分公分 ")")%>%></html></html>

<html><html><%<%Dim sngFeet, sngInches, sngCentimeters As SingleDim sngFeet, sngInches, sngCentimeters As SinglesngFeet=CSng(Request("Feet"))sngFeet=CSng(Request("Feet"))sngInches=CSng(Request("Inches"))sngInches=CSng(Request("Inches"))sngCentimeters=((sngFeet*12)+sngInches)*2.54sngCentimeters=((sngFeet*12)+sngInches)*2.54Response.Write(CStr(sngFeet) & " Response.Write(CStr(sngFeet) & " 英呎 英呎 ")")Response.Write(CStr(sngInches) & " Response.Write(CStr(sngInches) & " 英吋等於 英吋等於 ")")Response.Write(CStr(sngCentimeters) & " Response.Write(CStr(sngCentimeters) & " 公分公分 ")")%>%></html></html>

Page 40: Visual Basic .NET  語言介紹

ConvertConvert 物件物件• 除了型別轉換函式外,除了型別轉換函式外, .NET.NET 基底物件庫也提供了基底物件庫也提供了ConvertConvert 類別可以將基礎型別轉換成所指定的其類別可以將基礎型別轉換成所指定的其它基礎型別。 它基礎型別。

• 變數變數 =Convert.To=Convert.To 型別型別 (( 欲轉換的值欲轉換的值 // 變數變數 )) ConvertConvert 支援的基礎型別如下表所示: 支援的基礎型別如下表所示:

方法名稱方法名稱 轉換後的轉換後的 VBVB型別型別 說明說明ToBooleanToBoolean BooleanBoolean 轉布林型別轉布林型別ToCharToChar CharChar 轉字元型別轉字元型別ToSByteToSByte (非(非 VBVB內建型別)內建型別) 轉轉 88位元帶號整數型別位元帶號整數型別ToByteToByte ByteByte 轉轉 88位元未帶號整數型位元未帶號整數型

別別ToInt16ToInt16 ShortShort 轉精簡整數型別轉精簡整數型別ToInt32ToInt32 IntegerInteger 轉整數型別轉整數型別

ConvertConvert 資料型別的轉換資料型別的轉換

Page 41: Visual Basic .NET  語言介紹

ConvertConvert 支援的基礎型別如下表所示:支援的基礎型別如下表所示:

方法名稱方法名稱 轉換後的轉換後的 VBVB型別型別 說明說明ToInt64ToInt64 LongLong 轉長整數型別轉長整數型別

ToUInt16ToUInt16 (非(非 VBVB內建型內建型別)別) 轉未帶號精簡整數型別轉未帶號精簡整數型別

ToUInt32ToUInt32 (非(非 VBVB內建型內建型別)別) 轉未帶號整數型別轉未帶號整數型別

ToUInt64ToUInt64 (非(非 VBVB內建型內建型別)別) 轉未帶號長整數型別轉未帶號長整數型別

ToSingleToSingle SingleSingle 轉單精數型別轉單精數型別ToDoubleToDouble DoubleDouble 轉雙精數型別轉雙精數型別ToDecimalToDecimal DecimalDecimal 轉數值型別轉數值型別ToDateTimeToDateTime DateDate 轉日期型別轉日期型別ToStringToString StringString 轉字串型別轉字串型別

ConvertConvert 資料型別的轉換資料型別的轉換

Page 42: Visual Basic .NET  語言介紹

利用利用 ConvertConvert 物件的方法來轉換: 物件的方法來轉換:

ConvertConvert 資料型別的轉換資料型別的轉換

<html><html><%<%Dim sngFeet, sngInches, sngCentimeters As SingleDim sngFeet, sngInches, sngCentimeters As SinglesngFeet=Convert.ToSingle(Request("Feet"))sngFeet=Convert.ToSingle(Request("Feet"))sngInches=Convert.ToSingle(Request("Inches"))sngInches=Convert.ToSingle(Request("Inches"))sngCentimeters=((sngFeet*12)+sngInches)*2.54sngCentimeters=((sngFeet*12)+sngInches)*2.54Response.Write(Convert.ToString(sngFeet) & " Response.Write(Convert.ToString(sngFeet) & " 英呎 英呎 ")")Response.Write(Convert.ToString(sngInches) & " Response.Write(Convert.ToString(sngInches) & " 英吋等於 英吋等於 ")")Response.Write(Convert.ToString(sngCentimeters) & " Response.Write(Convert.ToString(sngCentimeters) & " 公分公分 ")")%>%></html></html>

<html><html><%<%Dim sngFeet, sngInches, sngCentimeters As SingleDim sngFeet, sngInches, sngCentimeters As SinglesngFeet=Convert.ToSingle(Request("Feet"))sngFeet=Convert.ToSingle(Request("Feet"))sngInches=Convert.ToSingle(Request("Inches"))sngInches=Convert.ToSingle(Request("Inches"))sngCentimeters=((sngFeet*12)+sngInches)*2.54sngCentimeters=((sngFeet*12)+sngInches)*2.54Response.Write(Convert.ToString(sngFeet) & " Response.Write(Convert.ToString(sngFeet) & " 英呎 英呎 ")")Response.Write(Convert.ToString(sngInches) & " Response.Write(Convert.ToString(sngInches) & " 英吋等於 英吋等於 ")")Response.Write(Convert.ToString(sngCentimeters) & " Response.Write(Convert.ToString(sngCentimeters) & " 公分公分 ")")%>%></html></html>

Page 43: Visual Basic .NET  語言介紹

程序程序 ProcedureProcedure

Page 44: Visual Basic .NET  語言介紹

程序的種類程序的種類• 「一般程序」(「一般程序」( General ProcedureGeneral Procedure ) ) • 「事件程序」(「事件程序」( Event ProcedureEvent Procedure ))• 「屬性程序」(「屬性程序」( Property ProcedureProperty Procedure ))

一般程序一般程序一般程序有兩種,分別為一般程序有兩種,分別為 SubSub (副程式)以及(副程式)以及FunctionFunction (函式)。(函式)。

程序程序

Page 45: Visual Basic .NET  語言介紹

SubSub• 以以 SubSub 方式寫成的程序稱為副程式,其執行完畢方式寫成的程序稱為副程式,其執行完畢

後後沒有傳回值沒有傳回值 , 也就是不會傳回執行的結果。 , 也就是不會傳回執行的結果。• 宣告為宣告為 PublicPublic 表示所有的程式都可以使用表示所有的程式都可以使用,而,而

宣告為宣告為 PrivatePrivate 則表示只有這個網頁中的程式可則表示只有這個網頁中的程式可以使用該程序,以使用該程序,若沒有宣告則預設為若沒有宣告則預設為 PublicPublic 。 。

SUBSUB 程序程序

[Public | Private] Sub 程序名稱 ( 參數 1 As 型別 , … 參數 N) 程式碼…End Sub

[Public | Private] Sub 程序名稱 ( 參數 1 As 型別 , … 參數 N) 程式碼…End Sub

Page 46: Visual Basic .NET  語言介紹

被被 scriptscript 標籤所圍起來的部分表示為程序,標籤所圍起來的部分表示為程序,不管不管是一般程序或是事件程序都必須被是一般程序或是事件程序都必須被 scriptscript 標籤所標籤所圍起來圍起來,程序只有被呼叫或是發生一件事件的時,程序只有被呼叫或是發生一件事件的時候才會被執行。候才會被執行。

執行程序的時候,只要執行程序的時候,只要直接輸入程序的名稱並且直接輸入程序的名稱並且要加上小括號要加上小括號即可,這個使用程序的動作為「呼即可,這個使用程序的動作為「呼叫」(叫」( CallCall )。 )。

SUBSUB 程序程序

<script language="VB" runat="server"><script language="VB" runat="server">Private Sub Private Sub 程序一程序一 ()()  程式碼…  程式碼… End SubEnd SubPrivate Sub Private Sub 程序二程序二 ()()  程式碼…  程式碼… End SubEnd Sub</script></script>

<script language="VB" runat="server"><script language="VB" runat="server">Private Sub Private Sub 程序一程序一 ()()  程式碼…  程式碼… End SubEnd SubPrivate Sub Private Sub 程序二程序二 ()()  程式碼…  程式碼… End SubEnd Sub</script></script>

Page 47: Visual Basic .NET  語言介紹

SUBSUB 程序程序

<html><html><%<%Response.Write("Response.Write(" 程序呼叫前程序呼叫前 <br>")<br>")SayHello()SayHello()Response.Write("Response.Write(" 程序呼叫後程序呼叫後 ")")%>%><script language="VB" runat="server"><script language="VB" runat="server">Private Sub SayHello()Private Sub SayHello() Response.Write("Hello<br>")Response.Write("Hello<br>")End SubEnd Sub</script></script></html></html>

<html><html><%<%Response.Write("Response.Write(" 程序呼叫前程序呼叫前 <br>")<br>")SayHello()SayHello()Response.Write("Response.Write(" 程序呼叫後程序呼叫後 ")")%>%><script language="VB" runat="server"><script language="VB" runat="server">Private Sub SayHello()Private Sub SayHello() Response.Write("Hello<br>")Response.Write("Hello<br>")End SubEnd Sub</script></script></html></html>

Page 48: Visual Basic .NET  語言介紹

參數的傳遞參數的傳遞若有要一併傳送的參數,則可以在小括號內輸入。若參數若有要一併傳送的參數,則可以在小括號內輸入。若參數為一個以上,則使用逗號來做分隔。為一個以上,則使用逗號來做分隔。

程序程序參數的傳遞參數的傳遞

<html><html><%<%SayHello("SayHello(" 煌章煌章 ")")%>%><script language="VB" runat="server"><script language="VB" runat="server">Private Sub SayHello(strName As String)Private Sub SayHello(strName As String) Response.Write("Hello, " & strName)Response.Write("Hello, " & strName)End SubEnd Sub</script></script></html></html>

<html><html><%<%SayHello("SayHello(" 煌章煌章 ")")%>%><script language="VB" runat="server"><script language="VB" runat="server">Private Sub SayHello(strName As String)Private Sub SayHello(strName As String) Response.Write("Hello, " & strName)Response.Write("Hello, " & strName)End SubEnd Sub</script></script></html></html>

Page 49: Visual Basic .NET  語言介紹

FunctionFunction 程序程序FunctionFunction 程序程序有「傳回值」有「傳回值」(( Return ValueReturn Value ),),也就是執行完畢後有執行結果可以接收,所以在也就是執行完畢後有執行結果可以接收,所以在使用使用 FunctionFunction 程序時可以使用變數、物件的屬性程序時可以使用變數、物件的屬性來接收,甚至可以直接將來接收,甚至可以直接將 FunctionFunction 程序直接拿來程序直接拿來作為其他方法或其他作為其他方法或其他 FunctionFunction 程序的參數值。程序的參數值。在在VB.NETVB.NET 中不接收傳回值是被允許的中不接收傳回值是被允許的。。

FunctionFunction 程序程序

[Public | Private] Function [Public | Private] Function 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 , …) [As , …) [As 傳回值資料型別傳回值資料型別 ]] 程式碼…程式碼… Return Return 傳回值 傳回值 | | 程序名稱 程序名稱 = = 傳回值傳回值End FunctionEnd Function

[Public | Private] Function [Public | Private] Function 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 , …) [As , …) [As 傳回值資料型別傳回值資料型別 ]] 程式碼…程式碼… Return Return 傳回值 傳回值 | | 程序名稱 程序名稱 = = 傳回值傳回值End FunctionEnd Function

Page 50: Visual Basic .NET  語言介紹

FunctionFunction 程序也是一樣必須被程序也是一樣必須被 ScriptScript 標籤所括標籤所括起來。 起來。

FunctionFunction 程序一樣可以接收參數,程序一樣可以接收參數, FunctionFunction程序執行後的結果可以利用程序執行後的結果可以利用 ReturnReturn 關鍵字傳回關鍵字傳回(( Return Return 傳回值) 傳回值)

使用使用 ReturnReturn 以及將傳回值指定給程序名稱這兩以及將傳回值指定給程序名稱這兩種傳回資料方式的差異,在於種傳回資料方式的差異,在於使用使用 ReturnReturn 會立會立即跳出即跳出 FunctionFunction 程序;而使用指定傳回值給程程序;而使用指定傳回值給程序名稱的方式則會繼續將序名稱的方式則會繼續將 FunctionFunction 程序執行完程序執行完畢畢。 。

FunctionFunction 在宣告時的敘述「在宣告時的敘述「 [As [As 傳回值資料型傳回值資料型別別 ]] 」即為明確宣告其傳回值的資料型別。 」即為明確宣告其傳回值的資料型別。

FunctionFunction 程序程序

Page 51: Visual Basic .NET  語言介紹

同一個同一個 FunctuinFunctuin 中測試兩種傳回資料的方法:中測試兩種傳回資料的方法:FunctionFunction 程序程序

<html><html><%<%Response.Write(Test())Response.Write(Test())%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function Test() As StringPrivate Function Test() As String Test = "Step 1<br>"Test = "Step 1<br>" Response.Write("Step 2<br>")Response.Write("Step 2<br>") Return "Step 4<br>"Return "Step 4<br>" Response.Write("Step5<br>")Response.Write("Step5<br>")End FunctionEnd Function</script></script></html></html>

<html><html><%<%Response.Write(Test())Response.Write(Test())%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function Test() As StringPrivate Function Test() As String Test = "Step 1<br>"Test = "Step 1<br>" Response.Write("Step 2<br>")Response.Write("Step 2<br>") Return "Step 4<br>"Return "Step 4<br>" Response.Write("Step5<br>")Response.Write("Step5<br>")End FunctionEnd Function</script></script></html></html>

Page 52: Visual Basic .NET  語言介紹

• 在在 SubSub 以及以及 FunctionFunction 程序中可以分別程序中可以分別使用使用 Exit SubExit Sub 以及以及 Exit FunctionExit Function 敘述敘述強迫跳出程序。 強迫跳出程序。

• 使用使用 ExitExit 敘述最主要是配合條件敘敘述最主要是配合條件敘述式,可以在某個狀況下不繼續執行述式,可以在某個狀況下不繼續執行程序的內容,以避免程序在某個不恰程序的內容,以避免程序在某個不恰當的狀況下執行而浪費系統的效能。 當的狀況下執行而浪費系統的效能。

強迫跳出程序強迫跳出程序

Page 53: Visual Basic .NET  語言介紹

如何強迫跳出如何強迫跳出 SubSub 以及以及 FunctionFunction 程序:程序:強迫跳出程序強迫跳出程序

<%<%TestSub()TestSub()Response.Write(TestFunction())Response.Write(TestFunction())%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub TestSub()Private Sub TestSub() Response.Write("Sub Step 1<br>")Response.Write("Sub Step 1<br>") Exit Sub 'Exit Sub ' 強迫跳出 強迫跳出 SubSub Response.Write("Sub Step 2<br>")Response.Write("Sub Step 2<br>")End SubEnd SubPrivate Function TestFunction() As StringPrivate Function TestFunction() As String Response.Write("Function Step 1<br>")Response.Write("Function Step 1<br>") Exit Function 'Exit Function ' 強迫跳出 強迫跳出 FunctionFunction Response.Write("Function Step 2<br>")Response.Write("Function Step 2<br>")End FunctionEnd Function</script></script>

<%<%TestSub()TestSub()Response.Write(TestFunction())Response.Write(TestFunction())%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub TestSub()Private Sub TestSub() Response.Write("Sub Step 1<br>")Response.Write("Sub Step 1<br>") Exit Sub 'Exit Sub ' 強迫跳出 強迫跳出 SubSub Response.Write("Sub Step 2<br>")Response.Write("Sub Step 2<br>")End SubEnd SubPrivate Function TestFunction() As StringPrivate Function TestFunction() As String Response.Write("Function Step 1<br>")Response.Write("Function Step 1<br>") Exit Function 'Exit Function ' 強迫跳出 強迫跳出 FunctionFunction Response.Write("Function Step 2<br>")Response.Write("Function Step 2<br>")End FunctionEnd Function</script></script>

Page 54: Visual Basic .NET  語言介紹

傳值及傳址傳值及傳址• 參數的傳遞有兩種情形:一種是傳遞變數參數的傳遞有兩種情形:一種是傳遞變數

的值,另一種是傳遞變數所在的記憶體位的值,另一種是傳遞變數所在的記憶體位址,上述兩種情形分別稱為傳值(址,上述兩種情形分別稱為傳值( By ValuBy Valuee )以及傳址()以及傳址( By ReferenceBy Reference )。 )。

• VB.NETVB.NET 的程序對於參數的傳遞預設是以傳的程序對於參數的傳遞預設是以傳值的方式執行值的方式執行,所以如果要以傳值的方式,所以如果要以傳值的方式傳遞參數,則傳遞參數,則 ByValByVal 關鍵字可以省略。關鍵字可以省略。

傳值及傳址傳值及傳址

Page 55: Visual Basic .NET  語言介紹

以以 SUBSUB 使用傳值以及傳址的方式來傳遞參數: 使用傳值以及傳址的方式來傳遞參數: 傳值及傳址傳值及傳址

<%<%Dim shtA As ShortDim shtA As ShortshtA=100shtA=100MyProcA(shtA)MyProcA(shtA)Response.Write("Response.Write(" 傳值後的傳值後的 shtAshtA 變數值變數值 :" & CStr(shtA) & "<br>"):" & CStr(shtA) & "<br>")MyProcB(shtA)MyProcB(shtA)Response.Write("Response.Write(" 傳址後的傳址後的 shtAshtA 變數值變數值 :" & CStr(shtA)):" & CStr(shtA))%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub MyProcA(ByVal shtB As Short)Private Sub MyProcA(ByVal shtB As Short) shtB=10shtB=10End SubEnd SubPrivate Sub MyProcB(ByRef shtB As Short)Private Sub MyProcB(ByRef shtB As Short) shtB=10shtB=10End SubEnd Sub</script></script>

<%<%Dim shtA As ShortDim shtA As ShortshtA=100shtA=100MyProcA(shtA)MyProcA(shtA)Response.Write("Response.Write(" 傳值後的傳值後的 shtAshtA 變數值變數值 :" & CStr(shtA) & "<br>"):" & CStr(shtA) & "<br>")MyProcB(shtA)MyProcB(shtA)Response.Write("Response.Write(" 傳址後的傳址後的 shtAshtA 變數值變數值 :" & CStr(shtA)):" & CStr(shtA))%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub MyProcA(ByVal shtB As Short)Private Sub MyProcA(ByVal shtB As Short) shtB=10shtB=10End SubEnd SubPrivate Sub MyProcB(ByRef shtB As Short)Private Sub MyProcB(ByRef shtB As Short) shtB=10shtB=10End SubEnd Sub</script></script>

Page 56: Visual Basic .NET  語言介紹

程序的覆載程序的覆載「覆載」(「覆載」( OverloadOverload ,也可稱為多載)程,也可稱為多載)程序就是序就是可以宣告許多名稱一樣的程序可以宣告許多名稱一樣的程序,但,但是是接收不同數目或型別的參數接收不同數目或型別的參數,執行時則,執行時則依使用者使用的情形決定執行哪個程序依使用者使用的情形決定執行哪個程序。 。

程序的覆載程序的覆載

[Public | Private] [Public | Private] 【【 OverloadsOverloads 】 】 Sub Sub 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 , …), …)敘述…敘述…End SubEnd Sub[Public | Private] [Public | Private] 【【 OverloadsOverloads 】 】 Function Function 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 ,, …) [As …) [As 傳回值資料型別傳回值資料型別 ]]敘述…敘述…End FunctionEnd Function

[Public | Private] [Public | Private] 【【 OverloadsOverloads 】 】 Sub Sub 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 , …), …)敘述…敘述…End SubEnd Sub[Public | Private] [Public | Private] 【【 OverloadsOverloads 】 】 Function Function 程序名稱程序名稱 (( 參數參數 1 As 1 As 型別型別 ,, …) [As …) [As 傳回值資料型別傳回值資料型別 ]]敘述…敘述…End FunctionEnd Function

Page 57: Visual Basic .NET  語言介紹

覆載了四個覆載了四個 TestTest 程序程序 (1)(1) 。 。

程序的覆載程序的覆載

<html><html><%<%Dim strRev As StringDim strRev As StringTest("Test(" 字串一字串一 ") '") ' 輸入一個字串資料輸入一個字串資料 , , 執行第一個對應的程式執行第一個對應的程式Test(12345) 'Test(12345) ' 輸入一個數值資料輸入一個數值資料 , , 執行第二個對應的程式執行第二個對應的程式Test(12345,12345) 'Test(12345,12345) ' 輸入兩個數值資料輸入兩個數值資料 , , 執行第三個對應的程式執行第三個對應的程式Test("Test(" 字串一字串一 ",""," 字串二字串二 ") '") ' 輸入兩個字串資料輸入兩個字串資料 , , 執行第四個對應的程式執行第四個對應的程式strRev=Test("strRev=Test(" 字串一字串一 ",""," 字串二字串二 ") '") ' 輸入兩個字串資料輸入兩個字串資料 , , 並用指定運算子將並用指定運算子將執行執行 '' 結果存入指定變數結果存入指定變數 , , 執行第四個對應的程式執行第四個對應的程式%>%><script language="VB" runat="Server"> <script language="VB" runat="Server"> '' 輸入一個字串時啟動下列程序輸入一個字串時啟動下列程序Private Overloads Sub Test(ByVal strA As String)Private Overloads Sub Test(ByVal strA As String) Response.Write("Response.Write(" 這是第一個程序這是第一個程序 : : 您傳來的資料是字串您傳來的資料是字串 <br>")<br>")End SubEnd Sub

<html><html><%<%Dim strRev As StringDim strRev As StringTest("Test(" 字串一字串一 ") '") ' 輸入一個字串資料輸入一個字串資料 , , 執行第一個對應的程式執行第一個對應的程式Test(12345) 'Test(12345) ' 輸入一個數值資料輸入一個數值資料 , , 執行第二個對應的程式執行第二個對應的程式Test(12345,12345) 'Test(12345,12345) ' 輸入兩個數值資料輸入兩個數值資料 , , 執行第三個對應的程式執行第三個對應的程式Test("Test(" 字串一字串一 ",""," 字串二字串二 ") '") ' 輸入兩個字串資料輸入兩個字串資料 , , 執行第四個對應的程式執行第四個對應的程式strRev=Test("strRev=Test(" 字串一字串一 ",""," 字串二字串二 ") '") ' 輸入兩個字串資料輸入兩個字串資料 , , 並用指定運算子將並用指定運算子將執行執行 '' 結果存入指定變數結果存入指定變數 , , 執行第四個對應的程式執行第四個對應的程式%>%><script language="VB" runat="Server"> <script language="VB" runat="Server"> '' 輸入一個字串時啟動下列程序輸入一個字串時啟動下列程序Private Overloads Sub Test(ByVal strA As String)Private Overloads Sub Test(ByVal strA As String) Response.Write("Response.Write(" 這是第一個程序這是第一個程序 : : 您傳來的資料是字串您傳來的資料是字串 <br>")<br>")End SubEnd Sub

Page 58: Visual Basic .NET  語言介紹

覆載了四個覆載了四個 TestTest 程序程序 (2)(2) 。 。

程序的覆載程序的覆載

'' 輸入一個數值時啟動下列程序輸入一個數值時啟動下列程序Private Overloads Sub Test(ByVal decA As Decimal)Private Overloads Sub Test(ByVal decA As Decimal) Response.Write("Response.Write(" 這是第二個程序這是第二個程序 : : 您傳來的資料是數值您傳來的資料是數值 " & "<br>")" & "<br>")End SubEnd Sub'' 輸入兩個字串時啟動下列程序輸入兩個字串時啟動下列程序Private Overloads Sub Test(ByVal decA As Decimal, ByVal decB As DecimPrivate Overloads Sub Test(ByVal decA As Decimal, ByVal decB As Decimal)al) Response.Write("Response.Write(" 這是第三個程序這是第三個程序 : : 您傳來的資料是兩個數值您傳來的資料是兩個數值 <br>")<br>")End SubEnd Sub'' 輸入兩個數值輸入兩個數值 , , 並用指定運算子接收執行結果時啟動下列程序並用指定運算子接收執行結果時啟動下列程序Private Overloads Function Test(ByVal strA As String, ByVal strB As String)Private Overloads Function Test(ByVal strA As String, ByVal strB As String) Response.Write("Response.Write(" 這是第四個程序這是第四個程序 : : 您傳來的資料是兩個字串您傳來的資料是兩個字串 " & "<br>")" & "<br>") Return strA & strB 'Return strA & strB ' 將字串連結後傳回將字串連結後傳回End FunctionEnd Function</script></script></html></html>

'' 輸入一個數值時啟動下列程序輸入一個數值時啟動下列程序Private Overloads Sub Test(ByVal decA As Decimal)Private Overloads Sub Test(ByVal decA As Decimal) Response.Write("Response.Write(" 這是第二個程序這是第二個程序 : : 您傳來的資料是數值您傳來的資料是數值 " & "<br>")" & "<br>")End SubEnd Sub'' 輸入兩個字串時啟動下列程序輸入兩個字串時啟動下列程序Private Overloads Sub Test(ByVal decA As Decimal, ByVal decB As DecimPrivate Overloads Sub Test(ByVal decA As Decimal, ByVal decB As Decimal)al) Response.Write("Response.Write(" 這是第三個程序這是第三個程序 : : 您傳來的資料是兩個數值您傳來的資料是兩個數值 <br>")<br>")End SubEnd Sub'' 輸入兩個數值輸入兩個數值 , , 並用指定運算子接收執行結果時啟動下列程序並用指定運算子接收執行結果時啟動下列程序Private Overloads Function Test(ByVal strA As String, ByVal strB As String)Private Overloads Function Test(ByVal strA As String, ByVal strB As String) Response.Write("Response.Write(" 這是第四個程序這是第四個程序 : : 您傳來的資料是兩個字串您傳來的資料是兩個字串 " & "<br>")" & "<br>") Return strA & strB 'Return strA & strB ' 將字串連結後傳回將字串連結後傳回End FunctionEnd Function</script></script></html></html>

Page 59: Visual Basic .NET  語言介紹

事件程序事件程序• 事件(事件( EventEvent )是物件所認識的動作。對動態網頁來說,)是物件所認識的動作。對動態網頁來說,

一頁動態網頁就是一個一頁動態網頁就是一個 PagePage 物件物件。 。 • 網頁每次在載入時會先發生網頁每次在載入時會先發生 Page_InitPage_Init 事件,然後再發事件,然後再發

生生 Page_LoadPage_Load 事件,最後網頁內容全部下載完畢時則發事件,最後網頁內容全部下載完畢時則發生生 Page_UnloadPage_Unload 事件。 事件。

• Page_InitPage_Init 事件通常在事件通常在 PagePage 物件被重新執行時,被物件被重新執行時,被 ASP.ASP.NETNET 網頁用來取得網頁的狀態。 網頁用來取得網頁的狀態。

• Page_LoadPage_Load 事件由開發人員使用,用來初值網頁上的物事件由開發人員使用,用來初值網頁上的物件,或是使用者重新執行網頁時用來回復物件的狀態用。件,或是使用者重新執行網頁時用來回復物件的狀態用。

事件程序事件程序

[Public | Private] Sub [Public | Private] Sub 物件名稱物件名稱 __ 事件名事件名 (sender As Object, e As EventArg(sender As Object, e As EventArgs)s) 程式碼…程式碼…End SubEnd Sub

[Public | Private] Sub [Public | Private] Sub 物件名稱物件名稱 __ 事件名事件名 (sender As Object, e As EventArg(sender As Object, e As EventArgs)s) 程式碼…程式碼…End SubEnd Sub

Page 60: Visual Basic .NET  語言介紹

回應網頁執行時所觸發的回應網頁執行時所觸發的 Page_LoadPage_Load 事件:事件:Page_LoadPage_Load 事件事件

<html><html><%<%Response.Write("Response.Write(" 事件發生後事件發生後 ")")%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub Page_Load(sender As Object, e As EventArgs)Private Sub Page_Load(sender As Object, e As EventArgs) Response.Write("Response.Write(" 網頁在載入時發生網頁在載入時發生 LoadLoad 事件事件 , , 即自動執行本程序即自動執行本程序 <br>")<br>")End SubEnd Sub</script></script></html></html>

<html><html><%<%Response.Write("Response.Write(" 事件發生後事件發生後 ")")%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Sub Page_Load(sender As Object, e As EventArgs)Private Sub Page_Load(sender As Object, e As EventArgs) Response.Write("Response.Write(" 網頁在載入時發生網頁在載入時發生 LoadLoad 事件事件 , , 即自動執行本程序即自動執行本程序 <br>")<br>")End SubEnd Sub</script></script></html></html>

Page 61: Visual Basic .NET  語言介紹

事件程序事件程序

Page 62: Visual Basic .NET  語言介紹

流程控制流程控制

Page 63: Visual Basic .NET  語言介紹

流程控制流程控制控制程式控制程式的流程,首先要了解控制程式控制程式的流程,首先要了解兩種運算子,這兩種運算子為「比較運兩種運算子,這兩種運算子為「比較運算子」以及「邏輯運算子」。這兩種運算子」以及「邏輯運算子」。這兩種運算子的傳回值都是為布林型別,不是代算子的傳回值都是為布林型別,不是代表「真」的表「真」的 TrueTrue 就是代表「偽」的就是代表「偽」的 FalFalsese 。 。

比較運算子比較運算子要比較數值、字串或日期,可以利用比要比較數值、字串或日期,可以利用比較運算子,來比較是否符合執行程式的較運算子,來比較是否符合執行程式的條件。條件。

流程控制流程控制

Page 64: Visual Basic .NET  語言介紹

VB.NETVB.NET 提供了六種用來測試資料的比較運算子: 提供了六種用來測試資料的比較運算子:

運算子運算子 說 明 說 明 範 例 範 例 結 果 結 果<< 小於小於 A=8<7A=8<7 A=FalseA=False

<=<= 小於等於小於等於 B=5<=5B=5<=5 B=TrueB=True

>> 大於大於 C=6>5C=6>5 C=TrueC=True

>=>= 大於等於大於等於 D=7>=3D=7>=3 D=TrueD=True

== 等於等於 E=4=5E=4=5 E=FalseE=False

<><> 不等於不等於 F=8<>9F=8<>9 F=TrueF=True

比較運算子比較運算子

Page 65: Visual Basic .NET  語言介紹

邏輯運算子邏輯運算子除了比較運算子外,還有邏輯運算子。最常用到的除了比較運算子外,還有邏輯運算子。最常用到的邏輯運算子是邏輯運算子是 AndAnd 、、 OrOr 及及 NotNot 。。

And Or Not

邏輯運算子邏輯運算子

Page 66: Visual Basic .NET  語言介紹

If…ThenIf…Then 敘述 敘述 If…Then If…Then 流程控制流程控制

If If 條件判斷 條件判斷 Then Then 程式敘述程式敘述If If 條件判斷 條件判斷 Then Then 程式敘述程式敘述

If If 條件判斷 條件判斷 ThenThen 程式敘述一程式敘述一 程式敘述二程式敘述二 程式敘述程式敘述 N…N…End IfEnd If

If If 條件判斷 條件判斷 ThenThen 程式敘述一程式敘述一 程式敘述二程式敘述二 程式敘述程式敘述 N…N…End IfEnd If

Page 67: Visual Basic .NET  語言介紹

用用 IfIf 判斷使用者所應繳之稅額,若大於判斷使用者所應繳之稅額,若大於 9999 萬才計萬才計算並顯示: 算並顯示:

If…Then If…Then 流程控制流程控制

<html><%Dim intIncome As IntegerintIncome=CInt(Request("Income"))If intIncome>990000 Then Response.Write(" 您的年收入超過 99 萬 , 應該繳的稅為 :") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))End If%></html>

<html><%Dim intIncome As IntegerintIncome=CInt(Request("Income"))If intIncome>990000 Then Response.Write(" 您的年收入超過 99 萬 , 應該繳的稅為 :") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))End If%></html>

Page 68: Visual Basic .NET  語言介紹

If…Then…ElseIf…Then…Else 敘述敘述If…Then…ElseIf…Then…Else 流程控制流程控制

If 條件判斷 Then 程式區塊一Else 程式區塊二End If

If 條件判斷 Then 程式區塊一Else 程式區塊二End If

Page 69: Visual Basic .NET  語言介紹

用用 If…Then…ElseIf…Then…Else 判斷使用者所應繳之稅額,並顯示判斷使用者所應繳之稅額,並顯示小於等於小於等於 9999 萬以及大於萬以及大於 9999 萬的結果: 萬的結果:

If…Then…ElseIf…Then…Else 流程控制流程控制

<html><html><%<%Dim intIncome As integerDim intIncome As integerintIncome=CInt(Request("Income"))intIncome=CInt(Request("Income"))If intIncome>990000 ThenIf intIncome>990000 Then Response.Write("Response.Write(" 您的年收入超過您的年收入超過 9999 萬萬 , , 您應該繳的稅為您應該繳的稅為 :"):") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))ElseElse Response.Write("Response.Write(" 您的年收入沒超過您的年收入沒超過 9999 萬萬 , , 您應該繳的稅為您應該繳的稅為 :"):") Response.Write(Format((intIncome*0.13)-25900,"$##,###,###.00"))Response.Write(Format((intIncome*0.13)-25900,"$##,###,###.00"))End IfEnd If%>%></html></html>

<html><html><%<%Dim intIncome As integerDim intIncome As integerintIncome=CInt(Request("Income"))intIncome=CInt(Request("Income"))If intIncome>990000 ThenIf intIncome>990000 Then Response.Write("Response.Write(" 您的年收入超過您的年收入超過 9999 萬萬 , , 您應該繳的稅為您應該繳的稅為 :"):") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00"))ElseElse Response.Write("Response.Write(" 您的年收入沒超過您的年收入沒超過 9999 萬萬 , , 您應該繳的稅為您應該繳的稅為 :"):") Response.Write(Format((intIncome*0.13)-25900,"$##,###,###.00"))Response.Write(Format((intIncome*0.13)-25900,"$##,###,###.00"))End IfEnd If%>%></html></html>

Page 70: Visual Basic .NET  語言介紹

If…Then…ElseIfIf…Then…ElseIf 敘述敘述

If…Then…ElseIfIf…Then…ElseIf 流程控制流程控制

If If 條件判斷一 條件判斷一 ThenThen 程式區塊一程式區塊一ElseIf ElseIf 條件判斷二條件判斷二 程式區塊二程式區塊二[Else[Else 程式區塊三程式區塊三 ]]End IfEnd If

If If 條件判斷一 條件判斷一 ThenThen 程式區塊一程式區塊一ElseIf ElseIf 條件判斷二條件判斷二 程式區塊二程式區塊二[Else[Else 程式區塊三程式區塊三 ]]End IfEnd If

Page 71: Visual Basic .NET  語言介紹

下列範例將學生的成績轉換成下列範例將學生的成績轉換成 AA 、、 BB 、、 CC 、、 DD的等級,大於等於的等級,大於等於 8080 分為分為 AA 、大於等於、大於等於 7070 分分為為 BB 、大於等於、大於等於 6060 分為分為 CC ,而其它則為,而其它則為 DD ::

If…Then…ElseIfIf…Then…ElseIf 流程控制流程控制

<Html><Html><%<%Dim bytGrade As Byte=CByte(Request("Grade"))Dim bytGrade As Byte=CByte(Request("Grade"))If bytGrade>=80 ThenIf bytGrade>=80 Then Response.Write("Response.Write(" 您的等級為您的等級為 A")A")ElseIf bytGrade>=70 ThenElseIf bytGrade>=70 Then Response.Write("Response.Write(" 您的等級為您的等級為 B")B")ElseIf bytGrade>=60 ThenElseIf bytGrade>=60 Then Response.Write("Response.Write(" 您的等級為您的等級為 C")C")ElseElse Response.Write("Response.Write(" 您的等級為您的等級為 D")D")End IfEnd If%>%></Html></Html>

<Html><Html><%<%Dim bytGrade As Byte=CByte(Request("Grade"))Dim bytGrade As Byte=CByte(Request("Grade"))If bytGrade>=80 ThenIf bytGrade>=80 Then Response.Write("Response.Write(" 您的等級為您的等級為 A")A")ElseIf bytGrade>=70 ThenElseIf bytGrade>=70 Then Response.Write("Response.Write(" 您的等級為您的等級為 B")B")ElseIf bytGrade>=60 ThenElseIf bytGrade>=60 Then Response.Write("Response.Write(" 您的等級為您的等級為 C")C")ElseElse Response.Write("Response.Write(" 您的等級為您的等級為 D")D")End IfEnd If%>%></Html></Html>

Page 72: Visual Basic .NET  語言介紹

AndAlsoAndAlso 邏輯運算子主要還是執行邏輯運算子主要還是執行 AndAnd 邏輯運算,邏輯運算,不過由於對於可預先判斷其執行結果不需要執行全不過由於對於可預先判斷其執行結果不需要執行全部的程式,所以可以加強程式執行效能。部的程式,所以可以加強程式執行效能。

AndAlsoAndAlso 邏輯運算子邏輯運算子

<%<%If IsTrue(False,"1") AndAlso IsTrue(True,"2") ThenIf IsTrue(False,"1") AndAlso IsTrue(True,"2") Then Response.Write("Response.Write(" 條件成立條件成立 ")")ElseElse Response.Write("Response.Write(" 條件不成立條件不成立 ")")End IfEnd If%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function IsTrue(IsT As Boolean, strStep As String)As BooleanPrivate Function IsTrue(IsT As Boolean, strStep As String)As Boolean Response.Write("Response.Write(" 步驟步驟 :" & strStep & ",:" & strStep & ", 傳回值是傳回值是 " & IsT.ToString() & "<br" & IsT.ToString() & "<br>")>") Return IsTReturn IsTEnd FunctionEnd Function</script></script>

<%<%If IsTrue(False,"1") AndAlso IsTrue(True,"2") ThenIf IsTrue(False,"1") AndAlso IsTrue(True,"2") Then Response.Write("Response.Write(" 條件成立條件成立 ")")ElseElse Response.Write("Response.Write(" 條件不成立條件不成立 ")")End IfEnd If%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function IsTrue(IsT As Boolean, strStep As String)As BooleanPrivate Function IsTrue(IsT As Boolean, strStep As String)As Boolean Response.Write("Response.Write(" 步驟步驟 :" & strStep & ",:" & strStep & ", 傳回值是傳回值是 " & IsT.ToString() & "<br" & IsT.ToString() & "<br>")>") Return IsTReturn IsTEnd FunctionEnd Function</script></script>

Page 73: Visual Basic .NET  語言介紹

OrElseOrElse若想在左邊確定為若想在左邊確定為 TrueTrue 時即放棄對右邊敘述的運算,直接時即放棄對右邊敘述的運算,直接取得取得 OrOr 的運算結果的運算結果 TureTure ,則可以使用,則可以使用 OrElseOrElse 邏輯運算子。邏輯運算子。

OrElseOrElse

<%<%If IsTrue(True,"1") OrElse IsTrue(True,"2") ThenIf IsTrue(True,"1") OrElse IsTrue(True,"2") Then Response.Write("Response.Write(" 條件成立條件成立 ")")ElseElse Response.Write("Response.Write(" 條件不成立條件不成立 ")")End IfEnd If%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function IsTrue(IsT As Boolean, strStep As String)As BooleanPrivate Function IsTrue(IsT As Boolean, strStep As String)As Boolean Response.Write("Response.Write(" 步驟步驟 :" & strStep & ",:" & strStep & ", 傳回值是傳回值是 " & IsT.ToString() & "<br" & IsT.ToString() & "<br>")>") Return IsTReturn IsTEnd FunctionEnd Function</script></script>

<%<%If IsTrue(True,"1") OrElse IsTrue(True,"2") ThenIf IsTrue(True,"1") OrElse IsTrue(True,"2") Then Response.Write("Response.Write(" 條件成立條件成立 ")")ElseElse Response.Write("Response.Write(" 條件不成立條件不成立 ")")End IfEnd If%>%><script language="VB" runat="Server"><script language="VB" runat="Server">Private Function IsTrue(IsT As Boolean, strStep As String)As BooleanPrivate Function IsTrue(IsT As Boolean, strStep As String)As Boolean Response.Write("Response.Write(" 步驟步驟 :" & strStep & ",:" & strStep & ", 傳回值是傳回值是 " & IsT.ToString() & "<br" & IsT.ToString() & "<br>")>") Return IsTReturn IsTEnd FunctionEnd Function</script></script>

Page 74: Visual Basic .NET  語言介紹

Select CaseSelect Case 敘述敘述Select CaseSelect Case 和和 If…Then…ElseIfIf…Then…ElseIf 的結構很相似,都是讓的結構很相似,都是讓程式檢查敘述值後,再決定所要執行的程式碼區塊。不過程式檢查敘述值後,再決定所要執行的程式碼區塊。不過Select CaseSelect Case 執行起來比執行起來比 If…Then…ElseIfIf…Then…ElseIf 更有效率而且更有效率而且容易閱讀,這是因為容易閱讀,這是因為 Select CaseSelect Case 只需將要做比較的變數只需將要做比較的變數取出一次。 取出一次。

Select CaseSelect Case 流程控制流程控制

Select Case Select Case 測試敘述測試敘述Case Case 條件敘述一條件敘述一 程式區塊一程式區塊一Case Case 條件敘述二條件敘述二 程式區塊二程式區塊二Case Case 條件敘述條件敘述 NN 程式區塊程式區塊 NN[Case Else[Case ElseElseElse 程式區塊程式區塊 ]]End SelectEnd Select

Select Case Select Case 測試敘述測試敘述Case Case 條件敘述一條件敘述一 程式區塊一程式區塊一Case Case 條件敘述二條件敘述二 程式區塊二程式區塊二Case Case 條件敘述條件敘述 NN 程式區塊程式區塊 NN[Case Else[Case ElseElseElse 程式區塊程式區塊 ]]End SelectEnd Select

Page 75: Visual Basic .NET  語言介紹

Select CaseSelect Case 流程控制流程控制

Page 76: Visual Basic .NET  語言介紹

輸入使用者帳號,並依帳號列出不同的歡迎詞:輸入使用者帳號,並依帳號列出不同的歡迎詞:Select CaseSelect Case 流程控制流程控制

<html><html><%<%Dim strUserName As String=CStr(Request("UserName"))Dim strUserName As String=CStr(Request("UserName"))Dim strMSG As StringDim strMSG As StringSelect Case strUserNameSelect Case strUserNameCase "Administrator"Case "Administrator" strMSG="Hello, Administrator."strMSG="Hello, Administrator."Case "User"Case "User" strMSG="Hello, User."strMSG="Hello, User."Case ElseCase Else strMSG="Hello, Guest."strMSG="Hello, Guest."End SelectEnd SelectResponse.Write(strMSG)Response.Write(strMSG)%>%></html></html>

<html><html><%<%Dim strUserName As String=CStr(Request("UserName"))Dim strUserName As String=CStr(Request("UserName"))Dim strMSG As StringDim strMSG As StringSelect Case strUserNameSelect Case strUserNameCase "Administrator"Case "Administrator" strMSG="Hello, Administrator."strMSG="Hello, Administrator."Case "User"Case "User" strMSG="Hello, User."strMSG="Hello, User."Case ElseCase Else strMSG="Hello, Guest."strMSG="Hello, Guest."End SelectEnd SelectResponse.Write(strMSG)Response.Write(strMSG)%>%></html></html>

Page 77: Visual Basic .NET  語言介紹

Do…LoopDo…Loop 迴圈迴圈Do…LoopDo…Loop 迴圈結構可以讓程式依據某個條件的迴圈結構可以讓程式依據某個條件的傳回值為傳回值為 FalseFalse 或或 TrueTrue ,決定是否要反覆執行,決定是否要反覆執行某段程式碼區塊。 某段程式碼區塊。

Do…Loop WhileDo…Loop While 迴圈迴圈這種這種 Do…Loop WhileDo…Loop While 結構的迴圈,不管條件判結構的迴圈,不管條件判斷式是否成立,至少執行一次。斷式是否成立,至少執行一次。 Loop WhileLoop While 則則表示如果表示如果 WhileWhile 後面的條件判斷式成立的話,即後面的條件判斷式成立的話,即跳回跳回 DoDo 繼續執行迴圈。 繼續執行迴圈。

Do…LoopDo…Loop 迴圈迴圈

DoDo程式敘述程式敘述Loop While Loop While 條件判斷式條件判斷式

DoDo程式敘述程式敘述Loop While Loop While 條件判斷式條件判斷式

Page 78: Visual Basic .NET  語言介紹

Do…LoopDo…Loop 迴圈迴圈

Page 79: Visual Basic .NET  語言介紹

下列範例可以指定迴圈所執行的次數:下列範例可以指定迴圈所執行的次數:

Do…LoopDo…Loop 迴圈迴圈

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1DoDo Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop While shtX<=shtLoopLoop While shtX<=shtLoop%>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1DoDo Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop While shtX<=shtLoopLoop While shtX<=shtLoop%>%></html></html>

Page 80: Visual Basic .NET  語言介紹

Do…Loop UntilDo…Loop Until 迴圈迴圈不管條件判斷式是否成立,至少會執行一不管條件判斷式是否成立,至少會執行一次。次。 Loop UntilLoop Until 則表示若則表示若 UntilUntil 後面的條後面的條件判斷式估算結果為件判斷式估算結果為 FalseFalse ,即跳回,即跳回 DoDo 繼繼續執行迴圈,一直執行到續執行迴圈,一直執行到 UntilUntil 後的條件判後的條件判斷式估算結果為斷式估算結果為 TrueTrue 為止 。 為止 。

Do…Loop UntilDo…Loop Until 迴圈迴圈

DoDo 程式敘述程式敘述Loop Until Loop Until 條件判斷式條件判斷式

DoDo 程式敘述程式敘述Loop Until Loop Until 條件判斷式條件判斷式

Page 81: Visual Basic .NET  語言介紹

Do…Loop UntilDo…Loop Until 迴圈迴圈

Page 82: Visual Basic .NET  語言介紹

下列範例以下列範例以 Do…Loop UntilDo…Loop Until 的方式撰寫:的方式撰寫:

Do…Loop UntilDo…Loop Until 迴圈迴圈

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1DoDo Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Until shtX>shtLoopLoop Until shtX>shtLoop%>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1DoDo Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Until shtX>shtLoopLoop Until shtX>shtLoop%>%></html></html>

Page 83: Visual Basic .NET  語言介紹

Do While…LoopDo While…Loop 迴圈迴圈這種迴圈則是先判斷條件判斷式是否成立,才會跳入迴這種迴圈則是先判斷條件判斷式是否成立,才會跳入迴圈內執行。 圈內執行。

Do While…LoopDo While…Loop 迴圈迴圈

Do While Do While 條件判斷式條件判斷式 程式敘述程式敘述LoopLoop

Do While Do While 條件判斷式條件判斷式 程式敘述程式敘述LoopLoop

Page 84: Visual Basic .NET  語言介紹

下列範例使用下列範例使用 Do While…LoopDo While…Loop 迴圈執行使用者迴圈執行使用者所指定的次數:所指定的次數:

Do While…LoopDo While…Loop 迴圈迴圈

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1Do While shtX<=shtLoopDo While shtX<=shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Loop %>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1Do While shtX<=shtLoopDo While shtX<=shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Loop %>%></html></html>

Page 85: Visual Basic .NET  語言介紹

上述程式碼範例可以改成 上述程式碼範例可以改成 While…End WhileWhile…End While 的的寫法: 寫法:

While…End WhileWhile…End While

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1While shtX<=shtLoopWhile shtX<=shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1End While End While %>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1While shtX<=shtLoopWhile shtX<=shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1End While End While %>%></html></html>

Page 86: Visual Basic .NET  語言介紹

Do Until…LoopDo Until…Loop 迴圈迴圈這種結構則是先判斷條件判斷式是否滿足,才會跳入迴這種結構則是先判斷條件判斷式是否滿足,才會跳入迴圈內執行。圈內執行。

Do Until…LoopDo Until…Loop 迴圈迴圈

Do Until 條件判斷式程式敘述Loop

Do Until 條件判斷式程式敘述Loop

Page 87: Visual Basic .NET  語言介紹

下列範例使用下列範例使用 Do Until…LoopDo Until…Loop 迴圈執行使用者所指定迴圈執行使用者所指定的次數:的次數:

Do Until…LoopDo Until…Loop 迴圈迴圈

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1Do Until shtX>shtLoopDo Until shtX>shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Loop %>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtX As Short=1Dim shtX As Short=1Do Until shtX>shtLoopDo Until shtX>shtLoop Response.Write("Response.Write(" 迴圈執行了迴圈執行了 :" & CStr(shtX) & ":" & CStr(shtX) & " 次次 <br>")<br>") shtX+=1shtX+=1Loop Loop %>%></html></html>

Page 88: Visual Basic .NET  語言介紹

For…NextFor…Next 迴圈迴圈 當知道一段程式碼所要執行的條件以及次數時,當知道一段程式碼所要執行的條件以及次數時,就可以使用就可以使用 For…NextFor…Next 迴圈。迴圈。 For…NextFor…Next 迴圈迴圈比比 Do…LoopDo…Loop 迴圈容易使用及維護 。迴圈容易使用及維護 。

For…NextFor…Next 迴圈迴圈

For For 計數器計數器 == 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]] 程式敘述程式敘述Next [Next [ 計數器計數器 ]]

For For 計數器計數器 == 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]] 程式敘述程式敘述Next [Next [ 計數器計數器 ]]

Page 89: Visual Basic .NET  語言介紹

For…NextFor…Next 迴圈迴圈

Page 90: Visual Basic .NET  語言介紹

下列範例為使用下列範例為使用 For…NextFor…Next 迴圈指定程式區塊的執行次迴圈指定程式區塊的執行次數:數:

For…NextFor…Next 迴圈迴圈

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtCount As ShortDim shtCount As ShortFor shtCount=1 to shtLoop Step 1For shtCount=1 to shtLoop Step 1 Response.Write("Response.Write(" 迴圈執行迴圈執行 " & CStr(shtCount) & "" & CStr(shtCount) & " 次次 <br>")<br>")Next shtCountNext shtCountResponse.Write("Response.Write(" 迴圈結束後計數器的值為迴圈結束後計數器的值為 " & CStr(shtCount))" & CStr(shtCount))%>%></html></html>

<html><html><%<%Dim shtLoop As Short=CShort(Request("Loop"))Dim shtLoop As Short=CShort(Request("Loop"))Dim shtCount As ShortDim shtCount As ShortFor shtCount=1 to shtLoop Step 1For shtCount=1 to shtLoop Step 1 Response.Write("Response.Write(" 迴圈執行迴圈執行 " & CStr(shtCount) & "" & CStr(shtCount) & " 次次 <br>")<br>")Next shtCountNext shtCountResponse.Write("Response.Write(" 迴圈結束後計數器的值為迴圈結束後計數器的值為 " & CStr(shtCount))" & CStr(shtCount))%>%></html></html>

Page 91: Visual Basic .NET  語言介紹

巢狀巢狀 For…NextFor…Next 迴圈迴圈種巢狀的種巢狀的 For…NextFor…Next 迴圈執行時先設定外層的條件,迴圈執行時先設定外層的條件,然後跳進內層迴圈內執行內層迴圈。待內層迴圈執行然後跳進內層迴圈內執行內層迴圈。待內層迴圈執行超過結束值後,便跳至外層迴圈的超過結束值後,便跳至外層迴圈的 NextNext 敘述,將外敘述,將外層的計數器遞增。外層迴圈計數器遞增後若沒超過結層的計數器遞增。外層迴圈計數器遞增後若沒超過結束值,則再從新進入迴圈內重新執行內層迴圈。此時束值,則再從新進入迴圈內重新執行內層迴圈。此時內層迴圈的計數器會重新以初始值設定,重頭執行。內層迴圈的計數器會重新以初始值設定,重頭執行。這樣執行的次數要等外層迴圈結束後才會結束。 這樣執行的次數要等外層迴圈結束後才會結束。

巢狀巢狀 For…NextFor…Next 迴圈迴圈

For For 計數器計數器 1=1= 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]]For For 計數器計數器 2=2= 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]] 程式敘述程式敘述Next [Next [ 計數器計數器 1]1]Next [Next [ 計數器計數器 2]2]

For For 計數器計數器 1=1= 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]]For For 計數器計數器 2=2= 起始值 起始值 to to 結束值 結束值 [Step [Step 遞增值遞增值 ]] 程式敘述程式敘述Next [Next [ 計數器計數器 1]1]Next [Next [ 計數器計數器 2]2]

Page 92: Visual Basic .NET  語言介紹

利用巢狀迴圈畫出九九乘法表:利用巢狀迴圈畫出九九乘法表:巢狀巢狀 For…NextFor…Next 迴圈迴圈

<html><html><table border="1"><table border="1"><%<%Dim shtX,shtY As ShortDim shtX,shtY As ShortFor shtX=1 To 9 Step 1For shtX=1 To 9 Step 1 If shtX=1 OR shtX=4 OR shtX=7 Then Response.Write("<tr>")If shtX=1 OR shtX=4 OR shtX=7 Then Response.Write("<tr>") Response.Write("<td>")Response.Write("<td>") For shtY =1 To 9 Step 1For shtY =1 To 9 Step 1 Response.Write(CStr(shtX) & "X" & CStr(shtY) & "=" & _Response.Write(CStr(shtX) & "X" & CStr(shtY) & "=" & _ CStr(shtX * shtY) & "<br>")CStr(shtX * shtY) & "<br>") Next shtY Next shtY Response.Write("</td>")Response.Write("</td>") If shtX=3 OR shtX=6 OR shtX=9 Then Response.Write("</tr>")If shtX=3 OR shtX=6 OR shtX=9 Then Response.Write("</tr>")Next shtXNext shtX%>%></table></table></html></html>

<html><html><table border="1"><table border="1"><%<%Dim shtX,shtY As ShortDim shtX,shtY As ShortFor shtX=1 To 9 Step 1For shtX=1 To 9 Step 1 If shtX=1 OR shtX=4 OR shtX=7 Then Response.Write("<tr>")If shtX=1 OR shtX=4 OR shtX=7 Then Response.Write("<tr>") Response.Write("<td>")Response.Write("<td>") For shtY =1 To 9 Step 1For shtY =1 To 9 Step 1 Response.Write(CStr(shtX) & "X" & CStr(shtY) & "=" & _Response.Write(CStr(shtX) & "X" & CStr(shtY) & "=" & _ CStr(shtX * shtY) & "<br>")CStr(shtX * shtY) & "<br>") Next shtY Next shtY Response.Write("</td>")Response.Write("</td>") If shtX=3 OR shtX=6 OR shtX=9 Then Response.Write("</tr>")If shtX=3 OR shtX=6 OR shtX=9 Then Response.Write("</tr>")Next shtXNext shtX%>%></table></table></html></html>