Ch03 VB.NET語法建立ASP.NET

Download Report

Transcript Ch03 VB.NET語法建立ASP.NET

Ch03 VB.NET語法建立
ASP.NET
網頁程式設計
大綱
•
•
•
•
•
ASP.NET的開發環境
ASP.NET基本架構
VB.NET變數的資料型態
VB.NET陣列資料型態
VB.NET運算子
2
認識ASP.NET
動態網頁可以藉由下列兩種方式來完成:
• 用戶端scripts (描述語言):JavaScript、VBScript
• 伺服器端scripts (描述語言)
–
–
–
–
CGI
JSP
PHP
ASP
3
ASP.NET的基礎-說明
• ASP.NET是ASP 3.0的新版本,不過ASP.NET
並不能說是ASP的改版。因為ASP.NET是全
新架構的伺服端網頁技術,屬於微軟.NET
Framework技術的一環,能夠在伺服端建立
功能強大的Web應用程式。
• ASP.NET是架構在.NET Framework的「CLR」
(Common Language Runtime,詳細的說明
請參閱第1-2-3節)平台的網頁技術,其主
要目的是用來建立Web應用程式。
4
.NET Common Language Runtime-說明
• .NET Framework是微軟下一個世代的程式開
發平台,它是由CLR和.NET Framework類別
函式庫組成。
• 當使用.NET Framework支援的程式語言編寫
程式碼檔案後,就可以使用.NET編譯程式
進行編譯,不過,並不是編譯成CPU可執行
的機器語言,而是一種中間程式語言稱為
「MSIL」(Microsoft Intermediate
Language)。
5
.NET Common Language Runtime-圖例
• 當需要執行程式時,CRL使用「JIT」(Just In
Time)編譯程式將MSIL轉換成機器語言來執行程
式,如下圖所示:
6
ASP.NET的基礎-特點
• ASP.NET網頁技術的特點,如下所示:
– 執行效能的改進。
– 強大的功能和擴充性。
– 程式語言無關。
– 更強大的伺服端功能。
– 進階的伺服端控制項。
7
ASP.NET 2.0新增功能(1)
• 新的網站管理工具
8
ASP.NET 2.0新增功能(2)
•
•
•
•
改良的網頁撰寫模式
增強的快取功能
先行編譯網站以進行錯誤檢查與部署
為特殊功能所保留的資料夾
9
ASP.NET 2.0新增功能(3)
• 巡覽控制項
10
ASP.NET 2.0新增功能(4)
•
•
•
•
•
•
•
佈景主題 (theme)
主版頁面 (master page)
Profile屬性
會員與角色管理
支援XML
改良的控制項
新增的控制項
11
ASP.NET開發需求
• Web伺服器
• .NET Framework 2.0
• 撰寫程式碼的工具
12
使用IIS將電腦架設為Web伺服器(1)
• 一、安裝IIS (Internet Information Services)
13
使用IIS將電腦架設為Web伺服器(2)
• 二、測試Internet Information Services (IIS)
– 啟動瀏覽器,然後在網址列輸入本機電腦的IP位址或
http://127.0.0.1 (127.0.0.1一定是指向本機電腦) 或
htpp://localhost
14
使用IIS將電腦架設為Web伺服器(3)
• 三、管理Web伺服器
1.
2.
15
使用IIS將電腦架設為Web伺服器(4)
3.
4.
16
使用IIS將電腦架設為Web伺服器(5)
5.
17
安裝 .NET Framework 2.0 (1)
• 下載軟體並安裝
• 或隨書光碟的dotnetfx.exe,然後依照畫面的
提示操作。
18
安裝Visual Web Developer-說明
• Visual Web Developer 2005 Express版簡稱
VWD,它是Visual Studio產品線的擴充,微
軟Express系列提供實用和最少負擔的程式
開發工具,可以讓學生和初學者輕鬆進入
Visual Studio和.NET Framework開發平台,
快速建立所需的.NET應用程式。
19
安裝Visual Web Developer-步驟1
• 1. 請將書附光碟置入光碟機,稍等一下,就
可以自動啟動安裝程序,如果沒有啟動,
請自行按二下光碟的【setup.exe】程式來啟
動安裝精靈,可以看到歡迎安裝的精靈畫
面。
• 2. 按【下一步】鈕,可以看到軟體的使用者
授權合約。
• 3. 勾選【我接受授權合約中的條款】同意授
權,按【下一步】鈕選擇安裝元件。
20
安裝Visual Web Developer-步驟2
• 4. 請勾選全部元件,同時安裝MSDN 2005和SQL
Server 2005 Express版,按【下一步】鈕更改安裝
路徑和檢視準備安裝的元件清單。
• 5. 預設安裝路徑是「C:\Program Files\Microsoft
Visual Studio 8\」,在下方的安裝元件清單包
含.NET Framework 2.0中文版,按【安裝】鈕開始
複製元件安裝Visual Web Developer Express。
• 6. 等到複製和安裝完成後,可以看到完成安裝的
精靈畫面。
• 7. 請按【結束】鈕完成Visual Web Developer
Express版的安裝。
21
指定IIS使用的ASP.NET版本
• ASP.NET各版本可
以在Windows作業
系統並存,如果
Windows作業系統
同時安裝多個版本
的.NET Framework,
我們可以在IIS管理
工具指定網站使用
的ASP.NET版本,
如右圖所示:
22
網頁撰寫模式(以記事本)
0-4-1 single-file模式
\Ch00\Hello1.aspx
01:<%@ Page Language="VB" %>
02:<script runat="server">
03: Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
04: label1.Text = "Hello World!"
05: End Sub
06:</script>
07:<html>
08: <body>
09: <form runat="server" id="form1" >
10:
<asp:Label runat="server" ID="label1" />
11: </form>
12: </body>
13:</html>
23
編譯與部署
• 第一次執行 ASP.NET網頁
code-behind
類別
第一次要
求網頁
.aspx檔案
剖析器
類別檔案
編譯器
DLL檔案
產生結果回
應給瀏覽器
24
• 第二次執行 ASP.NET網頁
code-behind
類別
第一次要
求網頁
.aspx檔案
第二次要
求網頁
剖析器
類別檔案
產生結果回
應給瀏覽器
編譯器
DLL檔案
產生結果回
應給瀏覽器
25
就地先行編譯
• 我們可以在命令提示字元視窗切換到 .NET
Framework安裝路徑 (例如
C:\WINDOWS\Microsoft.NET\Framework\vxxxx),
然後使用aspnet_compiler.exe公用程式進行就地先
行編譯
26
針對部署先行編譯
• 我們可以在命令提示字元視窗切換到 .NET
Framework安裝路徑 (例如
C:\WINDOWS\Microsoft.NET\Framework\vxxxx),
然後使用aspnet_compiler.exe公用程式進行針對部
署先行編譯
27
物件的基本觀念
• ASP.NET是一種伺服端網頁技術,本身並沒
有專屬的程式語法,預設是使用VB.NET語
法,VB.NET語言是一種支援.NET
Framework的物件導向程式語言。
• ASP.NET主要是使用VB.NET語法和.NET
Framework類別的物件,就算不熟悉物件導
向程式設計也沒有關係,因為只需了解物
件的基本觀念和如何使用即可。
28
物件的基本觀念-物件(Objects)與類別(Classes)
• 物件為物件導向程式的基礎,簡單的說物件是資
料(Data)和包含處理資料相關函數(稱為方法)
的綜合體
• 而「類別」(Class)是物件的藍圖,可以用來定
義物件和建立物件,在類別中會設計一些方法,
即處理的程序(程式碼)
• 在建立好物件後,並不用考慮物件內部處理的程
式碼,只需知道物件提供的屬性和方法和如何使
用,就可以使用這些物件。
• 例如:ASP.NET可以使用.NET Framework的類別
物件提供的HTTP物件:Response、Server、
Request、Session和Application等物件。
29
物件的基本觀念-屬性(Properties)
• 物件的屬性是物件的性質和狀態,例如:
– Response物件的ContentType屬性。
– Response物件的BufferOutput屬性。
Response.ContentType
Response.BufferOutput
30
物件的基本觀念-方法(Methods)
• 方法就是物件的處理函數,例如:Response
物件擁有下列方法,如下所示:
Response.Write()
Response.Redirect()
31
物件的基本觀念-事件(Events)
• 事件是指物件回應的事件,例如:Page
物件的Load事件,我們可以建立處理
此事件的程序,如下所示:
Sub Page_Load(Sender As Object, e As Eventargs)
…….
End Sub
32
物件的基本觀念-集合物件(Collections)
• 集合物件如同此名是一組物件的集合,例
如:Response物件的集合物件Cookies(通常
是使用指定屬性取得集合物件),如下所
示:
Response.Cookies("name").Value
• 程式碼取出集合物件中名為name的Cookie物
件,然後使用Value屬性取得其值,事實上,
Application和Session物件都屬於一種集合物
件
33
ASP.NET程式的基本架構
• 在舊版ASP 3.0版使用的程式語法是VBScript
或JavaScript等腳本語言,ASP.NET使用的
是.NET語言C#、VB.NET或Jscript.NET等,
以本書為例是使用「VB.NET」(Visual
Basic.NET,簡稱VB.NET)。
• VB.NET是Visual Basic 6的下一個版本,和前
一個版本的主要差異在VB.NET是支援.NET
Framework的物件導向程式語言。
34
微軟的BASIC家族
• 源於Bill Gates對於BASIC語言的喜愛,
BASIC語言在微軟程式開發語言上一直佔有
十分重要的地位,在經歷超過10年的長時間
發展,目前微軟Basic家族包含Visual Basic 6
到VB.NET,Office家族提供VBA,客戶端有
VBScript。伺服端VBScript語法的ASP和
VB.NET語法的ASP.NET。
35
範例1:字型大小的變化(HTML)
• 希望的結果:
36
範例1:字型大小的變化(HTML)續
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<html>
<head>
<title>第三章範例1:字型大小變化</title>
</head>
<body>
<font size=4>
<p>ASP.NET網頁設計範例教本</p>
</font>
<font size=5>
<p>ASP.NET網頁設計範例教本</p>
</font>
<font size=6>
<p>ASP.NET網頁設計範例教本</p>
</font>
</body>
</html>
37
使用VB.NET
<font size=4>
<p>ASP.NET網頁設計範例教本</p>
</font>
<font size=5>
<p>ASP.NET網頁設計範例教本</p>
</font>
<font size=6>
<p>ASP.NET網頁設計範例教本</p>
</font>
For i = 4 to 6
<font size=i>
<p>ASP.NET網頁設計範例教本</p>
<font>
Next i
<%
For i=4 to 6
%>
<fornt size= <%=i%> >
<p>ASP.NET網頁設計範例教本</p>
<font>
<% Next i %>
38
範例2:字型大小變化(aspx)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<html>
<head>
<title>第三章範例2:字型大小變化</title>
</head>
<body>
<% Dim i As Integer
For i = 4 to 6
%>
<font size= <%=i%> >
<p>ASP.NET網頁設計範例教本</p>
</font>
<% Next i %>
</body>
</html>
39
檢視原始檔
在IE下 -> 檢視 -> 原始檔
是不是和範例1的HTML檔一樣
40
練習1
• 建立一個HTML檔案,作字型的大小變化
• 建立一個aspx檔案,作字型的大小變化
41
建立VB.NET語法的ASP.NET程式-說明
• ASP.NET程式的附檔名為.aspx,程式碼直接內嵌
於HTML標籤,置於<%…%>符號間,如下:
08: <%
09: ' 變數宣告
10: Dim beginSize, endSize, i As Integer
11: beginSize = 4
12: endSize = 6
13: ' 設定字型尺寸由小變大
14: For i = beginSize To endSize
15: %>
16: <font size=<%=i%>>
17: <p>ASP.NET網頁設計範例教本</p></font>
18: <%
19: Next i
20: %>
42
建立VB.NET語法的ASP.NET程式-Page指引
• 在ASP.NET程式開頭的第2列指出使用的程
式語言,如下所示:
02: <%@ Page Language="VB" %>
• @ Page是ASP.NET程式的「指引」
(Directive),Language「屬性」(Attribute)
定義ASP.NET程式使用的程式語言,以此例
為VB,表示使用VB.NET,因為預設值是
VB,如果使用VB.NET,也可以省略這一列
程式碼。
43
變數宣告和迴圈開始
• 變數宣告和迴圈開始:第8~15列的ASP.NET程式
區塊宣告變數和For Next迴圈指令的開始,整段程
式碼並沒有任何HTML標籤,所以只需在開始和
結束加上<%和%>符號,如下所示:
08: <%
09: ' 變數宣告
10: Dim beginSize, endSize, i As Integer
11: beginSize = 4
12: endSize = 6
13: ' 設定字型尺寸由小變大
14: For i = beginSize To endSize
15: %>
44
內含於HTML標籤
• 內含於HTML標籤:第16列的<font>標籤
指定字型尺寸,在標籤屬性size加上
ASP.NET程式碼,這個屬性屬於動態變數,
隨著迴圈產生不同的字型尺寸,同樣是位
在<%和%>符號間,如下所示:
16: <font size=<%=i%>>
45
迴圈結束
• 迴圈結束:最後第18~20列屬於迴圈結束的
程式碼,因為前後都有不同的HTML標籤,
這列程式碼也需要使用<%和%>符號標示
出來,如下所示:
18: <%
19: Next i
20: %>
46
儲存成ASP.NET程式
• ASP.NET程式檔案內容也擁有HTML標籤,
只是其副檔名為【.aspx】,如果使用【記
事本】儲存檔案時,預設儲存的副檔名為
【.txt】,所以當編輯好ASP.NET程式,要
將儲存類型設定為”所有檔案“, 並且在檔
名要輸入附檔名為.aspx
47
ASP.NET程式的執行過程
• ASP.NET程式為伺服端網頁技術,我們需要將程
式檔案公佈到Web伺服器後才能執行ASP.NET程式,
其執行的過程,如下圖所示:
48
使用註解文字
• 程式註解是程式設計上很重要的部分,良
好的註解不但能夠輕易了解程式的目的,
而且在維護上也可以提供更多的資訊,
VB.NET的程式註解是以「'」符號或Rem指
令開始的列,或程式列之後此符號後的文
字內容,如下所示:
' 註解文字
Rem 註解文字
Response.Write(“<h2>大家好!</h2>”) ‘ 使用Response
物件,Response.Write(“輸出的字串”)可將“輸出
的字串”送到客戶端
49
太長的程式碼
• 如果程式碼的長度太長,基於程式編排的需要
可以將它分成兩列,此時請在第一列程式碼的
最後加上「_」符號,如下所示:
Response.Write("<h2>大家好!這是比較長的程式碼, " & _
"所以需要分為兩列.</h2>")
• 將字串分成兩列需要使用字串運算字「&」連
結兩個字串,並不能直接分割字串,如下所示:
Response.Write("<h2>大家好!這是比較長的程式碼, _
所以需要分為兩列.</h2>")
50
VB.NET變數的資料型態
• VB.NET變數的目的是儲存程式執行中的一
些暫存資料,程式設計者只需使用變數名
稱就可以存取記憶體位置中的資料,資料
型態可以指定變數儲存的資料種類。
51
變數的資料型態-1
• VB.NET的變數並沒有強調一定需要宣告其資
料型態,如果沒有宣告資料型態,預設的資料
型態是Object,Object是所有VB.NET資料型態
的基礎資料型態。VB.NET的資料型態,如下:
資料型態 說明
位元組
範圍
Boolean
布林值
2
True 或 False
Byte
正整數
1
0~255
Char
字元
2
0~65535
Short
短整數
2
-32,768~32,767
Integer
整數
4
-2,147,483,648~2,147,483,647
52
變數的資料型態-2
Long
長整數
8
9,223,372,036,854,775,808~9,223,372,03
6,854,775,807
Single
單精度的浮點數 4
負 值 範 圍 為 -3.4028235E+38~1.401298E-45 , 正 值 的 範 圍 為
1.401298E-45~3.4028235E+38
Double
雙精度的浮點數 8
負
值
範
圍
為
-
1.79769313486231570E+308~4.94065645841246544E-324 ,正值範圍
為
4.94065645841246544E-
324~1.79769313486231570E+308
53
變數的資料型態-3
Decimal
數值
16
0~+/79,228,162,514,264,337,593,543,950,335
沒
有
小
數
,
0~+/-
7.9228162514264337593543950335
帶
28 位 小 數 , 最 小 的 非 零 值 為 +/0.0000000000000000000000000001(+/1E-28)
Date
日期
8
0001 年 1 月 1 日~9999 年 12 月 31 日
String
字串
依平台
0~2 百萬 Unicode 字元
Object
物件
4
物件型態變數可以儲存各種資料型態
的值
54
變數的宣告-命名原則
• VB.NET的命名原則,如下所示:
– 不可以使用VB.NET的保留字或系統的物件
名稱。
– 必需是英文字母或底線「_」開頭,如果以
底線開頭,至少需要一個英文字母或數字。
– 名稱長度不可超過16383個字元,不區分英
文大小寫,abc和ABC代表同一個名稱。
– 名稱中間不能有句點「.」或空白,只能是英
文字母、數字和底線。
– 在宣告的有效範圍內需唯一。
55
變數的宣告-範例
• VB.NET元素名稱的範例,如下所示:
abc, ab_123, size1, _123, _abc ' 合法名稱
_ , 123abc
' 不合法名稱,只有底線或數字開頭
56
變數的宣告-宣告變數
• 變數在程式碼扮演的角色是用來儲存程式執行中的
一些暫存資料,在VB.NET程式碼是使用【Dim】指
令宣告所需的變數,其指令如下:
Dim balance ' 變數balance的資料型態是Object
• 程式碼宣告一個變數,因為沒有指定資料型態,預
設的資料型態為Object,可以儲存各種資料型態的值。
如果宣告的變數需要指定型態,我們需要使用As指
令宣告變數的資料型態,如下:
Dim size1,size2 As Integer ' 變數都是Integer資料型態
57
變數的宣告-指定初值
• 如果同一列的2個變數屬於不同資料型態,我們可
以分別宣告其資料型態,如下所示:
Dim name As String,size3 As Integer
• 程式碼宣告2個變數:一為字串,一為整數。
• 如果需要,還可以在宣告時同時指定變數的初值,
如下所示:
Dim name As String ,size3 As Integer = 100
• 程式碼指定變數size3的初值為100。
58
指定敘述
• 在VB.NET宣告變數後,因為變數是用來儲存
資料,所以需要指定或更改變數值,使用的是
指定敘述「=」等號,例如:指定變數值,如
下所示:
balance = 1000
size1 = 500
size2 = 400
name = “陳會安”
• 變數balance是Object資料型態,可以儲存各種
資料型態的資料,可以再次在程式碼使用指定
敘述設定變數成其它值,如下所示:
balance = "1000"
59
常數的宣告與使用
• 程式碼的常數是使用一個常數名稱取代固定的數
字或字串,與其說它是一種變數,不如說只是一
個名稱的轉換,將一些數值的值用有意義的名稱
取代,VB.NET本身已經擁有一些內建常數,我們
也可以自行建立所需的常數,常數在宣告同時需
要指定其值,如下所示:
Const PI = 3.1415926
• 常數就是圓周率的常數,在VB.NET程式碼就可以
直接使用這個常數計算圓面積。
60
VB.NET的運算子
• 在VB.NET指定敘述的等號右邊若為運算式或是條
件運算式,這都是使用「運算子」(Operator)和
「運算元」(Operand)所組成,VB.NET擁有完
整的算術(Arithmetic)、關係(Relational)、連
結(Concatenation)和邏輯(Logical)運算子。一
些範例如下所示:
A+B-1
A >= B
A > B And A > 1
• 運算式變數A、B和數值1都屬於運算元,「+」、
「-」、「>=」和「>」為運算子。
61
運算子的優先順序
• 如果運算子沒有優先順序的差異,運算式依照出現
的順序,由左到右依序的執行。
• "( )"括號內比括號外先執行。
• 當運算式擁有多種運算子時,算術運算子最先,接
著關係運算子,最後是邏輯運算子,如下:
算術運算子 > 關係運算子 > 邏輯運算子
• 關係運算子擁有相同的優先順序。
• 算術運算子的優先順序,如下所示:
^指數 > (-)負號 > */乘除 > \整數除法 > Mod > +-加減 > &
• 邏輯運算子的優先順序,如下所示:
Not > And, AndAlso > Or, OrElse > Xor
62
算術運算子
運算子
說明
運算式範例
^
指數
5 ^ 2 = 25
-
負號
-7
*
乘法
5 * 6 = 30
/
除法
7 / 2 = 3.5
\
整數除法
7\2=3
Mod
餘數
7 mod 2 = 1
+
加法
4+3=7
-
減法
4–3=1
63
字串連結運算子
• VB.NET字串資料型態的變數可以使用字串連結運
算子「&」來連結,其優先順序是在算術運算子
之後,但在關係運算子之前,如下表所示:
運算子
說明
&
字串連結
運算式範例
"ab" & "cd" = "abcd"
"ASP.NET 網頁" & "設計" = "ASP.NET
網頁設計"
64
關係運算子
運算子
說明
運算式範例
結果
=
等於
6=3
False
<>
不等於
6 <> 3
True
<
小於
6<3
False
>
大於
6>3
True
<=
小於等於
6 <= 3
False
>=
大於等於
6 >=3
True
Is
物件比較
比較兩個變數是否指向同一個物件
65
邏輯運算子-說明
運算子
說明
Not
非,傳回運算元相反的值
And
且,連結的兩個運算元都為 True,則運算式為 True
Or
或,連結的 2 個運算元中,任一個為 Ture ,則運算式為
True
Xor
連結的 2 個運算元中,只有一個為真,不同時都為 True 則
運算式為 True,否則為 False
AndAlso
2 個運算元都為 True 才為 True,如果第 1 個運算元已經
False,就不用計算第 2 個運算元,傳回 False
OrElse
連結的 2 個運算元中,任一個為 Ture,則運算式為 True,
否則為 False,如果第一個為 True,就不用計算第 2 個運算
元,傳回 True
66
邏輯運算子-範例
邏輯運算子
完整的運算式
結果
Not A
Not (5 > 3)
False
Not B
Not (4 <= 2)
True
A And B
5 > 3 And 4 <= 2
False
A Or B
5 > 3 Or 4 <= 2
True
A Xor B
5 > 3 Xor 4 <= 2
True
A Eqv B
5 > 3 Eqv 4 <= 2
False
A AndAlso B
5 > 3 AndAlso 4 <= 2
False
A OrElse B
5 > 3 OrElse 4 <= 2
True,以此例第二個運算元根
本不用計算
67
邏輯運算子-真假值表
A
B
Not A
Not B
A And B A Or B
A Xor B
True
True
False
False
True
True
False
True
False
False
True
False
True
True
False
True
True
False
False
True
True
False
False
True
True
False
False
False
68
指定運算子
運算子
範例
相當的運算式
說明
=
x=y
N/A
指定敘述
^=
x ^= y
x=x^y
指數
+=
x += y
x=x+y
數字相加
-=
x -= y
x=x-y
減法
*=
x *= y
x=x*y
乘法
/=
x /= y
x=x/y
除法
\=
x \= y
x=x\y
整數除法
&=
x &= y
x=x&y
字串連結
69
範例3:一些運算的輸出
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<html>
<head>
<title>第三章範例3:一些運算的結果</title>
</head>
<body>
<% Dim i, j As Integer
i=5
j=3
Response.Write("<p> i = " & i & "</P>")
Response.Write("<p> j = " & j & "</p>")
Response.Write( i & "+" & j & "=" & i+j & "<br>")
Response.Write( i & "-" & j & "=" & i-j & "<br>")
Response.Write( i & "*" & j & "=" & i*j & "<br>")
Response.Write( i & "/" & j & "=" & i/j & "<br>")
Response.Write( i & "\" & j & "=" & i\j & "<br>")
Response.Write( i & "mod" & j & "=" & i mod j & "<br>")
%>
</body>
</html>
70
陣列的基礎
• 「陣列」(Arrays)是程式語言的一種資料結構,
屬於一種順序性的資料結構,在日常生活最常見
的是公寓大樓的信箱,一排排的信箱,郵差使用
門牌號碼投遞信件,住戶依門牌號碼取出信件。
我們可以將每一個單獨信箱視為變數,整排的信
箱就是陣列,門牌號碼就是取得變數值所需的索
引值,如下圖所示:
71
一維陣列-宣告
• 一維陣列對比前述的信箱就是單排信箱,VB.NET
的陣列通常是固定大小的陣列,也就是在宣告時
需要指定陣列大小,宣告陣列的語法,如下所示:
Dim array_name(size-1) As type_name
• 語法的array_name為陣列名稱、size是陣列大小、
type_name是資料型態,括號是最大索引值,需要
減一,例如:宣告字串陣列name,如下:
Dim name(4) As String
• 陣列的大小為5,因為從0起算所以括號值為4。
72
一維陣列-存取
• 使用指定敘述指定陣列值,其程式碼如下所示:
name(0) = "陳會安"
name(1) = "江小魚"
name(2) = "張無忌"
name(3) = "楊過"
name(4) = "小龍女"
• 程式碼可以看出使用名稱加上索引值來指定陣列
元素,至於取出陣列值的程式碼,如下所示:
userName = name(3)
• 程式碼取得陣列元素索引值為3的陣列變數值,
也就是第4個陣列元素。
73
多維陣列
• 多維陣列擁有多個索引,對比前述的信箱就是多
排信箱,二維陣列擁有2個索引,三維陣列有3個,
依序類推。
• 只需是表格編排的資料,我們就可以建立多維陣
列來儲存這些資料,例如:大樓住戶名稱和管理
費的二維陣列,其宣告如下所示:
Dim home(2,1) As String
74
範例4:二維陣列的宣告和使用
預期結果:
75
範例4:二維陣列的宣告和使用
1. <%
2. ' 宣告二維陣列
3. Dim home(2,1) As String
4. ' 指定陣列值
5. home(0,0) = "陳會安"
6. home(0,1) = "1500"
7. home(1,0) = "江小魚"
8. home(1,1) = "2500"
9. home(2,0) = "張無忌"
10. home(2,1) = "3500"
11. ' 以表格方式顯示陣列
值
12.
13. Dim i, j As Integer
14. %>
15. <table border = "1">
16. <tr>
17. <td>住戶名稱</td>
18. <td>管理費</td>
19. </tr>
20. <% For i = 0 to 2
21. Response.Write("<tr>")
22. For j = 0 to 1
23. %>
24.
<td>
25.
<% Response.Write(home(i,j)) %>
26.
</td>
27. <% Next j
28. Response.Write("</tr>")
29. Next i
30. %>
76
範例4:二維陣列的宣告和使用
1. <%
2. ' 宣告二維陣列
3. Dim home(2,1) As String
4. ' 指定陣列值
5. home(0,0) = "陳會安"
6. home(0,1) = "1500"
7. home(1,0) = "江小魚"
8. home(1,1) = "2500"
9. home(2,0) = "張無忌"
10. home(2,1) = "3500“
11. ' 以表格方式顯示陣列值
12.
13. Dim i, j As Integer
14. %>
•
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<table border = "1">
<tr>
<td>住戶名稱</td>
<td>管理費</td>
</tr>
<% For i = 0 to 2
Response.Write("<tr>")
For j = 0 to 1
Response.Write("<td>")
Response.Write(home(i,j))
Response.Write("</td>")
Next j
Response.Write("</tr>")
Next i
%>
77
動態陣列-說明
• 動態陣列是指陣列大小允許在程式執行時
變更其大小,即動態更改陣列的尺寸。
78
動態陣列-宣告
• VB.NET的陣列可以使用【ReDim】指令在程式執
行時重新更改陣列大小,不過ReDim並不能宣告
陣列,只能更改現存的陣列大小,如下:
ReDim name(2)
• 程式碼使用ReDim指令變更陣列大小為3,現在陣
列擁有3個元素,如果陣列內已經儲存內容,為了
保留原陣列的內容,需要使用Preserve指令,其宣
告如下所示:
ReDim Preserve name(4)
79
動態陣列-相關函數
• 在動態陣列的處理上,在程式更改大小後,我們
需要取得目前陣列索引的範圍,此時可以使用函
數取得陣列的索引範圍,相關函數說明,如下所
示:
– Lbound()函數:取得陣列的最小索引,變數size的值是
陣列的最小索引,如下所示:
size = Lbound(name)
– Ubound()函數:取得陣列的最大索引,變數size的值是
陣列的最大索引,如下所示:
size = Ubound(name)
80
範例5:動態陣列的宣告和使用
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
1. ReDim name(2)
2.
Response.Write("更動第二次:<br>")
'宣告變數
3.
Response.Write("陣列最小索引:" & Lbound(name) & "<b
Dim i As Integer
4.
Response.Write("陣列最大索引:" & Ubound(name) & "<b
' 宣告陣列大小
5.
For i = 0 to 1
Dim name(3) As String
6.
Response.Write("name(" & i & ")= " & name(i) & "<br>")
Dim size As Integer
7.
Next i
Response.Write("更動前:<br>")
Response.Write("陣列最小索引:" & Lbound(name) & "<br>")
Response.Write("陣列最大索引:" & Ubound(name) & "<br>")
name(0) = "金獅王Alex"
name(1) = "馬提"
name(2) = "河馬莉"
For i = 0 to 2
Response.Write("name(" & i & ")= " & name(i) & "<br>")
Next i
ReDim Preserve name(4)
Response.Write("更動第一次:<br>")
Response.Write("陣列最小索引:" & Lbound(name) & "<br>")
Response.Write("陣列最大索引:" & Ubound(name) & "<br>")
name(3) = "長頸男"
For i = 0 to 3
Response.Write("name(" & i & ")= " & name(i) & "<br>")
Next i
81
範例5:動態陣列的宣告和使用
(結果)
82
練習2
• 課本p. 3-45實作題3,4
• 建立ASP.NET程式使用二
維陣列變數儲存下列成績
資料,如右表:
• 再新增2位學生的成績資
料:
姓名
愛力斯
成績
100
馬提
85
河馬莉
56
冷靜
長頸男
78
34
• 美化畫面
83
補充資料
• VB 6.0並沒有規定程式設計人員在使用變數之前
必須先宣告,但是VB2005則要求程式設計人員必
須先宣告變數
• 由於VB2005中的雙引號“是用來標示字串前後的
符號,因此,若字串包含雙引號”,必須使用兩
個雙引號做為區分
• VB2005允許我們使用底線_將同一個敘述寫成多
行,但不能從名稱或關鍵字的一半開始分行。
• 若要將多個敘述寫成同一行,中間必須加上冒號:
84