第二章 流程控制 本章投影片僅供本書上課教師使用,非經同意請勿供網路下載或拷貝.

Slides:



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

鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
第4章 流程控制結構 4-1 結構化程式設計 4-2 程式區塊 4-3 簡單的條件控制敘述 4-4 巢狀條件敘述 4-5 多選一條件敘述
第六章 重複結構 本投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
第三章 控制结构.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Chapter 5 迴圈.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
C++Primer 3rd edition 中文版 Chap 5
Java基础 JavaSE异常.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程式撰寫流程.
Java语言程序设计 第五部分 Java异常处理.
PHP 程式流程控制結構.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Introduction.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
檔案讀寫與例外處理 (File IO and Exception Handling)
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
類別與物件 I (Classes and Objects I)
第一單元 建立java 程式.
第三章 C# 基础知识.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
Ch04 VB.NET的流程控制 網頁程式設計.
JAVA 程式設計 資訊管理系 - 網路組.
程式結構&語法.
CH05. 選擇敘述.
期末考.
程式邏輯結構 Chapter 6 認知 認識何謂流程圖及流程圖各種符號的意義。
第二章 Java基本语法 讲师:复凡.
第3章 JavaScript基本语句.
第二章 Java语法基础.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
物件導向程式設計 參考書目: 1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2. 陳錦揮,Java 初學指引,博碩文化 3
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
適用於多選一 可減少if 與 else配對混淆的錯誤.
第2章 Java语言基础.
C#快速導讀 流程控制.
判斷(選擇性敘述) if if else else if 條件運算子.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
第二章 Java基本语法 讲师:复凡.
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

第二章 流程控制 本章投影片僅供本書上課教師使用,非經同意請勿供網路下載或拷貝

2-1 演算法 (Algorithm) 演算法是設計程式的藍圖,規劃出解決問題 具體步驟。 演算法的定義: 為解決某特定問題,所規劃出一系列有順序 且明確步驟。 建造房子先繪藍圖再依藍圖建造符合需求房子。 利用電腦解決某問題前  先充分瞭解問題  構思出具體可行且有效率處理步驟  這些抽象思考過程需透過演算法做具體呈現, 做為撰寫程式的依據。

好演算法必須滿足五個條件: 1. 有 限 性:要在有限的步驟內解決問題。 2. 明 確 性:演算法中每個步驟必須清楚表達。 1. 有 限 性:要在有限的步驟內解決問題。 2. 明 確 性:演算法中每個步驟必須清楚表達。 3. 輸入資料:應包含零個或一個以上輸入資料。 4. 輸出資料:演算法中至少應產生一個輸出。 5. 有 效 性:每個步驟須在有限時間內完成。

演算法表示方式有兩種:  使用虛擬碼 (Pseudo Code)即一般描述語言  使用流程圖(Flow Chart)

一、虛擬碼 使用文字敘述來說明處理問題的步驟。 類似程式語言。 此種表示方式較易改寫成任何程式語言。 複雜演算法大都採用此方式描述。

二、流程圖 流程圖是利用簡明的圖形符號來表示  程式處理問題的流程和方法。 藉著各種不同圖形和箭頭  來表達解決問題的順序  每種圖形代表一種作業功能  箭頭代表流程方向,可協助設計出周詳程式 不致漏掉某些部份。 流程圖缺點  只能表示細部邏輯,對整個程式結構較難表示。 複雜演算法大都不採流程圖,而採虛擬碼。

使用虛擬碼 【例】由鍵盤輸入密碼,若正確顯示 Pass , 若連續輸入三次都不對,顯示 Fail。 Step1 令猜的次數為 0次。 Step3 檢查密碼是否正確?  若正確,顯示 “Pass”。 跳到步驟5。  若不正確,繼續下一步驟。 Step4 檢查次數是否超過3?  若次數未超過,跳到步驟2。  若次數超過,顯示 “Fail”。跳到步驟5。 Step5 結束程式執行。

方式2 使用流程圖

2-2 結構化程式設計 結構化程式設計技巧: 1. 使用三種基本邏輯結構  循序、選擇、重覆。 2. 由上而下的設計。 3. 模組獨立性。

一、循序結構

二、選擇結構

三、重覆結構 亦稱迴圈 (Loop)。 重覆結構可分為下列兩種: 1. 前測式重覆結構 2. 後測式重覆結構

1. 前測式重覆結構

2. 後測式重覆結構

2-3 選擇敘述

一、單向選擇 if … 敘述

二、雙向選擇 if …else… 敘述

三、…?…:… 三元運算子

// FileName : ifElse1.sln 05 static void Main(string[] args) 06 { 07 int num = 0; 08 Console.Write("請輸入正整數:"); 09 num = int.Parse(Console.ReadLine()); 10 if (num % 2 == 0) 11 Console.WriteLine("{0} 是偶數!", num); 12 else 13 Console.WriteLine("{0} 是奇數!", num); 14 Console.Read(); 15 }

2-4 巢狀選擇

// FileName : ifElse2.sln 01 namespace ifElse2 02 { 03 class Program 04 { 05 static void Main(string[] args) 06 { 07 int score1 = 0, score2 = 0; 08 Console.Write("請輸入操行成績:"); 09 score1 = int.Parse(Console.ReadLine()); 10 Console.Write("請輸入學科成績:"); 11 score2 = int.Parse(Console.ReadLine());

12 if (score1 >= 90) 13 if (score2 >= 95) 14 Console.WriteLine("操行{0}分, 學科{1}分,獎學金5000元", score1, score2); 15 else 16 if (score2 >= 90) 17 Console.WriteLine("操行{0}分, 學科{1}分,獎學金2000元", 18 else 19 Console.WriteLine("操行{0}分,學科{1}分,未達申請條件", 20 else 21 Console.WriteLine("操行 {0} 分,學科 {1} 分,未達申請條件", 22 Console.Read(); 23 } 24 } 25 }

2-5 多向選擇

// FileName : switch1.sln 01 namespace switch1 02 { 03 class Program 04 { 05 static void Main(string[] args) 06 { 07 int num1 = 0, num2 = 1; 08 Console.Write("請輸入第1個數:"); 09 num1 = int.Parse(Console.ReadLine()); 10 Console.Write("請輸入第2個數(不能為0):"); 11 num2 = int.Parse(Console.ReadLine()); 12 string op; 13 Console.Write("請輸入運算子(+、-、*、/):");

14 op = Console.ReadLine(); 15 switch (op) 16 { 17 case "+": 18 Console.WriteLine("{0} + {1} = {2}", num1, num2, num1 + num2); 19 break; 20 case "-": 21 Console.WriteLine("{0} - {1} = {2}", num1, num2, num1 - num2); 22 break; 23 case "*": 24 Console.WriteLine("{0} * {1} = {2}", num1, num2, num1 * num2); 25 break; 26 case "/": 27 Console.WriteLine("{0} / {1} = {2}", num1, num2, num1 / num2); 28 break; 29 default: 30 Console.WriteLine("運算子錯誤"); 31 break; 32 } 33 Console.Read(); 34 } 35 } 36 }

2-6 計數迴圈

一. for … 迴圈

// FileName :forAdd1.sln 05 static void Main(string[] args) 06 { 07 int start_num, end_num, step_num, i, sum = 0; 08 Console.Write("請輸入初值(整數):"); 09 start_num = int.Parse(Console.ReadLine()); 10 Console.Write("請輸入終值(整數):"); 11 end_num = int.Parse(Console.ReadLine()); 12 Console.Write("請輸入增值(整數):"); 13 step_num = int.Parse(Console.ReadLine()); 14 for (i = start_num; i <= end_num; i += step_num) 15 sum += i; 16 Console.Write("初值 {0} 到終值 {1} 增值為 {2} 時,總和為 {3}", start_num, end_num, step_num, sum); 17 Console.Read(); 18 }

二. Foreach 迴圈

簡例

2-7 條件式迴圈 條件式迴圈的基本形式有下列兩種: 1. 前測式迴圈:while… 2. 後測式迴圈:do…while

一、前測式迴圈

二、後測式迴圈

【簡例】使用者只能輸入 1 到 6 之間的整數。 int num; do { Console.Write("請輸入1到6之間的整數:"); num = int.Parse(Console.ReadLine()); } while (num < 1 || num > 6); Console.WriteLine("你輸入的整數= {0}", num);

三、無窮迴圈 表示迴圈的條件式結果無法變為 false, 無法離開迴圈。 無法離開迴圈時按 <Ctrl>+<Break> 鍵 中斷程式。

2-8 巢狀迴圈 是指一個程式,迴圈內還有迴圈。 一般製作二維表格如:九九乘法表或 有規則表格都可用「巢狀迴圈」。

// FileName : nestFor1.sln 05 static void Main(string[] args) 06 { 07 for (int i = 1; i <= 5; i++) 08 { 09 for (int j = 1; j <= i; j++) 10 { 11 Console.Write("{0} ", j); 12 } 13 Console.Write("\n"); 14 } 15 Console.Read(); 16 }

2-9 例外處理 當程式執行時發生問題會造成無法繼續執行, 系統就會發出一個例外 (Exception) 訊號。 譬如:除法運算遇到除數為 0 時產生錯誤。 例外處理 (Exception Handle) C# 將 發生問題程式區段 使用 try 框住, 透過 catch 抓取符合問題的敘述 在該區塊內編寫例外處理相關程式碼。

一、try…catch…finally 語法

二、例外類別

【簡例】除數為0時的例外處理。 Filename : tryCatch.sln int num1=5, num2=0, num3; try { num3=num1/num2; Console.WriteLine(" 結果 = {0}", num3); } catch(DivideByZeroException e) Console.WriteLine("除數不得為0!!"); catch(Exception e) Console.WriteLine("其他錯誤!!"); Console.Read();

三、自訂例外處理

// FileName : tryCatch2.sln 05 static void Main(string[] args) 06 { 07 string input; 08 while (true) 09 { 10 try 11 { 12 Console.Write("請輸入Y或N:"); 13 input = Console.ReadLine(); 14 if (input != "Y" && input != "N") 15 { 16 throw new InvalidCastException(); 17 } 18 Console.WriteLine("你輸入的是 {0}", input); 19 break; }

21 catch (InvalidCastException ex) 22 { 23 Console.WriteLine("只能輸入Y或N!"); 24 } 25 } 26 Console.ReadLine(); 27 } 28 } 29 }

本章結束 Take a Break …..