第二章 資料 型態與變數宣告及運算

77
第第第 第第第第第第第第第第第第

description

第二章 資料 型態與變數宣告及運算. 本章學習目標. 讓 讀者瞭解 資料型態 、 變數 及 記憶體 之間的關係。 讓 讀者瞭解 變數 與 常數 之間的差異。 讓 讀者瞭解 數學運算 式 及 程式 語言運算 式 之差異及轉換方式。 讓 讀者瞭解變數在程式中的 生命週期 。. 本章內容. 2-1 資料 型態 2-2 變數 與 常數 2-3 資料 型態 轉換 2-4. VC # 註解的使用 2-5. 縮 排 2-6. 資料運算 2-7. 變數生命週期. 前言. - PowerPoint PPT Presentation

Transcript of 第二章 資料 型態與變數宣告及運算

Page 1: 第二章   資料 型態與變數宣告及運算

第二章 資料型態與變數宣告及運算

Page 2: 第二章   資料 型態與變數宣告及運算

本章學習目標

1. 讓讀者瞭解資料型態、變數及記憶體之間的關係。

2. 讓讀者瞭解變數與常數之間的差異。3. 讓讀者瞭解數學運算式及程式語言運算式之

差異及轉換方式。 4. 讓讀者瞭解變數在程式中的生命週期。

Page 3: 第二章   資料 型態與變數宣告及運算

本章內容

2-1 資料型態2-2 變數與常數2-3 資料型態轉換2-4. VC# 註解的使用2-5. 縮排2-6. 資料運算2-7. 變數生命週期

Page 4: 第二章   資料 型態與變數宣告及運算

前言

電腦的主記憶體並不是無窮大,因此在本章節中,將介紹變數的各種資料型態,及它們在主記憶體中所佔用的儲存空間大小。

讓讀者知道各種資料型態的變數在電腦裡的儲存方式及限制,唯有如此,才能夠更正確地運用它們。

Page 5: 第二章   資料 型態與變數宣告及運算

2-1 資料型態 在宣告之前必須先要了解資料的需求,亦即讓「小東西用

小盒子裝,大東西用大箱子裝」的有效利用空間之概念。

Page 6: 第二章   資料 型態與變數宣告及運算

2-1.1 數字類資料型態 (1/3)

「整數」可分為三種型態:短整數、整數及長整數。每一種型態的表示範圍皆不相同。因此必須特別注意一點,就是不同題目需求,可能就必須要宣告不同資料型態。

例如:計算一個 1 加到 10 求總和的程式,此時總和可以宣告為「短整數」型態,但如果現在又要計算一個 10!(1 乘到 10) 求總和的程式,如果總和又是宣告「短整數」型態,則程式一定會產生錯誤,因為 10! 求出的總和會超過 32767 的「短整數」表示範圍,此時就必須將 short( 「短整數」型態 ) 改成 int( 「整數」型態 ) 。情況如圖 2-2 所示:

Page 7: 第二章   資料 型態與變數宣告及運算

2-1.1 數字類資料型態 (2/3)

Page 8: 第二章   資料 型態與變數宣告及運算

2-1.1 數字類資料型態 (3/3)

Page 9: 第二章   資料 型態與變數宣告及運算

2-1.2 文字類資料型態 (1/5)

當撰寫程式時,要弄清楚那些變數是用來存放整數或字串資料,例如:每一位學生的學號、姓名…等都是字串資料,其變數一定要宣告為 string( 字串型態 ) ,如果宣告為 int 必然會產生錯誤。其詳細內容如表 2-2 所示。

Page 10: 第二章   資料 型態與變數宣告及運算

2-1.2 文字類資料型態 (2/5)

Page 11: 第二章   資料 型態與變數宣告及運算

2-1.2 文字類資料型態 (3/5)

以上三個輸入框都是文字型態,但如果要計算該學生的平均成績時,則必須要將國文及英文的文字框內容轉換成數字型態 (int.Parse 函數 ) 才可以計算。其程式撰寫如下所示:

Page 12: 第二章   資料 型態與變數宣告及運算

2-1.2 文字類資料型態 (4/5)

文字類資料型態中,如果要表示一個字元資料,要使用單引號( ' )將這個字元括起來,所以對於字母、數字、標點符號這些可顯示的字元,可方便地以單引號來使用它們,不過有些字元是非顯示的控制字元,例如 Backspace 、 Enter…… 等等,那麼要如何來表示?「跳逸控制字元( escape sequence )」。下表列出了常用的跳逸控制字元,如下表所示:

Page 13: 第二章   資料 型態與變數宣告及運算

2-1.2 文字類資料型態 (5/5)

Page 14: 第二章   資料 型態與變數宣告及運算

2-1.3 其他類資料型態 除了數字類與文字類資料型態之外,常見的資料型態還有二

種:分別為布林資料及物件資料。其詳細內容如表 2-3 所示。

Page 15: 第二章   資料 型態與變數宣告及運算

2-2 變數與常數 程式語言在資料處理時,通常把資料分成兩類:變

數 (Variable) 和常數 (Constant) 。 變數是指程式在執行過程中,可改變其值。而常數

則一直保持不變。例如 A=B+1 中 1 即是常數,而A 、 B 則是變數,也就是記憶體儲存 1 的位址,其內容固定無法改變,而儲存 A 和 B 的位址其內容是可改變的。

在 C# 語言中,使用變數時必須要事先宣告,並要設定初值,否則會產生錯誤訊息。雖然感覺似乎非常不方便,但是它有許多優點。詳細說明在 2-2.2宣告變數方法中。

Page 16: 第二章   資料 型態與變數宣告及運算

2-2.1 何謂變數 (Variable)(1/2)

「變數」是指資料儲存在主記憶體位址的名稱,其內容會隨著程式執行而改變。您可以將變數想像成一個容器,它是專門用來儲放資料的地方。而容器大小是由宣告時的資料型態來決定。

Page 17: 第二章   資料 型態與變數宣告及運算

2-2.1 何謂變數 (Variable)(2/2)

Page 18: 第二章   資料 型態與變數宣告及運算

2-2.2 宣告變數的方法 (1/4)

變數宣告目的就是用來向系統要求變數在輸入、處理及儲存資料時所須要的空間,亦即變數在宣告之後系統會自動配置適當的記憶體空間,來存放該型態資料。在VC# 2008 中每一個變數在使用之前一定要加以宣告,否則會產生「編譯錯誤」。如下圖所示:

Page 19: 第二章   資料 型態與變數宣告及運算

2-2.2 宣告變數的方法 (2/4)

Page 20: 第二章   資料 型態與變數宣告及運算

2-2.2 宣告變數的方法 (3/4)

Page 21: 第二章   資料 型態與變數宣告及運算

2-2.2 宣告變數的方法 (4/4)

Page 22: 第二章   資料 型態與變數宣告及運算

2-2.3 初值設定

Page 23: 第二章   資料 型態與變數宣告及運算

2-2.4 敘述

Page 24: 第二章   資料 型態與變數宣告及運算

2-2.5 變數的命名規則 (1/2)

Visual C# 變數的命名規則,在編寫程式時必須遵守,其規則如下:

1. 變數名稱不能以數字作為開頭。並且不可以有特殊符號 ( 如: ! , @ , # , $ ,% , * ……) 。如表 2-4 所示。。

2. 變數名稱不可以與 VC# 2008 的保留字相同。3. 變數名稱在同一個有效區域範圍內不可以重覆。4. 變數名稱必需要以英文字 (a~z 大小寫均可 )做開頭,

但大小寫將視為不同。5. 變數名稱可以是中文字,但建議不要使用。 ( 有時會

產生亂碼哦!請特別小心 )

Page 25: 第二章   資料 型態與變數宣告及運算

2-2.5 變數的命名規則 (2/2)

Page 26: 第二章   資料 型態與變數宣告及運算

2-2.6 一個好程式命名變數的方法

1. 在 VC# 2008 中變數名稱中的英文字母是有分大小寫。例如: TOTAL , Total 及 total 三者被視為三種不同的變數名稱。

2. 在 VC# 2008 中變數名稱的命名最好具有意義,並且與該程式有關係,唯有如此,才能提高程式 可 讀 性 , 以 利 爾 後 除 錯 。 例 如 :Stu_Name( 代表學生姓名 ) , Stu_No( 代表學生學號 )

3. 如果想不出變數名稱的英文字母時,最好在命名時,適時在變數之後加以註解。例如: int Start_X; // 宣告 X 的開始座標

Page 27: 第二章   資料 型態與變數宣告及運算

2-2.7 何謂常數 (Constant) (1/4)

在程式設計時,有些值會在程式中重複出現,並且其值也不會被改變,可以利用一個較有意義的名稱來取代這些不會被改變的數字或字串,稱為「常數」。亦即在整個程式執行中,不會改變內容的資料稱之。

一般而言,常數可分為兩種,分別為數字常數與字串常數:

.壹 數字常數

.貳 字串常數

Page 28: 第二章   資料 型態與變數宣告及運算

2-2.7 何謂常數 (Constant) (2/4)

一、數字常數假設已知有圓的半徑,而現在要計算圓面積與周長時,就必須要用到圓周率為 3.14 。因此撰寫程式就必須要在許多敘述中要輸入 3.14 。但是當想要更準確計算圓面積與周長時時,勢必要將圓周率 3.14 改為 3.141592 ,那就必須要逐行去檢查原來的 3.14 ,並改為 3.141592 。如此的作法容易產生錯誤,因為可以能某些敘述「輸入錯誤」或「未改到」。

Page 29: 第二章   資料 型態與變數宣告及運算

2-2.7 何謂常數 (Constant) (3/4)

Page 30: 第二章   資料 型態與變數宣告及運算

2-2.7 何謂常數 (Constant) (4/4)

二、字串常數在 Visual C# 中,字串常數前後必須使用雙引號「 " 」括起來。【例如】 const string MyName="李大同 "; const string MyID="A123456789";【優點】

減少程式錯誤機會。 讓程式更易於閱讀。 使程式較容易修正。

Page 31: 第二章   資料 型態與變數宣告及運算

2-3 資料型態轉換 在撰寫程式時,常常發現輸入的資料,經過處理之後卻產生與預期的輸出結果有點誤差。例如:輸入兩個成績 (60 與 61 分 ) ,在計算平均之後,卻輸出60 分,而不是 60.5 分。因此,如何解決此問題呢?那就必須要透過「資料型態轉換」的機制來完成。基本上,資料型態轉換可分為兩種:一、隱含轉換 (Implicit Conversion) :小轉大二、強制轉換 (Explicit Conversion) :大轉小

Page 32: 第二章   資料 型態與變數宣告及運算

2-3.1 隱含轉換 隱含轉換又稱為自動轉換,也就是將表示範圍較小的資料型態轉換成表示範圍較大的資料型態,由於此種轉換方式是由系統自動處理,所以不會出現錯誤訊息。優點:小轉大時,原始資料不會「失真」現象。

Page 33: 第二章   資料 型態與變數宣告及運算

2-3.2 強制轉換 (1/5)

「強制轉換」顧名思義就是將表示範圍較大的資料型態強制轉換成表示範圍較小的資料型態 ( 例如: doubleint) 或不同資料型態的轉換 ( 例如 intfloat) ,雖然 int 與 float所佔用記憶體相同,但也必須要透過強制轉換。

缺點:大轉小或不同型態轉換時,原始資料會可能會有「失真」現象。

使用方法:指定轉換。

Page 34: 第二章   資料 型態與變數宣告及運算

2-3.2 強制轉換 (2/5)

Page 35: 第二章   資料 型態與變數宣告及運算

2-3.2 強制轉換 (3/5)

Page 36: 第二章   資料 型態與變數宣告及運算

2-3.2 強制轉換 (4/5)

Page 37: 第二章   資料 型態與變數宣告及運算

2-3.2 強制轉換 (5/5)

Page 38: 第二章   資料 型態與變數宣告及運算

2-4. VC# 註解的使用 (1/3)

在辛辛苦苦開發一套資訊系統之後,一定使用了不少函數、變數及各種敘述,且程式複雜度也隨之增加。因此當下次要去維護時,有時會發現無法瞭解當時宣告變數或敘述所代表意義,也無法馬上了解該程式的目的。所以在撰寫程式時,應該適度註解,有助於日後程式維護。

何謂註解?它是一種「非執行的敘述」亦即是給人看的,而電腦不會去執行它。此功能就是用來說明某一段程式碼的作用與目的。

Page 39: 第二章   資料 型態與變數宣告及運算

2-4. VC# 註解的使用 (2/3)

Page 40: 第二章   資料 型態與變數宣告及運算

2-4. VC# 註解的使用 (3/3)

Page 41: 第二章   資料 型態與變數宣告及運算

2-5. 縮排 撰寫程式 C# 程式時,最基本撰寫技巧就是利用利用「縮

排」方式來編排程式碼,如此可以反應出程式碼邏輯和迴路架構。基本上,在使用巢狀結構時,必須特別需要。

優點:易於閱讀及除錯。

Page 42: 第二章   資料 型態與變數宣告及運算

2-6. 資料的運算 電腦處理資料的過程為:輸入 --- 處理 --- 輸出,其中「處理」程序通常

是藉由運 算 式 (Expression) 來完成 。 每 一 行 運 算 式 都 是由運 算 元(Operand) 與運算子 (Operator) 所組合而成的。例如: A=B+1 ,其中「 A,B,1 」稱為運算元,「 =,+ 」則稱為運算子。

一般而言,「運算元」都是變數或常數,而運算子則可分為四種:.壹 指定運算子.貳 算術運算子.參 關係運算子.肆 邏輯運算子

Page 43: 第二章   資料 型態與變數宣告及運算

2-6.1 指定運算子 (1/2)

一般初學者,在撰寫程式中遇到數學上的等號「=」時,都會有一些疑問,那就是何時才是真正的「等號」,何時才能當作「指定運算子」來使用。

基本上,在 VC# 2008 中等號「 = 」都是當作「指定運算子」來使用 (* 註 1) ,也就當我們在閱讀某一行運算式時,必須要從「 = 」指定運算子的右邊開始看,亦即將右邊運算式的結果指定給左邊運算元。例如:將變數 A 與 B 的值相加以後,指定給 Sum 變數,其程式如下:

Page 44: 第二章   資料 型態與變數宣告及運算

2-6.1 指定運算子 (2/2)

Page 45: 第二章   資料 型態與變數宣告及運算

2-6.2 算術運算子 (1/5)

在數學上有四則運算,而在程式語言中也不例外,其主要的目的就是用來處理使用者輸入的數值資料。在程式語言的算術運算式中,也是由數學運算式所構成的計算式。因此,在運算時也要注意到運算子的優先順序。如表 2-6 所示:

Page 46: 第二章   資料 型態與變數宣告及運算

2-6.2 算術運算子 (2/5)

Page 47: 第二章   資料 型態與變數宣告及運算

2-6.2 算術運算子 (3/5)

Page 48: 第二章   資料 型態與變數宣告及運算

2-6.2 算術運算子 (4/5)

Page 49: 第二章   資料 型態與變數宣告及運算

2-6.2 算術運算子 (5/5)

Page 50: 第二章   資料 型態與變數宣告及運算

2-6.3 關係運算子 (1/2)

關係運算子是一種比較大小的運算式 , 因此又稱「比較運算式」。

1. 使用時機:當在撰寫「選擇結構」時,會常用到「關係運算子」,其主要目的是用來判斷條件式是否成立。如果條件式成立,則會傳回 True(真 ) ,否則會傳回 False(假 )  。如表 2-7 所示:

Page 51: 第二章   資料 型態與變數宣告及運算

2-6.3 關係運算子 (2/2)

Page 52: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (1/6)

邏輯運算式是數學家布林 (Boolean) 所發展出來的,包括六種 邏 輯 , 分 別 是NOT (反)、 AND (且)、 OR (或) XOR (互斥或)…等,如表 2-8 所示。邏輯運算 (Logical Operation) 又稱為布林運算 (Boolean Operation) ,在 VC# 2008 中提供六種邏輯運算,其中以 And 及 Or最為常用。

Page 53: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (2/6)

Page 54: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (3/6)

說明 1 : &&(快速的 AND) 此功能與 &(AND) 相同,只是它可快速決定判斷式結果。例如: if((1>2)&&(1==2))電腦執行此行條件式時,當第一個運算式 ( 即 1>2)已經能夠決定整個條件式結果時,它就會忽略第二個運算式 ( 即 1==2) ,亦即當第一個運算式 (1>2) 為 False 時,就可以決定執行結果,所以就會忽第二個運算式 (1==2) 。

說明 2 : ||(快速的 OR) 此功能與 | (OR) 相同,只是它可以快速決定判斷式結果。例如: if((2>1)||(1==2))電腦執行此行條件式時,當第一個運算式 ( 即 1>2)已經能夠決定整個條件式結果時,它就會忽略第二個運算式 ( 即 1==2) ,亦即當第一個運算式 (2>1) 為 True 時,就可以決定執行的結果,所以就會忽第二個運算式 (1==2) 。

Page 55: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (4/6)

Page 56: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (5/6)

3. 實際用途 前面提過的 if敘述中的「條件式」均只做單一條件的判斷,稱為「簡單條件式」。如果有兩個以上的條件要一起考慮,則稱為「複合條件式」,此時就必須使用「邏輯運算」來配合運用。 例如: if敘述的應用 If(  國文 >=60  && 英文 >= 60)   MessageBox.Show("我兩科都及格了! ");

Page 57: 第二章   資料 型態與變數宣告及運算

2-6.4 邏輯運算子 (6/6)

Page 58: 第二章   資料 型態與變數宣告及運算

2-6.5 複合指定運算式 (1/3)

C# 語言的主要特性之一就是程式比較簡化,因此像 a=a+1 的運算式中, a 變數名稱重覆出現 2次,可以簡化為 a+=1 ,這對學過 C 語言的讀者而言,一定會覺得非常熟悉。雖然這種表示方式乍看之下似乎很詭異,但是讀者用久了就會很習慣而懶得再使用舊有的語法。如表 2-9 所示:

Page 59: 第二章   資料 型態與變數宣告及運算

2-6.5 複合指定運算式 (2/3)

Page 60: 第二章   資料 型態與變數宣告及運算

2-6.5 複合指定運算式 (3/3)

Page 61: 第二章   資料 型態與變數宣告及運算

2-6.6 位元 (Bit) 運算符號 (1/4)

所謂位元運算符號,其作用的大小是 bit ,而不是整個數值。因此在進行位元運算時,在電腦內部會先將數字轉成二進位後,再進行 運 算 , 而 位 元 運 算 符 號 有四種 , 分 別 為&(AND) 、 |(OR) 、 ^(XOR) 、 ~(取補數 ) 。

Page 62: 第二章   資料 型態與變數宣告及運算

2-6.6 位元 (Bit) 運算符號 (2/4)

.壹 &(AND) 的運算規則:當左右兩個運算元都為1 時,結果才會為 1 ,否則為 0 。.貳 |(OR) 的運算規則:左右兩個運算元之中,只要有一個為 1 時,結果才會為 1 ,否則為 0 。.參 ^(XOR) 的運算規則:當左右兩個運算元都不相同時,結果才會為 1 ,否則為 0 。.肆 ~(取補數 ) 的運算規則:只針對某一運算元,當此一運算元為 1 時,結果就會為 0 ,否則為1 。 亦即 1 變 0 , 0 變 1 的轉換規則。

Page 63: 第二章   資料 型態與變數宣告及運算

2-6.6 位元 (Bit) 運算符號 (3/4)

Page 64: 第二章   資料 型態與變數宣告及運算

2-6.6 位元 (Bit) 運算符號 (4/4)

【牛刀小試】請再完成下列三個題目的結果?1) 2 | 1 ==> 00000010 |000000 01 ==>

00000011 ==> 相當於 32) 2 ^ 3 ==> 00000010 ^ 00000011 ==>

