ASP.NET 網頁製作教本 – 從基本語法學起

Slides:



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

第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
課程名稱:程式設計 授課老師:________
物件導向語言基礎 Chapter 4 認知 學完本章應了解何謂常數、變數。 了解有哪些運算式、運算子和基本輸入、輸出指令。
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Chapter 5 遞迴 資料結構導論 - C語言實作.
Chapter 5 迴圈.
ASP VBScript 基础知识.
課程名稱:程式設計 授課老師:________
Visual C++ introduction
2-3 基本數位邏輯處理※.
程式語言 -Visual Basic 變數、常數與資料型態.
第四章 流程控制(一) if,if-else 與 switch
保留字與識別字.
新觀念的 VB6 教本 第5章 資料與運算.
Java程式概觀.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
C語言簡介 日期 : 2018/12/2.
生物資訊程式語言應用 Part 3 Perl Language.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
網頁切換移轉 JS vs. ASP.NET.
檔案與磁碟的基本介紹.
Java 程式設計 講師:FrankLin.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
網頁切換移轉 JS vs. ASP.NET.
Topic Introduction—RMI
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
精明使用互聯網教育計劃 K9下載及安裝教學篇.
Pocket Access.
第 19 章 XML記憶體執行模式.
小结 郭清溥.
Ch04 VB.NET的流程控制 網頁程式設計.
JAVA 程式設計 資訊管理系 - 網路組.
網頁資料知多少? 事 實 ? 謠言?.
輸入&輸出 函數 P20~P21.
ASP基礎— VBScript基本語法 張森.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
期末考.
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
如何使用Gene Ontology 網址:
算獨教學 范國祥製作 於新湖國小 算獨資料來源
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
Dreamweaver 進階網頁製作 B 許天彰.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
1-1 二元一次式運算.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
資料表示方法 資料儲存單位.
適用於多選一 可減少if 與 else配對混淆的錯誤.
網路程式-ASP 授課:方順展.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
網頁設計第十二課.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

ASP.NET 網頁製作教本 – 從基本語法學起 第3章 認識V B.NET 程式

程式是什麼? 簡單地回答:「程式是由一行一行的敘述(statement)所組成的?」,例如:

3-1 敘述常見的組成元素

敘述是什麼呢? 對 VB 來說,敘述是由文數字(Literal)、保留字(Reserved word)、識別字(Identifier)及特殊符號所組成的。

文數字 文數字的用途是表示文字、數字、日期時間及真假資料等,例如:

保留字(1) 保留字(Reserved word),又稱為關鍵字 (Keyword),由不同保留字(關鍵字)所構成的敘 述,其意義是不相同的,例如以下兩個敘述: 第二個敘述雖只是把第一個敘述的 Single 保留 字改成 Double 保留字,結果卻會使 PI 這個識 別字在程式中佔用較大的記憶體。 Dim PI As Single = 3.14159 Dim PI As Double = 3.14159

保留字(2) 保留字是由 VB 內部定義的,其用途在指示程式如何運作,如果把程式比喻成一條一條的道路,那麼保留字就像是道路的指示標誌。

特殊符號(1) VB 所使用的特殊符號很多,例如以下是 VB 的「算術運算」符號:

特殊符號(2) 除了 “=” 號及算術運算之外,以下也是 VB 常用的符號:

識別字 (1) 1. 識別字由英文字母、中文字、數字及底線字元(_)所構成。 1. 識別字由英文字母、中文字、數字及底線字元(_)所構成。 2. 識別字的第一個字元必須是英文字母、中文字、或是底線字元(_),例如以下都是正確的識別字:A、x、CD、sun、加油站、_計數器…。 3. 識別字的第二個以後的字元可以是英文字母、中文字、底線字元(_)、或是數字,例如:A錢、每個_500_元、_520_…。

識別字(2) 4. 若識別字的第一個字元是底線字元(_),則識別字之中須含有英文字母、中文字、或數字,例如 _、__、___ …都不能當作識別字。 5. 保留字不可以做為識別字。

練習 以下何者不可以做為識別字: (1) 哈利波特 (2) GoTo (3)Give_Me_5 (4) 500的歌 (5) GoToSchool (6)True (7) #21:00:00# (8) Xor

解答 (2) GoTo:保留字。 (4) 500的歌:識別字的第一個字元不可以是數字。 (6) True:文數字且為保留字 (7) #21:00:00#:文數字 (8) Xor:保留字。

3-2 認識 VB.NET 的敘述類型

變數宣告敘述 程式中的資料可分成變數(variable)及常數(constant)兩種。 如果要使用變數,必須先使用「變數宣告敘述」宣告變數 。 首先寫上 Dim 保留字,接著為變數取名字,然後將此一名字書寫在後即可。 <% Dim X ' 增加此一敘述,宣告X為一個變數 X = 123 X = 456 %>

