770 likes | 837 Vues
第二章 資料 型態與變數宣告及運算. 本章學習目標. 讓 讀者瞭解 資料型態 、 變數 及 記憶體 之間的關係。 讓 讀者瞭解 變數 與 常數 之間的差異。 讓 讀者瞭解 數學運算 式 及 程式 語言運算 式 之差異及轉換方式。 讓 讀者瞭解變數在程式中的 生命週期 。. 本章內容. 2-1 資料 型態 2-2 變數 與 常數 2-3 資料 型態 轉換 2-4. VC # 註解的使用 2-5. 縮 排 2-6. 資料運算 2-7. 變數生命週期. 前言.
E N D
本章學習目標 • 讓讀者瞭解資料型態、變數及記憶體之間的關係。 • 讓讀者瞭解變數與常數之間的差異。 • 讓讀者瞭解數學運算式及程式語言運算式之差異及轉換方式。 • 讓讀者瞭解變數在程式中的生命週期。
本章內容 2-1 資料型態 2-2 變數與常數 2-3 資料型態轉換 2-4. VC#註解的使用 2-5. 縮排 2-6. 資料運算 2-7. 變數生命週期
前言 • 電腦的主記憶體並不是無窮大,因此在本章節中,將介紹變數的各種資料型態,及它們在主記憶體中所佔用的儲存空間大小。 • 讓讀者知道各種資料型態的變數在電腦裡的儲存方式及限制,唯有如此,才能夠更正確地運用它們。
2-1 資料型態 • 在宣告之前必須先要了解資料的需求,亦即讓「小東西用小盒子裝,大東西用大箱子裝」的有效利用空間之概念。
2-1.1數字類資料型態(1/3) • 「整數」可分為三種型態:短整數、整數及長整數。每一種型態的表示範圍皆不相同。因此必須特別注意一點,就是不同題目需求,可能就必須要宣告不同資料型態。 • 例如:計算一個1加到10求總和的程式,此時總和可以宣告為「短整數」型態,但如果現在又要計算一個10!(1乘到10)求總和的程式,如果總和又是宣告「短整數」型態,則程式一定會產生錯誤,因為10!求出的總和會超過32767的「短整數」表示範圍,此時就必須將short(「短整數」型態)改成int(「整數」型態)。情況如圖2-2所示:
2-1.2文字類資料型態(1/5) • 當撰寫程式時,要弄清楚那些變數是用來存放整數或字串資料,例如:每一位學生的學號、姓名…等都是字串資料,其變數一定要宣告為string(字串型態),如果宣告為int必然會產生錯誤。其詳細內容如表2-2所示。
2-1.2文字類資料型態(3/5) • 以上三個輸入框都是文字型態,但如果要計算該學生的平均成績時,則必須要將國文及英文的文字框內容轉換成數字型態(int.Parse函數)才可以計算。其程式撰寫如下所示:
2-1.2文字類資料型態(4/5) • 文字類資料型態中,如果要表示一個字元資料,要使用單引號(')將這個字元括起來,所以對於字母、數字、標點符號這些可顯示的字元,可方便地以單引號來使用它們,不過有些字元是非顯示的控制字元,例如Backspace、Enter……等等,那麼要如何來表示?「跳逸控制字元(escape sequence)」。下表列出了常用的跳逸控制字元,如下表所示:
2-1.3 其他類資料型態 • 除了數字類與文字類資料型態之外,常見的資料型態還有二種:分別為布林資料及物件資料。其詳細內容如表2-3所示。
2-2 變數與常數 • 程式語言在資料處理時,通常把資料分成兩類:變數 (Variable)和常數 (Constant)。 • 變數是指程式在執行過程中,可改變其值。而常數則一直保持不變。例如A=B+1中1即是常數,而A、B則是變數,也就是記憶體儲存1的位址,其內容固定無法改變,而儲存A和B的位址其內容是可改變的。 • 在C#語言中,使用變數時必須要事先宣告,並要設定初值,否則會產生錯誤訊息。雖然感覺似乎非常不方便,但是它有許多優點。詳細說明在2-2.2宣告變數方法中。
2-2.1何謂變數(Variable)(1/2) • 「變數」是指資料儲存在主記憶體位址的名稱,其內容會隨著程式執行而改變。您可以將變數想像成一個容器,它是專門用來儲放資料的地方。而容器大小是由宣告時的資料型態來決定。
2-2.2 宣告變數的方法(1/4) • 變數宣告目的就是用來向系統要求變數在輸入、處理及儲存資料時所須要的空間,亦即變數在宣告之後系統會自動配置適當的記憶體空間,來存放該型態資料。在VC# 2008中每一個變數在使用之前一定要加以宣告,否則會產生「編譯錯誤」。如下圖所示:
2-2.5 變數的命名規則(1/2) • Visual C#變數的命名規則,在編寫程式時必須遵守,其規則如下: • 變數名稱不能以數字作為開頭。並且不可以有特殊符號(如:! , @ , # , $ ,% , * ……)。如表2-4所示。。 • 變數名稱不可以與VC# 2008的保留字相同。 • 變數名稱在同一個有效區域範圍內不可以重覆。 • 變數名稱必需要以英文字(a~z大小寫均可)做開頭,但大小寫將視為不同。 • 變數名稱可以是中文字,但建議不要使用。(有時會產生亂碼哦!請特別小心)
2-2.6 一個好程式命名變數的方法 • 在VC# 2008中變數名稱中的英文字母是有分大小寫。例如:TOTAL , Total及total三者被視為三種不同的變數名稱。 • 在VC# 2008中變數名稱的命名最好具有意義,並且與該程式有關係,唯有如此,才能提高程式可讀性,以利爾後除錯。例如:Stu_Name(代表學生姓名),Stu_No(代表學生學號) • 如果想不出變數名稱的英文字母時,最好在命名時,適時在變數之後加以註解。例如:intStart_X; //宣告X的開始座標
2-2.7 何謂常數(Constant) (1/4) • 在程式設計時,有些值會在程式中重複出現,並且其值也不會被改變,可以利用一個較有意義的名稱來取代這些不會被改變的數字或字串,稱為「常數」。亦即在整個程式執行中,不會改變內容的資料稱之。 • 一般而言,常數可分為兩種,分別為數字常數與字串常數: • 數字常數 • 字串常數
2-2.7 何謂常數(Constant) (2/4) • 一、數字常數 假設已知有圓的半徑,而現在要計算圓面積與周長時,就必須要用到圓周率為3.14。因此撰寫程式就必須要在許多敘述中要輸入3.14。但是當想要更準確計算圓面積與周長時時,勢必要將圓周率3.14改為3.141592,那就必須要逐行去檢查原來的3.14,並改為3.141592。如此的作法容易產生錯誤,因為可以能某些敘述「輸入錯誤」或「未改到」。
2-2.7 何謂常數(Constant) (4/4) 二、字串常數 在Visual C#中,字串常數前後必須使用雙引號「"」括起來。 【例如】const string MyName="李大同"; const string MyID="A123456789"; 【優點】 • 減少程式錯誤機會。 • 讓程式更易於閱讀。 • 使程式較容易修正。
2-3 資料型態轉換 • 在撰寫程式時,常常發現輸入的資料,經過處理之後卻產生與預期的輸出結果有點誤差。例如:輸入兩個成績(60與61分),在計算平均之後,卻輸出60分,而不是60.5分。因此,如何解決此問題呢?那就必須要透過「資料型態轉換」的機制來完成。基本上,資料型態轉換可分為兩種: 一、隱含轉換(Implicit Conversion):小轉大 二、強制轉換(Explicit Conversion):大轉小
2-3.1隱含轉換 • 隱含轉換又稱為自動轉換,也就是將表示範圍較小的資料型態轉換成表示範圍較大的資料型態,由於此種轉換方式是由系統自動處理,所以不會出現錯誤訊息。優點:小轉大時,原始資料不會「失真」現象。
2-3.2 強制轉換(1/5) • 「強制轉換」顧名思義就是將表示範圍較大的資料型態強制轉換成表示範圍較小的資料型態(例如:doubleint)或不同資料型態的轉換(例如intfloat),雖然int與float所佔用記憶體相同,但也必須要透過強制轉換。 • 缺點:大轉小或不同型態轉換時,原始資料會可能會有「失真」現象。 • 使用方法:指定轉換。
2-4. VC#註解的使用(1/3) • 在辛辛苦苦開發一套資訊系統之後,一定使用了不少函數、變數及各種敘述,且程式複雜度也隨之增加。因此當下次要去維護時,有時會發現無法瞭解當時宣告變數或敘述所代表意義,也無法馬上了解該程式的目的。所以在撰寫程式時,應該適度註解,有助於日後程式維護。 • 何謂註解?它是一種「非執行的敘述」亦即是給人看的,而電腦不會去執行它。此功能就是用來說明某一段程式碼的作用與目的。
2-5. 縮排 • 撰寫程式C#程式時,最基本撰寫技巧就是利用利用「縮排」方式來編排程式碼,如此可以反應出程式碼邏輯和迴路架構。基本上,在使用巢狀結構時,必須特別需要。 • 優點:易於閱讀及除錯。
2-6. 資料的運算 • 電腦處理資料的過程為:輸入---處理---輸出,其中「處理」程序通常是藉由運算式(Expression)來完成。每一行運算式都是由運算元(Operand)與運算子(Operator)所組合而成的。例如:A=B+1,其中「A,B,1」稱為運算元,「=,+」則稱為運算子。 • 一般而言,「運算元」都是變數或常數,而運算子則可分為四種: • 指定運算子 • 算術運算子 • 關係運算子 • 邏輯運算子
2-6.1 指定運算子 (1/2) • 一般初學者,在撰寫程式中遇到數學上的等號「=」時,都會有一些疑問,那就是何時才是真正的「等號」,何時才能當作「指定運算子」來使用。 • 基本上,在VC# 2008中等號「=」都是當作「指定運算子」來使用(*註1),也就當我們在閱讀某一行運算式時,必須要從「=」指定運算子的右邊開始看,亦即將右邊運算式的結果指定給左邊運算元。例如:將變數A與B的值相加以後,指定給Sum變數,其程式如下:
2-6.2 算術運算子(1/5) • 在數學上有四則運算,而在程式語言中也不例外,其主要的目的就是用來處理使用者輸入的數值資料。在程式語言的算術運算式中,也是由數學運算式所構成的計算式。因此,在運算時也要注意到運算子的優先順序。如表2-6所示:
2-6.3 關係運算子 (1/2) • 關係運算子是一種比較大小的運算式 , 因此又稱「比較運算式」。 • 1.使用時機:當在撰寫「選擇結構」時,會常用到「關係運算子」,其主要目的是用來判斷條件式是否成立。如果條件式成立,則會傳回True(真),否則會傳回False(假) 。如表2-7所示: