ASP.NET 互動網頁程式設計 (使用 C#)
CSIE NTU
1
大綱
課程簡介
資料核對
網頁類型簡介
軟體安裝說明
C# 基本語法複習
2
教材與進度
課程先修
對程式設計有興趣
具備 C# 基礎程式設計能力
上課教材
以投影片為主,無指定用書
上課投影片可於課程網頁下載
課程進度
依照學習狀況做動態調整
3
課程內容
環境介紹與安裝
C# 基礎語法複習
Web 基本控制項
SQL 基本語法
DataGrid 控制項
DataList 控制項
資料庫應用程式
4
評分方式
出席狀況 – 20%
請準時上課
請不要缺課 期中測驗 – 30%
約在第六次至第八次上課期間
課程進度落後則改為課後練習 期末測驗 – 50%
最後一堂上課期間舉行
請務必參加5
大綱
課程簡介
資料核對
網頁類型簡介
軟體安裝說明
C# 基本語法複習
6
大綱
課程簡介
資料核對
網頁類型簡介
軟體安裝說明
C# 基本語法複習
7
網頁伺服器
網頁伺服器是一個管理網頁的軟體,可透過網 路提供網頁內容至用戶端瀏覽器
常見的網頁伺服器
Internet Information Services (IIS)
Apache
8
靜態網頁
靜態網頁的內容,不論任何人任何時間連結至 此網頁,所得到的內容皆相同
9
要求網頁
網頁資料
動態網頁(1)
動態網頁是在使用者要求後才動態產生
動態網頁類型
用戶端動態網頁 (JavaScript、VBScript⋯)
10
要求網頁
網頁資料
分析指令 產生網頁
動態網頁(2)
動態網頁是在使用者要求後才動態產生
動態網頁類型
伺服端動態網頁 (PHP、ASP、ASP.NET⋯)
11
要求網頁
傳送網頁
動態產生網頁
大綱
課程簡介
資料核對
網頁類型簡介
軟體安裝說明
C# 基本語法複習
12
軟體介紹
我們會使用到的軟體有
Internet Information Service
Visual Web Developer 2008 Express Edition
13
IIS 伺服器(1)
要執行 ASP.NET Web 應用程式必須先安裝 IIS 伺 服器
在 Windows XP 下,至 [控制台] 選擇[新增或移 除程式] 即會跳出下圖視窗,點選左方[新增/移 除Windows 元件]
14
IIS 伺服器(2)
點選 [新增/移除Windows 元件] 後會出現
[Windows 元件精靈] 視窗,將 IIS 選項打勾點選 下一步即可進行安裝
15
IIS 伺服器(3)
當 IIS 伺服器安裝完成後,開啟瀏覽器連結至本 機網址 http://localhost/ ,若 IIS 伺服器順利安裝 完成即可看到下圖網頁
16
Visual Web Developer (1)
Visual Web Developer 為發展網頁程式的整合開 發環境
下載 Visual Web Developer 2008 Express Edition
http://www.microsoft.com/express/download/
17
Visual Web Developer (2)
18
Visual Web Developer (3)
19
Visual Web Developer (4)
20
大綱
課程簡介
資料核對
網頁類型簡介
軟體安裝說明
C# 基本語法複習
21
基本資料型別
22
System.Object
System.Array System.String
System.ValueType
bool char byte
short int long float double decimal
字串數值型別轉換
數值=>字串
使用 ToString()
實例
字串=>數值
使用 Parse()
實例
23
int a = 2468;
string b = a.ToString();
string b = “2468”;
int a = int.Parse(b);
選擇結構流程控制 - if
可利用關係及條件運算子,來描述是否執行流 程中的程式區塊
語法
24
if (判斷條件)
{ 條件成立時執行內容;
} else
{ 條件不成立時執行內容;
}
選擇結構流程控制 – if … else if
當程式具有多個判斷條件時,可利用 if ⋯ else if
⋯ else if ⋯ else 來完成
語法
25
if (判斷條件 1) { 程式區塊1;
}
else if (判斷條件 2) { 程式區塊2;
}
else if (判斷條件 3) { 程式區塊3;
} else
{ 程式區塊4;
}
選擇結構流程控制 - switch
程式中若具有多個判斷條件時,除了if ⋯ else if
⋯else 流程控制外,還可以選擇switch 敘述語法
語法
26
switch (判斷條件) {
case 條件值1:
程式區塊1 break;
case 條件值2:
程式區塊2 break;
default:
預設程式區塊 break;
}
選擇結構流程控制 - switch
switch 流程控制簡潔,而且更易維護
switch 的判斷條件可為變數、數值或字串等等
判斷條件結果之資料型別要與所有條件值的資 料型別一致
若條件值1滿足時,便會執行程式區塊1的程式 內容,直到break 為止離開switch 敍述
若所有條件值皆不滿足時,便會執行default 的 預設程式區塊內容
27
重複結構流程控制
while
do while
for
foreach
重複結構流程控制 - for
當我們需要重複執行某段程式區塊時,就可以 利用重複結構流程控制來達成
語法
實例
29
for ( 初值; 判斷式; 遞增值 ) { 程式區塊;
}
for (int i=0; i<10; i++) {
Console.Write (i + " ");
}
0 1 2 3 4 5 6 7 8 9
重複結構流程控制 - for
迴圈執行時,會先判斷初值是否滿足判斷式,若滿足則執行程式區塊
,程式區塊執行完畢後會回到遞增值部份,遞增值結束後再一次回到 判斷式中,檢查遞增後的值是否滿足判斷式,滿足再次執行程式區塊
,完成後再次回到遞增值部份,直到判斷式不滿足為止離開迴圈
程式區塊只有一行時,可省略大括號
假設初值與遞增值有二個以上的運算式,中間必須以逗號分隔
初值、判斷式及遞增值必須仔細考量設定,以防造成『無窮迴圈』
若初值、判斷式及遞增值皆省略,即為無窮迴窮
30
for (int i=0, j=0; i*j<10; i++, j++)
for (;;)
重複結構流程控制 - for
break
在 for 執行迴圈中,若遇到 break 陳述句時,會立 即跳離迴圈
continue
在 for 執行迴圈中,若遇到 continue 陳述句時,會 立即跳至遞增值部份
31
變數生命週期
變數的生命週期根據變數所屬的有效範圍來決 定
我們可以簡單的把一組大括號所包含的範圍稱 為一段『程式碼區塊』
程式碼區塊界定變數的有效範圍
實例
在迴圈中宣告的變數,在迴圈外的程式碼區塊中便 無法存取該變數
32
重複結構流程控制 - while
for 迴圈中必須先設定迴圈執行次數,而 while 迴圈只須設定執行迴圈的條件即可,當條件滿 足時,即會不斷重複執行
語法
實例
33
while (判斷條件) { 程式區塊
}
int i = 0;
while (i < 10) {
Console.Write(i + " ");
i++;
}
0 1 2 3 4 5 6 7 8 9
重複結構流程控制 - while
while 迴圈在執行時,會先檢查條件是否成立,
當條件成立時才會執行迴圈中的程式區塊
while 迴圈中,一樣可以使用 break 及 continue
程式區塊中,必須有將判斷條件變成 false 的陳 述句,否則將導致無窮迴圈
while 迴圈判斷條件後加上”;”時,表示迴圈中不 需執行任何程式區塊
34
while (Console.ReadLine() != "yes");
重複結構流程控制 – do … while
while 迴圈執行時,會先檢查條件是否成立,進 而決定是否執行迴圈中的程式區塊。而do ⋯
while 迴圈第一次執行時並不會先檢查判斷條件
,直接執行迴圈中的程式區塊,執行完畢後才 會檢查條件是否滿足
語法
35
do
{ 程式區塊
} while ( 判斷條件 );
重複結構流程控制 – do … while
實例
注意
do ⋯ while 迴圈中,一樣可以使用 break 及 continue
36
do {
Console.WriteLine("1");
}while (false);
//輸出結果︰ 1
陣列
何謂陣列
一群資料型別相同的變數所成的集合
為何需要陣列
當我們需要儲存班上一百位同學的學生姓名資料時
,必須宣告一百個字串變數來儲存,相當的麻煩。
但若使用陣列來儲存,我們僅需宣告一個一維陣列 即可
37
常用陣列維度
一維陣列
二維陣列
38
1 3 2 4 8 6
4 9 2 3 5 7 8 1 6
陣列宣告
語法
一維陣列用法
二維陣列用法
資料型別[] 陣列名稱 = new 資料型別[陣列大小];
int[] myArray = new int[10];
string[] studentName = new string[100];
int[] a = new int[5] {0,1,2,3,4};
int[,] mat = new int[3,3];
int[,] mat = new int[3,3] {{4,9,2},{3,5,7}, {8,1,6}};
重複結構流程控制 - foreach
當我們需要一筆一筆讀取 (無法儲存) 陣列的內 容時,可利用 foreach 迴圈來簡化程式
語法
實例
40
foreach(陣列元素資料型別 變數名 in 陣列變數名) { 程式區塊;
}
int[] arrayA = new int[5] {10,1,2,3,4};
foreach(int a in arrayA) {
Console.WriteLine(a);
}
命名空間 (1)
使用命名空間的好處可以將功能類似的類別組 織在一起
命名空間允許巢狀的結構,形成階層式的架構
,更容易分類管理
若在同一個程式檔中宣告二個名稱一樣的類別 時,編譯會發生錯誤,我們可以利用命名空間 來解決此問題
利用 using 關鍵字來指定需要的命名空間
語法
41
namespace 命名空間名稱 { 類別;
}
命名空間 (2)
語法
實例
42
namespace IBM {
class Notebook {
} }
namespace Compaq {
class Notebook {
} }
namespace 命名空間名稱 { 類別;
}
類別
類別主要的功能是用來描述定義物件的模樣
類別主要包含下列成員
欄位 (field)
屬性 (property)
方法 (method)
事件 (event)
43
物件
我們可以把類別想像成是車子架構的設計圖,
而物件就是根據車子架構設計圖所設計出來的 車子
類別的使用需產生該類別的實體物件,我們可 以透過 new 關鍵字來完成
語法
實例
44
類別名稱 物件名稱 = new 類別名稱();
car myCar = new car();
方法成員 (1)
方法是用來定義類別提供的特定功能
實體物件可透過 “.” 來呼叫方法成員,但在方法成員名稱 後需加上 () 來說明傳入的參數值
語法
實例
說明
void 表示沒有回傳值
() 內為空白時,表示不需要傳入參數
45
存取修飾詞 回傳值 方法名稱 (傳入參數) { 方法內容程式區塊;
}
public void hello() {
Console.WriteLine("您好");
}
參數傳遞與回傳值 (1)
類別的方法可以定義傳入的參數及回傳值,因此我們 可以把需要運算的參數傳給方法,在方法中計算完畢 後再回傳結果
語法
實例
說明
利用 return 關鍵字來傳遞要回傳的值
注意型別須一致
46
存取修飾詞 回傳值型別 方法名稱
(參數1型別 參數1名稱, 參數2型別 參數2名稱, ⋯) { 方法內容程式區塊;
}
public int add(int a, int b) {
return a + b;
}
靜態成員 (1)
類別中的靜態成員不需要產生實體物件即可直 接存取引用
靜態成員必須使用 static 關鍵字進行宣告
引用靜態成員方式,直接使用類別名稱再利用
“.” 連接靜態成員名稱即可
main 就是一個靜態方法成員
47
靜態成員 (2)
語法
用法
說明
Main 方法為靜態成員,傳入值為一字串陣列,沒有回 傳值、存取限制為預設的 private
48
存取修飾詞 static 回傳值 方法名稱 (傳入參數) { 方法內容程式區塊;
}
static void Main(string[] args)
方法多載
方法多載允許我們將傳入參數不同的方法,定 義成相同的名稱
當我們在定義二數相加的方法時,藉由方法多 載可讓我們不需定義二個不同名稱的方法,以 區隔為二個整數相加或二個浮點數相加
49
Object型別
object 型別是所有參考型別的基礎,因此所有類 別都是直接或間接繼承自 object 型別
任何參考型別的值皆可指定至 object 型別
Boxing
將實值型別轉換成參考型別的動作稱為 boxing
UnBoxing
將物件的值轉換成實值型別的值的過程稱之為 UnBoxing
50
object o = (int) 1;
int i = (int) o;
ArrayList 和 List 類別 (1)
使用陣列時我們必須先設定好陣列的大小才可 以使用,相當不方便
ArrayList 和 List 屬於集合,集合大小會隨資料量 大小動態改變
陣列與集合比較
項目 陣列 List ArrayList
自動調整大小 是 否 否
儲存型別 相同 相同 不同
執行速度 快 快 慢
ArrayList 和 List 類別 (2)
命名空間
System.Collections;
常用屬性
Count–實際包含的元素個數
常用方法
Add–將物件加入至末端
Insert–將物件插入至指定位置
Remove–移除第一個符合指定物件的元素
Clear–清除所有元素
Sort–以遞增方式排序元素
Reverse–將元素次序反轉
52