變數的命名 只要符合識別字的規定都可以成為變數的名稱。例如以下都是正確的變數宣告敘述: Dim kj Dim Do_It_Yourself Dim 加油站 Dim A錢 Dim _520_

一個敘述宣告多個變數 要一次宣告多個變數,可以把變數用逗號(,)區隔,然後一起放在 Dim 保留字之後,例如以下敘述就是利用一個敘述宣告了 X、Y、Z 三個變數: Dim X, Y, Z ‘ 一次宣告 X, Y, Z 三個變數

設定變數的資料型別 指定變數資料型別的敘述如下: 例如: Dim 變數名 As 資料型別 Dim A As Integer ' 指定Integer(整數)為變數A的資料型別 Dim B As String ' 指定String(字串)為變數B的資料型別 Dim C As Date ' 指定Date(日期時間)為變數C的資料型別 Dim D As Boolean ' 指定Boolean(布林)為變數D的資料型別

指定敘述 指定敘述,就是改變變數內容的敘述, 其敘述格式如下: 例如: 變數 = 欲指定給變數的資料 Dim X, Y, Z X = 123 ' 將 123 指定給 X, X 將等於 123 Z = X ' 將 X 的值指定給 Z, Z 將等於 123 Y = Z + 10 ' 將 Z + 10 的計算結果指定給 Y, Y 將等於133

指定敘述 - - "=" 號右邊 在指定敘述中,"=" 號右邊(欲指定給變數的資料)可以是常數、變數、運算式、或任何經由電腦執行之後所產生的資料,例如:

指定敘述 -- "=" 號左邊 但請注意 “=” 左邊必須是一個變數, 否則將是錯誤的,例如: 指定敘述 -- "=" 號左邊 但請注意 “=” 左邊必須是一個變數, 否則將是錯誤的,例如: 簡單地說,指定敘述的作用是把 “=” 號右邊的「資料」(值)指定給 “=” 號左 邊的「變數」 。 123 = X ' (×), "=" 左邊是一個常數 Y - 10 = Z ' (×), "=" 左邊是一個運算式

指定敘述 -- “=”指定符號 X = X + 1 在口訣上,我們不稱 “=” 號為「等號」,而稱之為「指定符號」,假設 X 原來的值等於 10,那麼 “=” 號右邊的值等於10+1,將其指定給 “=” 號左邊的變數 X,使得 X 的值變成 11,所以 X = X + 1 的功用是將 X 的值增加 1。

與變數宣告敘述的結合 指定敘述也可以與變數宣告敘述結合在 一起,成為一個敘述,例如: 將變數宣告敘述與指定敘述結合在一起 的敘述,在術語上稱為初值設定敘述。 Dim X = 123 ‘ 宣告變數 X,並且指定 123 給變數X

呼叫敘述 VB 內建了很多函數(function)及物件(object),在術語上,使用既有函數及物件的敘述就稱為「呼叫敘述」。

呼叫 VB 的內建函數 所謂「內建函數」指的是 VB 先將具備某一功能的程式寫好,然後存放在系統中,並且給予此一程式一個名稱。 例如 Now 是 VB 為「取得系統時間」這個功能所撰寫(提供)的內建函數:

呼叫 VB 的內建函數--使用例一 將「函數名稱」放在指定敘述 "=" 號的右邊,將變數放在指定敘述 "=" 號的左邊,那麼函數執行的結果(在術語上稱為傳回值)就會指定給變數,例如:

呼叫 VB 的內建函數 --使用例二 有些函數在使用時,必須傳入資料,例如在以 下程式中,把變數 X 傳入 Hour 函數,接著 Hour 執行之後,會傳回 “時”,然後指定給 變數 H: 假設執行時的系統時間等於15:30:10,則執行 Hour(X) 所得到的資料將等於15(註:Hour 函 數的功用是取出時間的「小時」)。 X = Now H = Hour(X) ' H 將等於系統時間的 "時"

呼叫 VB 的內建函數 --使用例三 我們也可以把 VB 內建函數視為一種資料(只是這種資料是經由電腦運算所產生的),並且拿它來做為運算的資料,例如:

使用物件的敘述 在 ASP 的程式設計中,物件佔有舉足輕重的地位,例如經常出現的「Response.Write(資料)」就是屬於使用物件的敘述,使用物件的敘述可分成「讀取物件的屬性」、「設定物件的屬性」及「呼叫物件的方法」三種。

讀取物件屬性的敘述 「讀取物件的屬性」敘述與指定敘述的結構相同,例如:

設定物件的屬性 「設定物件的屬性」其敘述結構如下:

呼叫物件的方法 「呼叫物件的方法」其敘述結構如下: 例如: 物件.方法( 參數一, 參數二 .... )

條件敘述(1) 此之前我們所看到的程式,都是一行敘述執行之後,緊接著執行下一行敘述,例如:

條件敘述 (2) 程式必須具備轉彎的能力,下圖: 當程式執行敘述一之後,接下來要根據 程式當時的情況來決定該執行敘述二或 敘述三,也就是轉彎到敘述二或敘述三。

If 敘述(1) Dim X = 80 If X >= 60 Then Response.Write( "及格!" ) Else Response.Write( "不及格!" ) End If 以上程式中的 If、Else、及End 都是 VB 的保留字,如果把含有這幾個保留字的敘述排除在外,則以上程式含有三行敘述: X = 80 ' 敘述一 Response.Write( "及格!" ) ' 敘述二 Response.Write( "不及格!" ) ' 敘述三

If 敘述 (2) 而 If 敘述就好像是圖-1的 ,其用途是判斷程式執行的情況,以上面的程式為例,「If X >= 60 Then」在判斷 X 是否大於等於 60,如果條件式(X >= 60)成立,則執行敘述二,否則(Else)執行敘述三。

迴圈敘述(1)

迴圈敘述(2)

其他敘述 VB 裡面的敘述還有 流程控制敘述(Control Flow Statement)、 錯誤處理敘述(Error Handling Statement)、With敘述(With Statement)、 事件敘述(Event Statement)、 同步鎖定敘述(SyncLock Statement) 。

3-3 輸出與輸入

輸出與輸入(1) 不管是什麼程式語言,資料的輸入與輸出都是最基本的要求,對 VB 程式來說,最簡單的輸入方式是使用 InputBox 函數,其功用是開啟一個輸入視窗,讓使用者輸入資料,而最簡單的輸出方式則是使用 MsgBox 函數,其功用是把程式欲輸出的資料顯示在訊息窗之中。

輸出與輸入(2)

輸出與輸入(3) 不過在製作 ASP.NET 網頁時,InputBox 及 MsgBox 函數卻是不可以使用的,為什麼呢? 因為 ASP 是在 Server 端執行的程式,而上網 者瀏覽 ASP.NET 網頁時,他可能位於遠端的 另一個機器上,所以在 Server 端所顯示的視窗 (InputBox 及 MsgBox 函數都會顯示視窗)上網 者是看不到的,也就是說在 Server 端的 ASP 程式中利用 InputBox 及 MsgBox 來輸入及輸 出資料是沒有意義的。

ASP.NET 的輸出(1) 在製作 ASP.NET 網頁時,最簡單的輸出方法是 Response.Write,例如: <% Dim X X = Now Response.Write( "現在時間是:" ) ' 輸出字串「現在時間是:」 Response.Write( X ) ' 輸出變數X的內容 %>

ASP.NET 的輸出 (2)

ASP.NET 的輸出 (3) Response.Write並不是將資料輸出到Serve 端的螢幕(如果是這樣,上網機器也是看不到的),而是下載給瀏覽器,瀏覽器在收到資料時,會將其顯示在瀏覽視窗上,簡單地說,Response.Write 是把資料輸出到上網機器的瀏覽器。

從「資料的輸出」到「資料的顯示」(1) 瀏覽視窗是附屬於瀏覽器的視窗,其用途是讓瀏覽器顯示其所接收到的 HTML文件,所以瀏覽器是文件的接收者,而瀏覽視窗則是文件的顯示場所。 資料的流程:

從「資料的輸出」到「資料的顯示」(2) 我們不能憑著瀏覽視窗所看到的結果來斷定 Response.Write 輸出的資料為何,而必須利用瀏覽器功能表的「檢視/原始碼」以檢視 Response.Write 所傳輸到瀏覽器的資料。

ASP.NET 的輸入 ASP.NET 的輸入來自瀏覽器,而瀏覽器提供輸入資料給 ASP 程式的方法有兩種: 利用瀏覽器的網址來輸入資料 。 利用表單來輸入資料 。

利用瀏覽器的網址來輸入資料(1)

利用瀏覽器的網址來輸入資料(2) 在http://localhost/kjaspx/ch03/Echo.aspx網址之後附帶了 "?Name=王國榮&Love=ASP.NET" 的輸入資料,它所表示的意義是:

利用瀏覽器的網址來輸入資料(3) 改變 Name 及 Love 的參數值看看,如下: 結果如下圖: http://localhost/kjaspx/ch03/Echo.aspx?Name=Peter&Love=VB.NET

利用瀏覽器的網址來輸入資料(4) ASP 程式中如何讀取輸入資料,首先要知道參數名稱(例如以上網址中的 Name 及 Love),接著是利用以下敘述讀取: data1 = Request("Name") ' 讀取Name參數值,並且將其指定給data1 data2 = Request("Love") ' 讀取Love參數值,並且將其指定給data2

