第二章 資料型別與主控台應用程式輸出入 資訊教育研究室 編著 注意: 本投影片僅供上課使用,非經同意,請勿散播或轉載。

Slides:



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

物件導向語言基礎 Chapter 4 認知 學完本章應了解何謂常數、變數。 了解有哪些運算式、運算子和基本輸入、輸出指令。
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
CH02 組成敍述的要素 授課教師:王大瑾 視窗程式設計.
資料結構使用Java 第1章 資料結構與Java程式複習.
Visual C# 劉俊琅老師 課本:Visual C# 2010 從零開始 博碩文化出版發行.
Chapter 5 迴圈.
C#.
Chapter 3 輸出入及宣告.
第3章 變數與運算子 3-1 電腦記憶體的基礎 3-2 變數的命名與宣告 3-3 VB.NET的資料型別
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
2-3 基本數位邏輯處理※.
Chen Yi Fen The C Language Chen Yi Fen
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
保留字與識別字.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
Java程式概觀.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
Java 程式設計 講師:FrankLin.
Chap3 Linked List 鏈結串列.
程式設計 博碩文化出版發行.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
第三章 C# 基础知识.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第5章 變數、常數與資料型態 [我的主控台程式]
雲端計算.
Instructor:Po-Yu Kuo 教師:郭柏佑
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
ASP基礎— VBScript基本語法 張森.
Chapter 2 基本語法.
CH05. 選擇敘述.
大綱:加減法的化簡 乘除法的化簡 去括號法則 蘇奕君 台灣數位學習科技股份有限公司
挑戰C++程式語言 ──第8章 進一步談字元與字串
|第 2 章 變數與資料型態.
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
函數應用(二)與自定函數.
陣列與結構.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
簡單Java介紹.
1-1 二元一次式運算.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
博碩書號:PG20266 變數 第3章 博碩文化出版發行.
資料表示方法 資料儲存單位.
計算機程式設計 老師:謝孟諺 助教:楊斯竣.
作業系統實習課(二) -Scheduler-Related System Calls-
Programming & Language Telling the computer what to do
變數、常數與資料型態 大綱 變數與常數 變數 資料型別 資料的輸出.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Unix指令4-文字編輯與程式撰寫.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

第二章 資料型別與主控台應用程式輸出入 資訊教育研究室 編著 注意: 本投影片僅供上課使用,非經同意,請勿散播或轉載。

章節大綱 2.1 程式的構成要素 2.4 運算子與運算式 2.2 常值與變數 2.5 主控台應用程式輸出入方法 2.3 如何宣告變數的資料型別 2.6 Escape sequence 控制字元 備註:可依進度點選小節

2.1 程式的構成要素 2.1.1 識別項 每個人一出生都需要取個名字來加以識別 在程式中所使用的變數、陣列、結構、函式、類別、 介面和列舉型別等,也都需賦予名稱,以方便在程式 中識別 名稱命名都需遵行識別項的命名規則。

識別項的命名規則: 第一個字元需 Unicode 的大小寫字母、底線 _ 字元 或中文字開頭,接在後面的字元可以是字母、數字 或底線 _ 或中文字。中間不允許有空白出現。 合法識別項:_pagecount、Part9、僑大_Number 無效識別項:101Metro(數字開頭),M WR(空白字元) 關鍵字是不允許當作識別項,關鍵字前加前置字元@ 可當識別項。 如 if 為關鍵字, @if 當識別項。 大小寫視為不同 如 tobe 和 ToBe 視為不同。

2.1.3 關鍵字 (KeyWord) 所謂「關鍵字」或稱保留字(Reserve Word),是對編譯器有特殊意義而預先定義的保留識別項。 在撰寫 VC# 2010 程式時,若陳述式中有些字串以藍色字顯現,表示這些識別項就是 VC# 2010的關鍵字。

2.1.2 陳述式 (Statement) 程式(program) 由一行一行的陳述式所構成。 陳述式或稱敘述是高階語言所撰寫程式中最小可執行單位。 VC# 2010中每行敘述結尾是以「;」分號做區分 允許將多行敘述寫成一行,中間使用分號隔開即可,但為使程式方便閱讀建議不宜使用。 Console.WriteLine(“Hello”) ; Console.Read() ; Console.WriteLine(“Hello”) ; Console.Read() ;

2.2 常數與變數 電腦主要是用來處理資料。 依程式執行時資料是否具有變動性,將資料分成  常數(Constant)  變數(Variable) 例如:X = Y + 10 ;    10 是常數:記憶體儲存10的位址,其內容固定無法改變         X、Y 是變數: 儲存 X 和 Y 的位址,內容是可改變。

2.2.1 常數 (Constant) 常數是程式執行過程中其值是固定無法改變。 將常數細分成:  常值常數 (Literal Constant) 程式中直接以特定值的文數字型態存在於程式碼中 稱為「常值常數」。 15、”Price”   符號常數 (Symbolic Constant)

