Download presentation
Presentation is loading. Please wait.
1
第二章 資料型別與主控台應用程式輸出入 資訊教育研究室 編著 注意: 本投影片僅供上課使用,非經同意,請勿散播或轉載。
2
章節大綱 2.1 程式的構成要素 2.4 運算子與運算式 2.2 常值與變數 2.5 主控台應用程式輸出入方法
2.3 如何宣告變數的資料型別 2.6 Escape sequence 控制字元 備註:可依進度點選小節
3
2.1 程式的構成要素 2.1.1 識別項 每個人一出生都需要取個名字來加以識別
在程式中所使用的變數、陣列、結構、函式、類別、 介面和列舉型別等,也都需賦予名稱,以方便在程式 中識別 名稱命名都需遵行識別項的命名規則。
4
識別項的命名規則: 第一個字元需 Unicode 的大小寫字母、底線 _ 字元 或中文字開頭,接在後面的字元可以是字母、數字 或底線 _ 或中文字。中間不允許有空白出現。 合法識別項:_pagecount、Part9、僑大_Number 無效識別項:101Metro(數字開頭),M WR(空白字元) 可當識別項。 如 if 當識別項。 大小寫視為不同 如 tobe 和 ToBe 視為不同。
5
2.1.3 關鍵字 (KeyWord) 所謂「關鍵字」或稱保留字(Reserve Word),是對編譯器有特殊意義而預先定義的保留識別項。
在撰寫 VC# 2010 程式時,若陳述式中有些字串以藍色字顯現,表示這些識別項就是 VC# 2010的關鍵字。
7
2.1.2 陳述式 (Statement) 程式(program) 由一行一行的陳述式所構成。
陳述式或稱敘述是高階語言所撰寫程式中最小可執行單位。 VC# 2010中每行敘述結尾是以「;」分號做區分 允許將多行敘述寫成一行,中間使用分號隔開即可,但為使程式方便閱讀建議不宜使用。 Console.WriteLine(“Hello”) ; Console.Read() ; Console.WriteLine(“Hello”) ; Console.Read() ;
8
2.2 常數與變數 電腦主要是用來處理資料。 依程式執行時資料是否具有變動性,將資料分成 常數(Constant) 變數(Variable) 例如:X = Y + 10 ; 10 是常數:記憶體儲存10的位址,其內容固定無法改變 X、Y 是變數: 儲存 X 和 Y 的位址,內容是可改變。
9
2.2.1 常數 (Constant) 常數是程式執行過程中其值是固定無法改變。
將常數細分成: 常值常數 (Literal Constant) 程式中直接以特定值的文數字型態存在於程式碼中 稱為「常值常數」。 15、”Price” 符號常數 (Symbolic Constant)
10
一、常值常數 程式中直接以特定值的文字、數字型態,存在於程式碼中稱為「常值常數」。 C# 允許使用的常值常數型別有:
11
二. 符號常數 符號常數是以有意義名稱,來取代程式中不會改變的 數字或字串。 例如:圓周率為3.1416,可用PI符號常數代表
符號常數在程式中經宣告後,應用程式執行過程中維持不變的值,無法修改或指派新的值。 符號常數是用 const 關鍵字及運算式來宣告並設定初值。
12
符號常數宣告方式:
13
舉例說明: const int DaysInYear=365; const double PI=3.1416; (圓面積 Area = PI*R2) const string SchoolName=“僑先部" ; 多個符號常數一起宣告 const int four = 4, five=5;
14
2.2.2 變數 (Variable) 一個變數代表一個特定資料項目或值,並在記憶體預留一個位置(位址)來儲存該資料內容。
程式執行時碰到變數,會到該變數位址,取出該值加以運算。 使用變數前必須先宣告 變數和常數不一樣,程式執行過程中常數的值是固定不變,而變數允許重複指定不同的值。
15
變數的種類
16
2.3 如何宣告變數的資料型別 程式中使用的變數,必須事先經過宣告 經宣告過變數,可知道該資料的資料型別
程式在編譯時,便可保留適當的記憶體空間給該資料使用。 宣告變數的資料型別,語法: 資料型別 變數名稱 ; int X ;(宣告X是整數變數)
17
VC# 2010允許使用下表的資料型別來宣告變數:
有符號 (signed) 無符號 (unsigned)
19
string a=“NUPS” ;
21
宣告變數時能在同一行敘述中同時宣告多個變數, 各變數間使用逗號隔開。
如:同時宣告 a 和 b 是整數變數。寫法: int a , b ; 宣告變數時亦允許同時對變數初始化(設定初值), 寫法: 資料型別 變數名稱1=初值1, 變數名稱2=初值2, …;
22
[例1] 宣告 a 是一個整數變數且初值為10。寫法: int a=10;
[例2] 宣告 a 是一個整數變數且初值為10; 宣告 b 為布林變數且初值為 false。寫法: int a =10 ; bool b =false; [例3] 宣告 a, b, c 是倍精確度變數,初值依序1.1, 2.2, 寫法: double a=1.1, b=2.2, c=3.3;
23
結論 變數宣告 Double Pi = 3.1416; 常數宣告 Const Double Pi = 3.1416;
24
Take a Break ….
25
2.4 運算子與運算式 2.4.1 運算子(Operator) 與運算元(Operand) 運算子是指運算的符號
如四則運算的+、-、×、÷、…。 運算式(Expression):就是由運算子和運算元組合而成的。 例如: price * 0.05 (*為乘法運算子,price及0.05為運算元)
26
若運算子按照特性分類分成六大類: 算術運算子 指定(複合)運算子 關係運算子 邏輯運算子 合併運算子 移位運算子
27
2.4.2 算術運算子
28
2.4.3 關係運算子 經過比較後得到 true(真) 或 false(假)。 false true
29
2.4.4 邏輯運算子 一個關係運算式就是一個條件。 當有多個關係式要一起判斷時需用到邏輯運算子來連結。
VC# 2010所提供的邏輯運算子如下: and 邏輯運算子(且; A/B全部 true, 才是 true) 1 1 1 假設score=65 false 例 70 < score 79 條件式: (score > 70) && (score<=79);
30
or 邏輯運算子(或; A/B一個 true, 就是 true)
[例] score<0 或score 100 條件式寫法: (score<0) || (score>=100) 1 1 1 假設score = -50 true
31
3. xor邏輯運算子 (互斥; A/B相同是 false, 不同是true)
1 1 1 4. not 邏輯運算子 1 1
32
2.4.6 合併運算子 + 符號除可當加法運算子外,也可用來合併字串。
若 + 運算子前後的運算元都是 數值資料 ,會視為加法運算處理,其結果為數值。 字串資料,視為合併運算子,將兩個運算元前後合併 成一個字串。 例如: int a ; //宣告整數變數 string myStr ; //宣告字串變數 a = ; //加法運算 myStr = “To be ” + “Or Not to be”; //合併運算 (結果:a = 50 / myStr=“To be Or Not to be”)
33
千 百 十 個 2468 =2* * * *100 十進位運算 千 百 十 個 23 22 21 20 1010 =1*23 + 0*22 + 1*21 + 0*20 (10) 人的手指、腳指各十隻。 電腦數位系統0及1(沒電/有電)。 二進位運算
34
十進位 二進位 二進位轉成十進位 十進位 1 1 1*20 2 10 1*21 + 0*20 3 11 1*21 + 1*20 4 100
1 1 1*20 2 10 1*21 + 0*20 3 11 1*21 + 1*20 4 100 1*22 + 0*21 + 0*20 5 101 1*22 + 0*21 + 1*20 6 110 1*22 + 1*21 + 0*20 7 111 1*22 + 1*21 + 1*20 8 1000 1*23 + 0*22 + 0*21 + 0*20 9 1001 1*23 + 0*22 + 0*21 + 1*20 10 1010 1*23 + 0*22 + 1*21 + 0*20 十進位 11 91 12 92 13 93 14 94 15 95 16 96 17 97 18 98 19 99 20 100
35
大學重要計概考題 & 0 1 0 ---------- 0 0 0 | 0 1 0 ---------- 1 1 1 ^ 0 1 1
5&2=? 5|2=? 5 ^ 3=? 5>>1=? 5<<1=? 邏輯運算:and(&)、or (|)、xor(^) 移位運算: >>(右移)、<< (左移) 0 1 0 1 & 0 0 0 1 0 1 | 1 1 1 1 0 1 ^ 1 1 0 7 6 7 1*22 + 1*21 + 1*20
36
2.4.5 指定運算子 1 0 1 ^ 1 1 1 7 1*22 + 1*21 + 1*20
37
1 0 1 & 0 0 0 1 0 1 | 1 1 1
38
2.4.7 移位運算子 移位運算子用在數值資料。 對二進制正整數或帶小數整數。 該數值往左移一個位元,即將該數值乘2。 若往右移一個位元,即該數值除以2。 可用移位運算子: << :左移運算子 >> :右移運算子
39
移位運算子-例子 10 >> 1 = ? 10 << 2 = ? 1010 = 10102
= = (右移一位) 10 << 2 = ? = = (左移兩位) 101 1*22 + 0*21 +1*20 101000 1*25 + 0*24 +1*23 + 0*22 + 0*21 + 0*20
40
大學重要計概考題 1 0 1 1 0 1 0 1 1 0 1 0 5&2=? 5|2=? 5 ^ 3=? 5>>1=?
5<<1=? 邏輯運算:and(&)、or (|)、xor(^) 移位運算: >>(右移)、<< (左移) 1 0 1 1 0 2 10 1*23 + 0*22 +1*21 + 0*20 10 1 0 1
41
如何寫程式作運算-例子 & 0 1 1 ---------- 0 0 1
1 0 1 & 0 0 1 如何寫程式作運算-例子 int a=5, b=3; Console.WriteLine(a & b); Console.WriteLine(5 ^ 3); Console.WriteLine(a << 2); Console.WriteLine(20 >> 1); Console.Read(); 6 1*22 + 1*21 + 0*20 1 0 1 ^ 1 1 0 1 6 20 10
42
The End
43
大學重要計概考題 & 0 1 0 ---------- 0 0 0 | 0 1 0 ---------- 1 1 1 ^ 0 1 1
5&2=? 5|2=? 5 ^ 3=? 5>>1=? 5<<1=? 邏輯運算:and(&)、or (|)、xor(^) 移位運算: >>(右移)、<< (左移) 0 1 0 1 & 0 0 0 1 0 1 | 1 1 1 1 0 1 ^ 1 1 0 7 6 7 1*22 + 1*21 + 1*20 1 0 1 1 0 2 10 1*23 + 0*20 +1*22 + 0*20 10 1 0 1
44
2.4.8 運算子優先順序和順序關聯性 如運算式 x + y * z 的評估方式是 x + (y * z)
因為 * 運算子的運算次序比 + 運算子高。 一般原則:先乘除,後加減;由左至右
45
下表由高至低列出各運算子優先執行順序;同列內運算子 具有相同優先順序,且依表中第三欄指定方向進行運算:
下表由高至低列出各運算子優先執行順序;同列內運算子 具有相同優先順序,且依表中第三欄指定方向進行運算:
46
The End
47
2.5 主控台應用程式輸出入方法 Console是系統命名空間(NameSpace)內所定義的類別(Class)之一。
如: Read 或 ReadLine 方法提供由鍵盤輸入字元。 Write 或 WriteLine 方法將資料顯示在螢幕上。
48
2.5.1 Write / WriteLine 方法 一. Console.Write() 方法
顯示:光陰的故事_
49
如果輸出的字串中間要插入指定的變數或 運算式的內容。
譬如:假設單價price整數變數值為120, 數量為常數常值50,欲在目前游標處顯示 “單價: 數量:50” 寫法:
50
寫出輸出結果如下的程式碼
51
二. Console.WriteLine() 方法
53
2.5.2 Read / ReadLine 方法 一. Console.Read() 方法
從標準輸入裝置(鍵盤)讀取一個字元, 不等待按 鍵便直接讀取。 使用時機是當需按任意鍵繼續時或只允許 需輸入一個字元時使用。 可將輸入字元放入 char 資料型別所宣告 字元變數。
54
二. Console.ReadLine() 方法
從標準輸入裝置(鍵盤)讀取一整行字元, 一直到按 鍵為止。 使用時機是當需要輸入字串時用,可將輸入 字串放入 string 資料型別宣告的字串變數。 Console.ReadLine() 方法傳入的資料是屬string 型別,若使用 ConsoleReadLine()方法將傳入 的字串資料指定給整數變數時,需用 int.Parse() 或 Convert.ToInt32()方法將字串轉成整數。 int.Parse()-將字串轉成整數integer資料(參考附錄A-5) Convert.ToInt32-將字串轉成32位元整數(參考Page2-8)
55
本週作業(Page 2-22~23)
56
FileName : readline1.sln
static void Main(string[] args) { string str1; int price, qty; Console.WriteLine(); Console.WriteLine(" 博碩電腦圖書廣場"); Console.WriteLine("======================"); Console.Write(" 1. 書名:"); str1 = Console.ReadLine(); // 輸入書名並指定給str1變數 Console.Write(" 2. 售價:"); price = int.Parse(Console.ReadLine()); // 售價轉成整數,再指定給price Console.Write(" 3. 數量:"); qty = Convert.ToInt32(Console.ReadLine()); // 數量轉成整數,指定給qty Console.WriteLine("======================"); Console.WriteLine(" 4. 金額:{0}", price * qty); Console.Read(); }
57
2.6 Escape sequence 控制字元 在 C# 中若欲印出「’」單引號、「”」雙引號 或「\」倒斜線等符號,需用逸出序列來達成。
當編譯器遇到這些逸出字元時,將使得接在 倒斜線字元 (\) 後的字元,被當成某種特殊 意義的符號來處理。
58
[簡例] Console. WriteLine("\"烏龍派出所\"");. //印出 "烏龍派出所" Console
[簡例] Console.WriteLine("\"烏龍派出所\""); //印出 "烏龍派出所" Console.WriteLine("Jack\'s Wang"); //印出 Jack's Wang Console.WriteLine("Why 1\\2"); // Why 1\2
59
作業 練習把readline1程式,略作修改後(參考Page Mail主旨(主題 ,Subject):學號
60
The End
Similar presentations