利用瀏覽器的網址來輸入資料(5) 完整的 .aspx 檔案如下: <HTML> <HEAD><TITLE>Welcome!</TITLE></HEAD> <BODY BgColor="#FFFFFF"> <Center><H2> <% Dim data1 = Request( "Name" ) Dim data2 = Request( "Love" ) Response.Write( data1 ) Response.Write( " 歡迎您,您喜歡的電腦學科是 " ) Response.Write( data2 ) %>! <HR></H2></Center> </BODY> </HTML>

實例 寫一 Average.aspx 網頁讀取來自瀏覽器所輸入的資料,包含「Name=姓名」、「BCC=分數」、「VB=分數」、及「ASP=分數」,然後計算 BCC、VB、ASP 這三科的總分及平均分數,並且顯示在網頁上。

實例 -- Average.aspx(1) <HTML><BODY BgColor="#FFFFFF"> <% Dim Name = Request("Name") ' 讀取Name Dim BCC = Request("BCC") ' 讀取BCC Dim VB = Request("VB") ' 讀取VB Dim ASP = Request("ASP") ' 讀取ASP Dim Total ' 總分 Dim Average ' 平均分數  

實例 -- Average.aspx(2) Total = CInt(BCC) + CInt(VB) + CInt(ASP) ' 計算總分 Average = Total / 3 ' 計算平均分數 Response.Write( Name ) ' 輸出Name Response.Write( ", 你的總分是: " ) Response.Write( Total ) ' 輸出總分 Response.Write( ", 平均分數是: " ) Response.Write( Average ) ' 輸出平均分數 %> <HR></H2></Center> </BODY> </HTML>

練習 寫一 Average2.aspx 網頁讀取來自瀏覽器所輸入的資料,包含「Name=姓名」、「S1=ASP 第一次期中考成績」、「S2=ASP 第二次期中考成績」、及「S3=ASP 期末考成績」,然後計算其平均分數,輸出「姓名,您的 ASP 平均分數是 X 分 !」。

利用表單來輸入資料

3-4 資料與運算

資料表示法 -- 數值資料 VB 在表示數值資料方面,以不違背數學的習慣為原則,因此大部份的表示法,都跟數學的慣例相同,例如以下都是正確的數值資料表示法: 2005、0、+512、-204、3.14159

資料表示法 -- 字串資料(1) 字串 是由一連串的字元組成的串列,在VB 中,一個字串的前後必須以 “ ” 括起來,例如以下都是 VB 的字串: "RUN!PC" "Address #83" "1998" "12+75=?" "旗標資訊月刊"

資料表示法 -- 字串資料(2) 字串資料雖然必須以雙引號括起來,但真正放到記憶體時,兩邊的雙引號會被去掉,所以字串輸出時也是沒有雙引號的,例如: Response.Write("RUN!PC") ' 放到記憶體時, 兩邊的雙引號會被去掉, 輸出:RUN!PC ' 所以輸出時也就沒有雙引號了。

資料表示法 -- 字串資料(3) 由於雙引號被拿來當作界定字串的符號,所以如果字串裡面又含有雙引號,會引起 VB 的混淆,為了避免這樣的混淆, VB 規定字串中的雙引號要用兩個雙引號來表示,例如: Response.Write("BC""xy") ' C與x之間的兩個雙引號只代表一個雙引號輸出:BC"xy

資料表示法 --日期時間資料(1) 標準的日期格式是 #mm/dd/yyyy# (例如 #12/31/1999#),標準的時間格式則是 #時:分:秒#(‘時’ 的範圍是0~23)、#時:分:秒 AM# 或 #時:分:秒 PM#(‘時’ 的範圍是 0~12, AM 表示上午, PM表示下午),例如: #9:30:00 AM# 表示 上午 9 點 30 分 #7:55:30 PM# 表示下午 7 點 55 分 30 秒 #19:55:30# 也表示下午 7 點 55 分 30 秒

資料表示法 --日期時間資料(2) ‘時’ 的範圍是 0~23、‘分’ 及 ‘秒’ 的範圍是 0~59:例如以下都是錯誤的表示法 #24:00:00# 錯誤, ‘時’ 超過 23 #17:60:00# 錯誤, ‘分’ 超過 59 #12:00:-1# 錯誤, '秒' 是負數

資料表示法 --日期時間資料(3) 一天從 #0:00:00# 到 #23:59:59# 的時間當中, ‘0 時’ 及 ‘12 時’ 的表示法要特別注意, 其中 ‘0時’ VB 將它表示成 #12:00:00 AM#, 而 ‘12 時’ 則是 #12:00:00 PM#,所以以下幾 個時間發生的先後順序是:(左邊的時間先發生) 時間的表示法中也可以把日期涵蓋進來,例如 #2/28/1997 5:03:00 PM# 即表示 1997 年 2 月28 日, 下午 5 點零 3 分。 #12:00:00 AM# -> #00:00:01# -> #12:00:00 PM# -> #01:00:00 PM#

資料表示法 -- 布林資料 布林資料指的是「真」與「假」的集合,又稱「真假資料」,其中「真」要以 True 表示,「假」要以 False 表示。布林資料常用來代表一個條件式的成立與否,例如: Response.Write( 2 > 1 ) ' 輸出:True Response.Write( 2 < 1 ) ' 輸出:False

資料的運算 資料依其型別(數值、字串、日期時間、布林),可能衍生出不同的運算方式,例如 + - * /(加減乘除)等算術運算可以應用於「數值」資料,卻不能夠應用在「字串」資料(例如 "HTML" * "ASP" 是錯誤的)。

算術運算 算術的四則運算是先乘除後加減,VB 也不例外,但除了加減乘除之外,VB 還增加了「 \ 」、「Mod」、「 ^ 」三種運算,當它們在同一行時,其運算的優先順序是:

算術運算 -- 實例一 Response.Write( 18 / 3 ^ 2 ) 輸出結果為 2,因為先「 ^ 」再「 / 」,所以運算過程是: 18 / 3 ^ 2 = 18 / 9 = 2

算術運算 -- 實例二 Response.Write( 12 / 2 * 6 / 3 ) 算術運算 -- 實例二 Response.Write( 12 / 2 * 6 / 3 ) 輸出結果為 12,因為「 * 」與「 / 」的優先順序相同,所以由左至右依序處理,其運算過程是: 12 / 2 * 6 / 3 = 6 * 6 / 3 = 36 / 3 = 12

算術運算 -- 左右括弧的作用 左右括弧的運用在 VB 中與一般的算術運算相同,也就是說它會優於所有的運算符號先被處理,如: 算術運算 -- 左右括弧的作用 左右括弧的運用在 VB 中與一般的算術運算相同,也就是說它會優於所有的運算符號先被處理,如: Response.Write( (2 + 3) * 4 ) ' 輸出: 20 Response.Write( (6 - 3) ^ 2 ) ' 輸出: 9

算術運算 -- 負號的優先順序 負號出現在運算式時也要注意,當負號與「 ^ 」並列時,「 ^ 」會優先處理,與其他運算符號並列時,則優先處理負號,如: Response.Write( -3 + 3 ) ' 輸出 0, 說明:(-3) + 3 = 0 Response.Write( -3 ^ 2 ) ' 輸出-9, 說明:-(3 ^ 2) = -9

練習 寫出以下運算式的輸出結果: Response.Write( 100 Mod 30 \ 4 ) Response.Write( -12 / (2 * 6) / 2 ) Response.Write( (-3) ^ 2 ) Response.Write( (20 - 12) / (8 * (3 + 1)) )

串接運算 -- 使用 & 符號 (1) 串接運算指的是將資料與資料連接起來,舉例來說 "ABC" & "123" 就是把 "ABC" 與 "123" 串接在一起,結果會得到 "ABC123" 字串。

串接運算 -- 使用 & 符號 (2) & 符號也可用來串接不同型別的資料,例如: 串接運算 -- 使用 & 符號 (2) & 符號也可用來串接不同型別的資料,例如: Dim S1, S2, X1, X2 As String Dim D As Date S1 = "Today is " D = #8/24/1997# S2 = S1 & D ' 字串與日期的串接 Response.Write( S2 ) ' 輸出: Today is 1997/8/24 X1 = "12345." & 678 ' 字串與數值的串接 Response.Write( X1 ) ' 輸出: 12345.678 X2 = 678 & 0.12345 ' 數值與數值的串接 Response.Write( X2 ) ' 輸出: 6780.12345

串接運算 -- 使用 + 號(1) + 號也可以用來進行「字串」與「字串」的串接運算,例如: Dim First As String = "Peter" Dim Last As String = "Wang" Response.Write( First + " " + Last ) ' 輸出: Peter Wang

串接運算 -- 使用 + 號(2) '+' 號用在字串與字串之間叫做串接運算,用在數值與數值之間叫做算術運算,不要將兩者混為一談,例如: Response.Write( 50 + 20 ) ' 算術運算, 輸出: 70 Response.Write( "50" + "20" ) ' 串接運算, 輸出: 5020

挑戰題(1) 有一 ASP.NET 網頁的原始內容如下: <HTML><BODY BgColor="#FFFFFF"> <% Dim BCC As String = Request("BCC") Dim VB As String = Request("VB") Dim ASP As String = Request("ASP") Dim Average As Integer = (BCC + VB + ASP) / 3 Response.Write( "平均 = " & Average ) %> <HR> </BODY> </HTML>

挑戰題(2) 結果當上網者在網址後面附帶「BCC=90&VB=80&ASP=85」的參數時,預期的結果是「平均=85」,但實際輸出的結果卻是「平均 = 302695」,為什麼會這樣?該如何解決?

複合運算符號(1) 在資料運算敘述中,有一種有趣的寫法, 就是將 ‘=’ 號與另一種運算符號結合 在一起,如下: 此一敘述讀成「將 X 加 1」,作用等於 「X = X + 1」 。 X += 1 ' 結合 '=' 號與 '+' 號所構成的運算符號

複合運算符號 (2) 除了 + 號之外,以下運算符號也都可以採用這種寫法:

3-5 讓程式轉彎的「條件敘述

有條件執行的 If 敘述

If...End If 敘述 Dim X ' 在此 X 可能被指定成某數 Response.Write( "敘述一" ) If X > 10 Then Response.Write( "敘述二" ) End If Response.Write( "敘述三" ) Response.Write( "敘述四" )

If...Else...End If 敘述 Dim X ' 在此 X 可能被指定成某數 Response.Write( "敘述一" ) If X > 10 Then Response.Write( "敘述二" ) Else Response.Write( "敘述三" ) End If Response.Write( "敘述四" )

條件式的構成 在 If 敘述中,決定程式該往那個方向執行的關鍵在於 If 與 Then 之間的條件式,而構成這個條件式的運算符號常見者有 “=”(等於)、“>”(大於)、“<”(小於)、“>=”(大於等於)、“<=”(小於等於)、“<>”(不等於)、Not(非)、And(且) 、Or(或) , 這些稱為比較運算符號 。

比較運算 請看以下實例:(假設X=1)

邏輯運算 (1) Not、And、及 Or 稱為邏輯運算符號,在使用邏輯運算以前,首先要弄清楚邏輯運算的對象,以句子「(2>0) 的相反」為例,要表示成:

邏輯運算 (2) 接下來是判斷「運算對象」經過「邏輯運算」以後的結果,若成立,以 True 表示,或不成立,以 False 表示,所以運算的過程如下: Not (2 > 0) 先求比較運算式 (2 > 0) 的結果 = Not True 再進行邏輯運算 (True 的相反為 False) = False

邏輯運算 (3) 不像 Not 只有一個運算對象,And 及 Or都必須有兩個運算對象,例如:

邏輯運算 (4) 同樣的,運算的方法也是先將運算對象的結果計算出來,所以: (1) (0 > 3) And (2 > 0) 先求比較運算式(0 > 3)及(2 > 0)的結果 = False And True 再求 And 的結果 = False (2) (0 > 3) Or (2 > 0) 先求比較運算式(0 > 3)及(2 > 0)的結果 = False Or True 再求 Or 的結果 = True

邏輯運算 (5) 對 And 運算來說,若前後的運算對象都等於 True,則運算的結果等於 True,否則等於 False,如下表:

邏輯運算 (6) 而對 Or 運算來說,若前後的運算對象有一個為 True,則運算的結果等於 True,否則等於 False,如下表:

實例一(1) 寫一 ASP.NET 網頁,此一網頁會判斷系統時間,如果時間介於 6 時及 18 時之間,則在網頁上顯示「日安,您好!」,否則顯示「晚安,您好!」。此時所撰寫 .aspx 檔案如下:

實例一(2) <HTML> <BODY> <% Dim H As Integer H = Hour(Now) ' 取得系統時間的 '時', 然後指定給 H 變數 If H >= 6 And H <= 18 Then Response.Write( "日安, 您好!" ) Else Response.Write( "晚安, 您好!" ) End If %> </BODY> </HTML>

實例一(3) 所謂時間介於 6 時及 18 時之間,表示 「時間大於等於 6 時」且「時間小於 18 時」,所以表示的過程如下: 所謂時間介於 6 時及 18 時之間,表示 「時間大於等於 6 時」且「時間小於 18 時」,所以表示的過程如下: 最後將 H >= 6 And H <= 18 放到 If 及 Then 之間,即構成了我們期望的條件式。 「時間大於等於6時」且「時間小於18時」 ->「時間大於等於6時」And「時間小於18時」 -> H >= 6 And H <= 18

實例二(1) 請改良 Echo.aspx 網頁,只要瀏覽時,網 址所附帶的參數不完整,例如:缺少 Name 參數或 Love 參數,就在網頁上顯 示 “對不起,您所輸入的資料不完 整!”。 註:所謂缺少 Name 參數或 Love 參數,指 的是 data1(=Request("Name")) 等於 "" 或 data2(=Request("Love"))等於 "",所以所 撰寫的條件式是「data1 = "" Or data2 = ""」。