一、常值常數 程式中直接以特定值的文字、數字型態,存在於程式碼中稱為「常值常數」。 C# 允許使用的常值常數型別有:

二. 符號常數 符號常數是以有意義名稱,來取代程式中不會改變的 數字或字串。 例如:圓周率為3.1416,可用PI符號常數代表 符號常數在程式中經宣告後,應用程式執行過程中維持不變的值,無法修改或指派新的值。 符號常數是用 const 關鍵字及運算式來宣告並設定初值。

符號常數宣告方式:

舉例說明: const int DaysInYear=365; const double PI=3.1416; (圓面積 Area = PI*R2) const string SchoolName=“僑先部" ; 多個符號常數一起宣告 const int four = 4, five=5;

2.2.2 變數 (Variable) 一個變數代表一個特定資料項目或值,並在記憶體預留一個位置(位址)來儲存該資料內容。 程式執行時碰到變數,會到該變數位址,取出該值加以運算。 使用變數前必須先宣告 變數和常數不一樣,程式執行過程中常數的值是固定不變,而變數允許重複指定不同的值。

變數的種類

2.3 如何宣告變數的資料型別 程式中使用的變數,必須事先經過宣告 經宣告過變數,可知道該資料的資料型別 程式在編譯時,便可保留適當的記憶體空間給該資料使用。 宣告變數的資料型別,語法: 資料型別 變數名稱 ; int X ;(宣告X是整數變數)

VC# 2010允許使用下表的資料型別來宣告變數: 有符號 (signed) 無符號 (unsigned)

string a=“NUPS” ;

宣告變數時能在同一行敘述中同時宣告多個變數, 各變數間使用逗號隔開。 如:同時宣告 a 和 b 是整數變數。寫法: int a , b ; 宣告變數時亦允許同時對變數初始化(設定初值), 寫法: 資料型別 變數名稱1=初值1, 變數名稱2=初值2, …;

[例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, 3.3 寫法: double a=1.1, b=2.2, c=3.3;

結論 變數宣告 Double Pi = 3.1416; 常數宣告 Const Double Pi = 3.1416;

Take a Break ….

2.4 運算子與運算式 2.4.1 運算子(Operator) 與運算元(Operand) 運算子是指運算的符號 如四則運算的+、-、×、÷、…。 運算式(Expression):就是由運算子和運算元組合而成的。 例如: price * 0.05     (*為乘法運算子,price及0.05為運算元)

若運算子按照特性分類分成六大類: 算術運算子 指定(複合)運算子 關係運算子 邏輯運算子 合併運算子 移位運算子

2.4.2 算術運算子

2.4.3 關係運算子 經過比較後得到 true(真) 或 false(假)。 false true

2.4.4 邏輯運算子 一個關係運算式就是一個條件。 當有多個關係式要一起判斷時需用到邏輯運算子來連結。 VC# 2010所提供的邏輯運算子如下: and 邏輯運算子(且; A/B全部 true, 才是 true) 1 1 1 假設score=65 false 例 70 < score  79 條件式: (score > 70) && (score<=79);

or 邏輯運算子(或; A/B一個 true, 就是 true) [例] score<0 或score 100 條件式寫法: (score<0) || (score>=100) 1 1 1 假設score = -50 true

3. xor邏輯運算子 (互斥; A/B相同是 false, 不同是true) 1 1 1 4. not 邏輯運算子 1 1

2.4.6 合併運算子 + 符號除可當加法運算子外,也可用來合併字串。 若 + 運算子前後的運算元都是  數值資料 ,會視為加法運算處理,其結果為數值。  字串資料,視為合併運算子,將兩個運算元前後合併 成一個字串。 例如: int a ;      //宣告整數變數 string myStr ; //宣告字串變數      a = 20 + 30 ; //加法運算      myStr = “To be ” + “Or Not to be”; //合併運算      (結果:a = 50 / myStr=“To be Or Not to be”)

千 百 十 個 103 102 101 100  2468 =2*103 + 4*102 + 6*101 + 8*100 十進位運算 千 百 十 個 23 22 21 20  1010 =1*23 + 0*22 + 1*21 + 0*20 (10) 人的手指、腳指各十隻。 電腦數位系統0及1(沒電/有電)。 二進位運算

十進位 二進位 二進位轉成十進位 十進位 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

大學重要計概考題 & 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 1 0 ---------- 0 0 0 1 0 1 | 0 1 0 ---------- 1 1 1 1 0 1 ^ 0 1 1 ---------- 1 1 0 7 6 7 1*22 + 1*21 + 1*20

2.4.5 指定運算子 1 0 1 ^ 0 1 0 ---------- 1 1 1 7 1*22 + 1*21 + 1*20

1 0 1 & 0 1 0 ---------- 0 0 0 1 0 1 | 0 1 0 ---------- 1 1 1

2.4.7 移位運算子 移位運算子用在數值資料。 對二進制正整數或帶小數整數。  該數值往左移一個位元,即將該數值乘2。  若往右移一個位元,即該數值除以2。 可用移位運算子:  << :左移運算子  >> :右移運算子

移位運算子-例子 10 >> 1 = ? 10 << 2 = ? 1010 = 10102   1010 = 10102 1012 = 510   (右移一位) 10 << 2 = ?   1010 = 10102  1010002 = 4010  (左移兩位) 101 1*22 + 0*21 +1*20 101000 1*25 + 0*24 +1*23 + 0*22 + 0*21 + 0*20

大學重要計概考題 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 1 0 1 0

如何寫程式作運算-例子 & 0 1 1 ---------- 0 0 1 1 0 1 & 0 1 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 ^ 0 1 1 ---------- 1 1 0 1 6 20 1 0 1 0 0 10 1 0 1 0

The End

大學重要計概考題 & 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 1 0 ---------- 0 0 0 1 0 1 | 0 1 0 ---------- 1 1 1 1 0 1 ^ 0 1 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 1 0 1 0

2.4.8 運算子優先順序和順序關聯性 如運算式 x + y * z 的評估方式是 x + (y * z) 因為 * 運算子的運算次序比 + 運算子高。 一般原則:先乘除,後加減;由左至右

下表由高至低列出各運算子優先執行順序;同列內運算子 具有相同優先順序,且依表中第三欄指定方向進行運算: 下表由高至低列出各運算子優先執行順序;同列內運算子  具有相同優先順序,且依表中第三欄指定方向進行運算:

The End

2.5 主控台應用程式輸出入方法 Console是系統命名空間(NameSpace)內所定義的類別(Class)之一。 如: Read 或 ReadLine 方法提供由鍵盤輸入字元。 Write 或 WriteLine 方法將資料顯示在螢幕上。

2.5.1 Write / WriteLine 方法 一. Console.Write() 方法 顯示:光陰的故事_

如果輸出的字串中間要插入指定的變數或 運算式的內容。 譬如:假設單價price整數變數值為120, 數量為常數常值50,欲在目前游標處顯示 “單價:120 數量:50” 寫法:

寫出輸出結果如下的程式碼

二. Console.WriteLine() 方法

2.5.2 Read / ReadLine 方法 一. Console.Read() 方法 從標準輸入裝置(鍵盤)讀取一個字元, 不等待按 鍵便直接讀取。 使用時機是當需按任意鍵繼續時或只允許 需輸入一個字元時使用。 可將輸入字元放入 char 資料型別所宣告 字元變數。

二. Console.ReadLine() 方法 從標準輸入裝置(鍵盤)讀取一整行字元, 一直到按 鍵為止。 使用時機是當需要輸入字串時用,可將輸入 字串放入 string 資料型別宣告的字串變數。 Console.ReadLine() 方法傳入的資料是屬string 型別,若使用 ConsoleReadLine()方法將傳入 的字串資料指定給整數變數時,需用 int.Parse() 或 Convert.ToInt32()方法將字串轉成整數。 int.Parse()-將字串轉成整數integer資料(參考附錄A-5) Convert.ToInt32-將字串轉成32位元整數(參考Page2-8)

本週作業(Page 2-22~23)

FileName : readline1.sln 05 static void Main(string[] args) 06 { 07 string str1; 08 int price, qty; 09 Console.WriteLine(); 10 Console.WriteLine(" 博碩電腦圖書廣場"); 11 Console.WriteLine("======================"); 12 Console.Write(" 1. 書名:"); 13 str1 = Console.ReadLine(); // 輸入書名並指定給str1變數 14 Console.Write(" 2. 售價:"); 16 price = int.Parse(Console.ReadLine()); // 售價轉成整數,再指定給price 17 Console.Write(" 3. 數量:"); 19 qty = Convert.ToInt32(Console.ReadLine()); // 數量轉成整數,指定給qty 20 Console.WriteLine("======================"); 21 Console.WriteLine(" 4. 金額:{0}", price * qty); 22 Console.Read(); 23 }

2.6 Escape sequence 控制字元 在 C# 中若欲印出「’」單引號、「”」雙引號 或「\」倒斜線等符號,需用逸出序列來達成。 當編譯器遇到這些逸出字元時,將使得接在 倒斜線字元 (\) 後的字元,被當成某種特殊 意義的符號來處理。

[簡例] Console. WriteLine("\"烏龍派出所\"");. //印出 "烏龍派出所" Console [簡例] Console.WriteLine("\"烏龍派出所\""); //印出 "烏龍派出所" Console.WriteLine("Jack\'s Wang"); //印出 Jack's Wang Console.WriteLine("Why 1\\2"); // Why 1\2

作業 練習把readline1程式,略作修改後(參考Page 2-22~23),儲存成學號,最後壓縮,並E-mail至jllioutw@hotmail.com Mail主旨(主題 ,Subject):學號

The End