Microsoft PowerPoint - ch04_AEL0080.ppt

Similar documents
C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

新版 明解C++入門編

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

FY.DOC

2014教师资格证考试《中学综合素质》仿真模拟题(4)

C/C++语言 - C/C++数据

第3章.doc

C/C++程序设计 - 字符串与格式化输入/输出

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

c_cpp

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

Microsoft Word - well_game.doc

untitled

C/C++语言 - 分支结构

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - CPE考生使用手冊 docx

Microsoft Word - ACL chapter02-5ed.docx

Visual C# 2005程式設計

C/C++ 语言 - 循环

untitled

碩命題橫式

NethersoleJO89(8).indd

Microsoft PowerPoint - 06_迴圈2.pptx

关于规范区委、区委办公室发文

Microsoft Word - ??山

Microsoft Word - 助理人員教育訓練-會計室.docx

untitled

重庆渝开发股份有限公司


untitled

Microsoft Word - 01.DOC

untitled

Microsoft Word - C-pgm-ws2010.doc

CC213

新・明解C言語入門編『索引』

山东建筑大学学分制管理规定(试行)

Microsoft PowerPoint - ch09_AEL0080.ppt

untitled

《美国名将全传——德怀特·戴维·艾森豪威尔》

ebook39-5

untitled

里 再 说 吓 唬 了 孩 子, 肯 定 方 宁 不 忍 所 以 她 不 死 便 罢, 倘 若 死, 只 有 到 办 公 室 沈 若 鱼 冷 静 得 好 像 在 评 点 某 一 电 视 剧 中 的 女 主 角 你 说 她 是 怎 么 死 的? 先 生 又 感 惊 骇 吃 安 眠 药 沈 若 鱼 成

我眼中的好老师

彩圖 6 彩圖 7 彩圖 8 3

Microsoft PowerPoint - ch03_AEL0080.ppt

第七讲 继承与多态

合金投资年报正文.PDF

从 宾 馆 到 又 一 城 是 十 五 分 钟, 从 又 一 城 到 邵 逸 夫 是 十 分 钟, 去 时 一 路 上 坡 很 辛 苦, 回 时 一 路 下 坡 很 轻 松, 很 像 上 小 学 时 的 心 情, 这 是 最 初 几 天 最 深 的 感 受 有 段 时 间 很 少 走 校 内 的 路


C

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

Java

Microsoft PowerPoint - CH3 [相容模式]

C 1

untitled

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

PowerPoint Presentation

民國八十九年台灣地區在校學生性知識、態度與行為研究調查

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Microsoft Word cppFinalSolution.doc

Microsoft Word - ch04三校.doc

untitled

CC213

1. ( )( ) A. B. C. D. 2. ( )( ) A. : B. : C. : D. : 3. ( )( ) A. : B. : C. : D. : 1 D : 2

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

The golden pins of the PCI card can be oxidized after months or years

(Microsoft Word - Motion Program \270\305\264\272\276\363 \307\245\301\366 \271\327 \270\361\302\367.doc)

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

Java 程式設計入門

Microsoft PowerPoint - ch11.ppt

Microsoft Word - Prog1-981.docx

( )1

<453A5CC2EDC0F6C5C5B0E6CEC4BCFE5CC3F1B7A8A1A4C9CCB7A8A1A4C3F1CAC2CBDFCBCFB7A8D3EBD6D9B2C3D6C6B6C8D5AACEC4BCFE574F52445CB9D9B7BDD0DEB6A9B5E7D7D3B7FECEF1A3A8A1B6C3F1CBDFBDE2CACDA1B7BACDA1B6C1A2B7A8B7A8A1B7A3A92E646F63>

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

# #$$%& ()*+, -$. #-# / & 0 & 0 #& $& 1 #.& /# 2(3 #$$# $..-$ #$ 0 0 $$$$4 0 0 %# 0-5$ 6 /-0 /0 #$ 0 5$$$ #$$% 0 0 #$$% ()*+, -$. #-# / 7, $8 $$

nooog

Microsoft Word - CPMidTerm2010SpringSolution

竞赛报名与报名审核


3.1 num = 3 ch = 'C' 2

Microsoft PowerPoint - ch02_AEL0080.ppt

婚姻與生育初探

untitled

Microsoft PowerPoint - Class2.pptx

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

e bug 0 x=0 y=5/x 0 Return 4 2

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2

運算子多載 Operator Overloading

Microsoft PowerPoint - 10 模板 Template.pptx

zt

3. 反 映 : 4. 五 花 八 门 : 5. 慷 慨 : 6. 参 与 : 7. 慰 劳 : 8. 延 续 : 9. 珍 爱 : 10. 浪 漫 : 三. 找 出 下 列 每 组 词 中 的 近 义 词 或 同 义 词 : 节 日 节 气 节 令 时 节 习 俗 民 俗 仪 式 风 俗 文 献

Microsoft Word - ACL chapter00a-1ed .doc

Microsoft Word - 透析8051之迴圈控制方法.doc


untitled

Microsoft Word doc

國立中山大學學位論文典藏.PDF

論鄭玄對《禮記‧月令》的考辨

Transcription:

4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements) 4.5 switch 敘述 4.6 條件運算子 (Conditional Operator?: ) 4.7 goto 無條件前往敘述 2/42

演算法的描述方式 演算法 (algorithms) 是執行工作的詳細步驟 電腦只能對以演算法式 (algorithmic) 的指令進行處理, 無法直接處理直覺式 (intuitive) 的指令 所有的演算法都可以用循序 (sequence), 選擇 (selection) 以及重複 (repetition) 三種流程控制架構 (control structures) 完整描述 3/42 演算法的三種描述方式 1. 虛擬程式碼 (pseudocode) 2. 公式 (formula) 3. 流程圖 (flowchart) 4/42

求平均值的流程圖 開始 輸入 x, y 計算 Sum 輸出 5/42 結束 常用的流程圖符號 6/42

複合敘述 (compound statement) 將數個敘述 (statements) 以大括號 包起來所形成的單元 複合敘述又稱為區塊 (block) 複合敘述和單一敘述在語法上佔有同等的地位 以包含兩個敘述的複合敘述為例, 其語法為 : 7/42 或 8/42 變數的運用範圍 (Scope of variables) int x = 2; int x = 0; int y = 5;...// 在這裡 x,y 都適用,...// 但 x 為重新定義的整數且其初值為 0... // 這裡 y 已不適用,x 則回到 2 的預設值... // 在這裡 x 和 y 都為未定義, 無法使用

C++ 的兩種選擇語法 if- 敘述 (if- statement) switch 敘述 (switch statement) 9/42 if- 敘述 false false if ( 條件式 ) 條件式 if ( 條件式 ) 條件式 敘述 true _1 true 敘述_1 10/42

條件式 所有的 C++ 表達式 (expression) 都可以當做條 件式 使用關係表達式或邏輯運算式是語意比較直接的 寫法 : x > 0 x == y y <= z (y!= 0) (x>0)? >? <?? >= 11/42 程式 CharInput.cpp 使用了 if- 敘述與使用者互動 : // CharInput.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() char ch; cout << " 請輸入一個字母 (Y/N):" << endl; cin >> ch; if ( ch == 'Y' ch == 'y' ) cout << " 您輸入了 yes." << endl; cout << " 您輸入了 No." << endl; return 0; 12/42

操作過程 請輸入一個字元 (Y/N): Y 您輸入了 yes. 13/42 if 敘述 條件式 false 條件式 false if ( 條件式 ) if ( 條件式 ) true true 14/42

巢狀 if- 敘述 (Nested if- statements) 可分為下列兩種 : 置入的 if- 敘述位於 if 和 之間 置入的 if- 敘述位於 之後 15/42 巢狀 if- 敘述 (Nested if- statements)-1/2 條件 _1 false true if ( 條件 _1) if ( 條件 _2) 條件 _2 false 敘述 _3 true 敘述 _3 16/42

巢狀 if- 敘述 (Nested if- statements)-2/2 條件 _1 false if ( 條件 _1) true 條件 _2 false if ( 條件 _2) true 敘述 _3 敘述 _3 17/42 if- 敘述可能的錯誤 if ( 條件 _1) if ( 條件 _2) 被解釋為 if ( 條件 _1) if ( 條件 _2) 18/42

計算二次常係數方程式兩個根的程式 Root2.cpp 19/42 // Root2.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() float a, b, c, D; cout << " 請輸入 a:" << endl; cin >> a; cout << " 請輸入 b:" << endl; cin >> b; cout << " 請輸入 c:" << endl; cin >> c; if ( a == 0.0 ) if (b == 0.0) cout << " 無解! " << endl; cout << " 只有一組解 : " << -c/b << endl; D = b*b-4.0*a*c; if (D==0.0) cout << " 重根 : " << -b/(2.0*a) << endl; if (D>0.0) cout << " 有兩組實數解 " << endl; cout << " 第一組 :" << (-b+sqrt(d))/(2.0*a) << endl; cout << " 第二組 :" << (-b-sqrt(d))/(2.0*a) << endl; 20/42

cout << " 解為兩組共軛複數 " << endl; cout << " 第一組 :" << (-b)/(2.0*a) << " + i " << sqrt(-d)/(2.0*a) << endl; cout << " 第二組 :" << (-b)/(2.0*a) << " - i " << sqrt(-d)/(2.0*a) << endl; return 0; 21/42 程式 Root2.cpp 在三次操作中的互動顯示 : 狀況一狀況二狀況三 請輸入 a:0 請輸入 b:2 請輸入 c:5 只有一組解 : -2.5 請輸入 a:4 請輸入 b:2 請輸入 c:7 解為兩組共軛複數第一組 : -0.25 + i 1.29904 第二組 : -0.25 - i 1.29904 請輸入 a:1.5 請輸入 b:8.7 請輸入 c:0.6 有兩組實數解第一組 : -0.0698057 第二組 : -5.73019 22/42

if- 鏈 (if- chain) 有時又稱為 -if 鏈 ; 或 -if 架構 (-if construct) 條件 _1 false true 條件 _2 false if ( 條件 _1) if ( 條件 _2) if ( 條件 _3) 敘述 _3 敘述 _4 true 條件 _3 true 敘述 _3 false 敘述 _4 23/42 範例程式 檔案 Tax.cpp // Tax.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() float GIncome, Tax; cout << "\n" << " 請輸入綜合所得淨額 : " << endl; cin >> GIncome; 24/42 if (GIncome < 0.0) cout << " 您輸入的綜合所得淨額沒有意義!\n"; if (GIncome < 330000.0) Tax = GIncome * 0.06;

if (GIncome < 890000.0) Tax = GIncome * 0.13-23100; if (GIncome < 1780000.0) Tax = GIncome * 0.21-94300; if (GIncome < 3340000.0) Tax = GIncome * 0.3-254500; Tax = GIncome * 0.4-588500; cout << " 您要繳的綜合所得稅是 : " << Tax << " 元 "; return 0; 25/42 操作過程 請輸入綜合所得淨額 : 1349832 您要繳的綜合所得稅是 : 189165 元 26/42

switch 敘述 完整的 switch 敘述包括 switch,case,default, break 四個關鍵字 switch ( 整數表達式 ) case 值 _1: case 值 _2: default: 敘述 _3 值 _1 整數表達式 值 _2 敘述 _3 27/42 28/42 範例程式 Seasons.cpp 依使用者輸入的月份判斷該月份所屬的季節, 程式內應用了 switch 敘述的特性 // Seasons.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() int Month; cout << "\n" << " 請輸入一個月份 : " << endl; cin >> Month; if (Month < 1 Month >12) cout << " 您輸入的月份沒有意義!";

cout << "\n" << Month << " 月是 "; switch ((Month%12)/3) case 0: cout << " 冬季 "<< endl; case 1: cout << " 春季 "<< endl; 29/42 30/42 case 2: cout << " 夏季 "<< endl; case 3: cout << " 秋季 "<< endl; default: cout << " 程式有問題!" << endl; return 0;

操作結果 狀況一 請輸入一個月份 : 5 5 月是春季 狀況二 請輸入一個月份 : 9 9 月是秋季 31/42 範例程式 CharTest.cpp 檢查使用者輸入的字母是子音還是母音 // CharTest.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() char C; cout << "\n" << " 請輸入一個字母 : " << endl; cin >> C; if (C < 65 C >122) cout << " 您輸入的不是字母!"; 32/42

33/42 cout << " 您輸入的字母是 "; switch (C) case 'a': case 'e': case 'i': case 'o': case 'u': case 'A': case 'E': case 'I': case 'O': case 'U': cout << " 母音字母 " << endl; default: cout << " 子音字母 " << endl; return 0; 操作結果 (1) 第一次操作 請輸入一個字母 : e 您輸入的字母是母音字母 (2) 第二次操作 請輸入一個字母 : 3 您輸入的不是字母! 34/42

條件運算子 條件式? 表達式 _1 : 表達式 _2; 例如, 結合等號成為指派敘述 (assignment expression), 可以寫成 c = a > b? a : b ; 35/42 範例程式 Condition.cpp 使用條件運算子以判斷數值大小和奇偶數 // Condition.cpp #include <iostream> using namespace std; // ------ 主程式 -------------------- int main() float a, b; int N; // --- (1) ------------------------- cout << "(1) 請輸入兩個數 " << endl; 36/42

37/42 endl; cout << " 請輸入第一個數 a:" << endl; cin >> a; cout << " 請輸入第二個數 b:" << endl; cin >> b; cout << "a, b 兩者中較大的是 " << ( a > b? 'a' : 'b' ) << endl ; cout << endl; // --- (2) -------------------------- cout << "(2) 請輸入一個整數 N:" << endl; cin >> N; cout << "N 是 " << ( N % 2? " 奇數 " : " 偶數 ") << endl ; 操作結果 (1) 請輸入兩個數 : 請輸入第一個數 a: 23 請輸入第二個數 b: 46 a, b 兩者中較大的是 b (2) 請輸入一個整數 N: 89 N 是奇數 38/42

goto 無條件前往敘述 39/42 40/42

範例程式 SeasonsGoTo.cpp 用 goto 敘述代替 if- 敘述 // SeasonsGoTo.cpp #include <iostream> using namespace std; int main() 41/42 int Month; cout << "\n" << " 請輸入一個月份 cin >> Month; if (Month < 1 Month >12) cout << " 您輸入的月份沒有意義!"; goto EndofProgram; cout << "\n" << Month << " 月是 "; switch ((Month%12)/3) : " << endl; 42/42 case 0: cout << " 冬季 "<< endl; case 1: cout << " 春季 "<< endl; case 2: cout << " 夏季 "<< endl; case 3: cout << " 秋季 "<< endl; default: cout << " 程式有問題!" << endl; EndofProgram: return 0;