00000001 ==> 相當於 13) ~2 ==> ~00000010 ==> 11111101

==> 相當於 -3

Page 65: 第二章   資料 型態與變數宣告及運算

2-6.7 移位運算子 (1/2)

Page 66: 第二章   資料 型態與變數宣告及運算

2-6.7 移位運算子 (2/2)

Page 67: 第二章   資料 型態與變數宣告及運算

2-6.8 字串連結運算子 (1/2)

Page 68: 第二章   資料 型態與變數宣告及運算

2-6.8 字串連結運算子 (2/2)

Page 69: 第二章   資料 型態與變數宣告及運算

C# 語言的運算子與優先順序

Page 70: 第二章   資料 型態與變數宣告及運算

2-7 變數的生命週期

在 VC# 程式語言中,在撰寫程式時,所需要的變數,都必須要完成宣告動作。而每一個變數在被宣告之後,都會有自己的生命週期(scope) 。亦即,變數存在的有效範圍。基本上,變數依照它的有效範圍,可以區分為兩種:區域性變數 (local variable) 與全域性變數 (global variable) 。

Page 71: 第二章   資料 型態與變數宣告及運算

2-7.1 區域性變數 (1/2)

Page 72: 第二章   資料 型態與變數宣告及運算

2-7.1 區域性變數 (2/2)

Page 73: 第二章   資料 型態與變數宣告及運算

2-7.2 全域性變數 (1/5)

當專案程式只有一個表單而沒有『一般模組』時,此表單的『表單模組』所宣告的常數及變數就是全域性變數,反之,當專案程式有二個或二個以上的表單時,在表單的「表單模組」上所宣告的常數及變數就不能稱為全域性變數,因為「表單模組」所宣告的常數及變數只是適用於該表單,而不能讓二個或二個以上表單同時使用

所以就必須建立一個「一般模組」來宣告全域性變數。在『一般模組』中所宣告的變數如果要提供整個專案程式中所有的表單都可以使用時,則必須要利用 Public( 公用 ) 關鍵字加在變數之前,但是在『一般模組』中所宣告的變數也不一定都要宣告為 Public ,如果不要提供給其他表單使用,則可以利用 Private(私用 ) 關鍵字加在變數之前,那就是所謂的區域性的變數了。

Page 74: 第二章   資料 型態與變數宣告及運算

2-7.2 全域性變數 (2/5)

Page 75: 第二章   資料 型態與變數宣告及運算

2-7.2 全域性變數 (3/5)

Page 76: 第二章   資料 型態與變數宣告及運算

2-7.2 全域性變數 (4/5)

Page 77: 第二章   資料 型態與變數宣告及運算

2-7.2 全域性變數 (5/5)