實例二(2) <HTML> <HEAD><TITLE>Welcome!</TITLE></HEAD> <BODY BgColor="#FFFFFF"> <Center><H2> <% Dim data1 As String = Request("Name") Dim data2 As String = Request("Love") If data1 = "" Or data2 = "" Then Response.Write( "對不起,您所輸入的資料不完整!" ) Else Response.Write( data1 & " 歡迎您,您喜歡的電腦學科是 " & data2 ) End If %> <HR></H2></Center> </BODY> </HTML>

巢狀 If 敘述

實例 (1) 輸入一整數N,並且判斷這個整數是負數、一位數、二位數、或是三位數以上。

實例 (2)

逐一過濾條件的 If...ElseIf 敘述

If...ElseIf 敘述 利用 ElseIf 逐一過濾條件,判斷一正整數 N 為幾位數,如下: <% Dim N As Integer = CInt(Request("N")) If N < 0 Then Response.Write( N & " 為負數" ) ElseIf N < 10 Then Response.Write( N & " 為一位數" ) ElseIf N < 100 Then Response.Write( N & " 為二位數" ) Else Response.Write( N & " 為三位數(含)以上" ) End If %>

練習 寫一 Average3.aspx 網頁讀取瀏覽器所輸入的資料,包含「Name=姓名、S1=ASP 第一次期中考成績、S2=ASP 第二次期中考成績、S3=ASP 期末考成績」,然後計算其平均分數,如果平均分數≧60、則顯示「姓名, 你及格了!」,如果平均分數<60 但是≧50,則顯示「姓名, 你可以補考!」,如果平均分數<50,則顯示「姓名, 你被當掉了!」。

多執行路徑的 Select Case 敘述(1) Select Case 資料或運算式 Case 條件值 1 敘述區塊 1 Case 條件值 2 敘述區塊 2 : Case 條件值 N 敘述區塊 N Case Else 敘述區塊 N+1 End Select

多執行路徑的 Select Case 敘述(2)

實例一(1) 有些網頁會根據星期幾來顯示不同的背景圖片,如下圖:

實例一(2) <% Dim week As Integer Dim BackFile As String week = DatePart(DateInterval.Weekday, Now) - 1 Select Case week Case 1 BackFile = "week01.gif" Case 2 BackFile = "week02.gif" Case 3 BackFile = "week03.gif" Case 4 BackFile = "week04.gif"

實例一(3) Case 5 BackFile = "week05.gif" Case 6 BackFile = "week06.gif" End Select %> <HTML> <BODY Background=<% Response.Write( BackFile )%>> </BODY> </HTML>

實例一(4) 其實以上程式還有更簡單的寫法,如下: <% Dim week As Integer Dim BackFile As String week = DatePart(DateInterval.Weekday, Now) - 1 BackFile = "week0" & week & ".gif" %> <HTML> <BODY Background=<% Response.Write( BackFile )%>> </BODY> </HTML>

實例二 (1) <HTML> <BODY BgColor="#FFFFFF"> <Center><H2> <% Dim age As Integer = CInt(Request("age")) Dim S As String Select Case age Case 0, 1, 2, 3, 4, 5 ' 逐一列出條件值 S = "普通級"

實例二 (2) Case 6, 7, 8, 9, 10, 11 S = "保護級" Case 12, 13, 14, 15, 16, 17 S = "輔導級" Case Else S = "限制級" End Select S = age & " 歲可看「" & S & "」電影" Response.Write( S ) %> <HR></H2></Center> </BODY> </HTML>

實例二 (3)

3-6 讓程式繞圈的「迴圈敘述」

計次執行的 For-Next 敘述 要讓某一段程式反覆執行多次,須使用For…Next 迴圈敘述: <% Dim I For I = 1 To 10 Response.Write( "這是第 " ) Response.Write( I ) Response.Write( " 圈<P>" ) Next %>

For-Next 的格式 For 計次變數 = 起始值 To 終止值 Step 步進值 敘述區塊 Next 撰寫 For-Next 迴圈時,若步進值等於 1,則可以省略格式中的 Step 步進值,例如「For I = 1 To 10」即表示「For I = 1 To 10 Step 1」。

For-Next 迴圈的執行過程(1)

For-Next 迴圈的執行過程(2) 步進值 >1 時 起始值等於 3,終止值等於 25,步進值等於 6: <% Dim I For I = 3 To 25 Step 6 Response.Write( I & "<P>" ) Next %>

For-Next 迴圈的執行過程(3) 步進值 <0 時 步進值也可以是負數,但此時的起始值必須大於終止值,而判斷脫離迴圈的條件則變成:計次變數值<終止值,例如:

For-Next 迴圈的執行過程(4)

實例一 (1) 利用 For 迴圈產生以下網頁。

實例一 (2) <% Dim I For I = 7 To 1 Step -1 Response.Write( "<FONT Size=" ) Response.Write( I ) Response.Write( ">Size=" ) Response.Write( I ) Response.Write( "</FONT><BR>" ) Next %>

實例二 將 Moon1.gif~Moon8.gif 顯示於網頁上。 <% Dim I For I = 1 To 8 Response.Write( "<IMG SRC=Moon" & I & ".gif>" ) Next %>

實例三(1) 計算 Sum = 1 + 2 + 3 + ... + 20。 Dim Sum Sum = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20 Response.Write( Sum )

實例三(2) 但「Sum = 1 + 2 + 3 + ... + 1000」呢? Sum0 = 0 Sum1 = Sum0 + 1 Sum2 = Sum1 + 2 … +) Sum20 = Sum19 + 20 --------------------------------------------------------------------------------------------------- Sum20+Sum19+...+Sum2+Sum1+Sum0 = Sum19+...+Sum2+Sum1+Sum0+1+2+...+20 消去 Sum19+…+Sum2+Sum1+Sum0 得到 Sum20 = 1 + 2 + ... + 20

實例三(3) <% Dim I Dim Sum = 0 For I = 1 To 20 Sum = Sum + I Next Response.Write( Sum ) %>

實例四 計算 Sum = 1 + 4 + 7 + 10 + … + 301。 <% Dim I Dim Sum = 0 For I = 1 To 301 Step 3 Sum = Sum + I Next Response.Write( Sum ) %>

實例五(1) 設計一 ASP.NET 網頁 Love.aspx 用以讀取上網者的興趣,網址的輸入方式如下: 例一: Love.aspx?N=2&Love1=看海&Love2=閱讀 例二: Love.aspx?N=4&Love1=運動&Love2=音樂&Love3=電動&Love4=睡覺

實例五(2) 而輸出結果如下:

實例五(3) HTML> <BODY> 您的興趣有:<HR> <UL> <% Dim I, N Dim Love As String N = Cint( Request("N")) ' 讀取興趣的個數 For I = 1 To N Love = Request("Love" & I) ' 讀取第I個興趣 Response.Write( "<LI>" & Love & "</LI>" ) Next %> </UL> </BODY> </HTML>

練習一 寫一程式計算4+9+13+18…+94+99。(提示:須使用兩個 For 迴圈)

練習二 利用<TABLE>、<TR>、<TD>標示及 For 迴圈將 Moon1.gif~Moon8.gif 輸出成下圖:(提示:可以使用兩個 For 迴圈)

有條件執行的 While 迴圈 如果程式執行前已經確定迴圈要執行的次數, 使用 For-Next 十分方便,如果不能確定迴圈 要執行的次數,可以考慮使用 While 迴圈,其 格式是: 意思是:只要 '條件式' 成立,就繞迴圈執行。 而每繞迴圈一次,須重新判斷條件式。 While 條件式 敘述區塊 End While

實例一 使用 While 迴圈從 1 輸出到 10。 <% Dim I = 1 While I <= 10 ' 只要 I ≦ 10,就繞迴圈執行 Response.Write( "這是第 " ) Response.Write( I ) Response.Write( " 圈<P>" ) I = I + 1 End While %>

實例二 (1) 設計一 ASP.NET 網頁 Love02.aspx 用以讀取上網者的興趣,網址的輸入方式如下: 例一: Love02.aspx?Love1=看海&Love2=閱讀 例二: Love02.aspx?Love1=運動&Love2=音樂&Love3=電動&Love4=睡覺

實例二 (2) <% Dim I = 1 Dim Love = Request("Love" & I) While Love <> "" Response.Write( "<LI>" & Love & "</LI>" ) I = I + 1 Love = Request("Love" & I) ' 讀取下一個興趣 End While %>

巢狀迴圈(1) 在迴圈裡面也可以又有迴圈,這種情形即稱為巢狀迴圈,例如:

巢狀迴圈 (2) 這個程式執行後,其輸出結果如下:

實例 (1) 利用巢狀迴圈產生以下 5×4 的表格。

實例 (2) <% Dim I, J Response.Write( "<TABLE Border=1>" ) For I = 1 To 5 Response.Write( "<TR>" ) For J = 1 To 4 Response.Write( "<TD>(" & I & "," & J & ")</TD>" ) Next Response.Write( "</TR>" ) Next Response.Write( "</TABLE>" ) %>

練習一 利用巢狀迴圈將 Moon1.gif~Moon8.gif 輸出成下圖:

練習二 利用巢狀迴圈產生以下的九九乘法表: