流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈

Slides:



Advertisements
Similar presentations
Java软件设计基础 课后作业.
Advertisements

现代农业创业指导 广西省兴安县农广校.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
第3章 需求分析(续) 学习目标 什么是需求建模? 需求分析建模方法 掌握实体—关系图(E—R图); 掌握状态转换图;
C#程序设计案例教程 第3章 程 序 结 构.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
負責同仁:許慧楨小姐 系辦公室6號櫃臺 學務/獎助學金 負責同仁:許慧楨小姐 系辦公室6號櫃臺
第三章 控制结构.
Ch07 PHP程式基礎 網頁程式設計.
程設一.
程式設計實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
第二章 C# 基础知识.
C++Primer 3rd edition 中文版 Chap 5
第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第3章 C 語言的基本知識.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
Java 程式設計 講師:FrankLin.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
C 語言簡介 - 2.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
程式設計 老師:戴自強 助教:楊斯竣.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
第三章 C# 基础知识.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
软件测试 (四)静态测试与动态测试.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
Ch04 VB.NET的流程控制 網頁程式設計.
第二章 Java基本语法 讲师:复凡.
Java 程式設計 講師:FrankLin.
第3章 JavaScript基本语句.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
Java软件设计基础 课后作业.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
第二章 Java基本语法 讲师:复凡.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
第6章 PHP基本語法介紹.
多重條件選擇敘述
迴圈(重複性結構) for while do while.
C#快速導讀 流程控制.
判斷(選擇性敘述) if if else else if 條件運算子.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈

4-1 流程控制與UML活動圖 4-1-1 UML活動圖 4-1-2 流程控制的種類

4-1-1 UML活動圖-說明 「UML」(Unified Modelling Language)是一種符號語言,用來描述「物件導向分析」(OOA)和「物件導向設計」(OOD)的分析結果,如同工程式師閱讀藍圖就可以蓋房子,程式設計師看到UML繪出的模型圖,就可以寫出所需的程式碼。 「活動圖」(Activity Diagram)是UML眾多符號圖形之一,主要是用來描述使用案例(Use Case)的事件流程和物件操作,即工作流程和所需的作業和活動。

4-1-1 UML活動圖-符號圖形

4-1-2 流程控制的種類-說明 流程控制依據程式碼執行的順序可以分為三種: 循序結構(Sequential) 選擇結構(Selection) 重複結構(Iteration)

4-1-2 流程控制的種類-循序結構 循序結構是程式預設的執行方式,也就是一個程式敘述接著一個敘述依序的執行,如右圖所示:

4-1-2 流程控制的種類-選擇結構 選擇結構是一種條件控制敘述的選擇題,可以分為單一選擇、二選一或多選一三種。 程式執行順序是依照關係運算式的條件來決定執行哪一個程式區塊的程式碼,如右圖所示:

4-1-2 流程控制的種類-重複結構說明 重複結構就是迴圈控制,可以重複執行一個程式區塊的程式碼,提供一個結束條件結束迴圈的執行,依據結束條件測試的位置不同分為兩種,如下所示: 前測式重複結構 後測式重複結構

4-1-2 流程控制的種類-前測式重複結構 測試迴圈結束條件在程式區塊的開頭,需要符合條件,才能執行迴圈中程式區塊的程式碼,如右圖所示:

4-1-2 流程控制的種類-後測式重複結構 測試迴圈結束條件在程式區塊的結尾,所以迴圈的程式區塊至少會執行一次,如右圖所示:

4-2 程式區塊與主控台基本輸入 4-2-1 程式區塊 4-2-2 主控台的基本輸入

4-2-1 程式區塊-說明 程式區塊(Blocks)的目的是將零到多列的程式敘述組合成一個群組,以便將整個程式區塊視為一列程式敘述,如下所示: { 程式敘述; ………… } 程式區塊是使用「{」和「}」大括號包圍的一至多個程式敘述,事實上,在大括號內也可以不含任何程式敘述,稱為「空程式區塊」(Empty Block)。

4-2-1 程式區塊-範例 程式區塊可以群組化程式編排,因為Java語言並沒有限制宣告變數的位置,所以程式區塊還可以用來隱藏變數的宣告,如下所示: { int temp; temp = a; a = b; b = temp; } 程式區塊宣告整數變數temp,變數temp只能在程式區塊內使用,一旦離開程式區塊,就無法存取變數temp,變數temp稱為程式區塊的區域變數(Local to the Block)。

4-2-2 主控台的基本輸入- java.util.Scanner類別 Java主控台基本輸入是從System.in物件讀取資料,為了方便說明,筆者使用java.util.Scanner類別(此為類別全名,如此就不需匯入套件)的Scanner物件來取得輸入資料,如下所示: java.util.Scanner sc = new java.util.Scanner(System.in); 程式碼使用new運算子建立Scanner物件,其建構子參數是基本輸入的System.in物件。

4-2-2 主控台的基本輸入-相關方法 在建立Scanner物件後,就可以使用相關方法來取得使用者輸入的資料,如下所示: String name = sc.nextLine(); int score = sc.nextInt(); double height = sc.nextDouble(); 上述程式碼的nextLine()方法可以取得使用者輸入字串的String物件(可以包含空白字元);nextInt()方法取得輸入的整數;nextDouble()方法取得浮點數。

4-3 條件控制敘述 4-3-1 if是否選條件敘述 4-3-2 if/else二選一條件敘述 4-3-3 switch多選一條件敘述 4-3-4 ?:條件敘述運算子

4-3 條件控制敘述-說明 Java的條件控制敘述是使用第3章的關係和條件運算式,配合程式區塊建立的決策敘述,可以分為: 選擇(if) 二選一(if/else) 多選一(switch) 條件敘述運算子(?:)

4-3-1 if是否選條件敘述-說明 Java語言的if條件敘述是一種是否執行的單選題,可以決定是否執行程式區塊的程式碼。如果關係/條件運算結果為true,就執行括號之間的程式區塊。例如:以身高判斷是否需要購買全票的條件敘述,如下所示: if ( height >= 150 ) { System.out.print("身高: " + height); System.out.println("購買全票!"); }

4-3-1 if是否選條件敘述-UML活動圖 活動圖菱形分歧的連接上有防衛條件,如果height < 150就結束;height >= 150才執行之後的程式區塊,如右圖所示:

4-3-2 if/else二選一條件敘述-說明 如果條件是排它情況的2個執行區塊,只能二選一,我們可以加上else指令。例如:成績是否及格是二選一的情況,我們可以依據成績值判斷學生的成績是及格或不及格,如下所示: if ( grade >= 60 ) { System.out.println("成績及格: " + grade); } else { System.out.println("成績不及格: " + grade);

4-3-2 if/else二選一條件敘述- UML活動圖

4-3-3 switch多選一條件敘述-說明 Java程式如果需要多選一的條件敘述,也就是依照一個條件判斷來執行多個區塊之一的程式碼,一共有兩種方法可以達成相同的目的,如下所示: 第一種方法:if/else/if 第二種方法:switch

4-3-3 switch多選一條件敘述- if/else/if(說明) 在Java程式只需重複使用if/else條件,就可以建立多選一條件敘述。例如:判斷多種成績範圍的學生GPA成績,如下所示: if ( grade >= 80 ) System.out.println("學生成績:A"); else if ( grade >= 70 ) System.out.println("學生成績:B"); System.out.println("學生成績:C");

4-3-3 switch多選一條件敘述-if/else/if(UML活動圖)

4-3-3 switch多選一條件敘述- switch(說明) Java的switch多條件敘述比較簡潔,可以依照符合條件來執行不同程式區塊的程式碼 ,如下所示: switch ( gpa ) { case 'A': System.out.println("學生成績超過:80"); break; case 'B': System.out.println("學生成績:70~79"); case 'C': System.out.println("學生成績:60~69"); default: System.out.println("學生成績不及格!"); }

4-3-3 switch多選一條件敘述- switch(UML活動圖)

4-3-3 switch多選一條件敘述-Java SE 7版支援switch條件為字串 switch ( gpa ) { case "GPA: A": System.out.println("學生成績超過:80"); break; case "GPA: B": System.out.println("學生成績:70~79"); case "GPA: C": System.out.println("學生成績:60~69"); default: System.out.println("學生成績不及格!"); }

4-3-4 ?:條件敘述運算子-說明 Java語言的條件敘述運算子?:可以使用在指定敘述以條件指定變數值,其語法格式如下所示: 變數 = (關係/條件運算式) ? 變數值1 : 變數值2; 指定敘述的「=」號右邊是條件敘述運算子,如同一個if/else條件,使用「?」符號代替if,「:」符號代替else,如果條件成立,就將變數指定成變數值1,否則就是變數值2。

4-3-4 ?:條件敘述運算子-範例 條件敘述運算子的範例,如下所示: hour = (hour >= 12) ? hour-12 : hour; 程式碼使用條件敘述運算子指定變數hour的值,如果條件為true,hour變數值為hour-12,false就是hour,其流程圖與if/else相似。

4-4 迴圈控制敘述 4-4-1 for迴圈敘述 4-4-2 前測式的while迴圈敘述 4-4-3 後測式的do/while迴圈敘述 4-4-4 break和continue指令敘述

4-4-1 for迴圈敘述-說明 Java的for迴圈是一種簡化的while迴圈,可以執行固定次數的程式區塊,迴圈會自行處理計數器,讓計數器每一次增加或減少一個固定值,直到迴圈的結束條件成立為止。

4-4-1 for迴圈敘述-遞增的for迴圈 for迴圈也稱為「計數迴圈」(Counting Loop),迴圈是使用變數來控制迴圈的執行,從一個最小值執行到最大值。 例如:計算1加到15的總和,每次增加1,如下所示: for ( i = 1; i <= 15; i++ ) { System.out.print("|" + i); total += i; }

4-4-1 for迴圈敘述-UML活動圖

4-4-1 for迴圈敘述-括號說明 for迴圈括號中三部分運算式的詳細說明,如下: i = 1:迴圈初始值,變數i是計數器變數,如下所示: for ( int i = 1; i <= 15; i++ ) { } for ( total = 0, i = 15; i >= 1; i-- ) { } i <= 15:迴圈的結束條件,當i > 15時結束for迴圈的執行。 i++:更改計數器的值,i++是遞增1,變數i的值依序為1、2、3、4…和15,總共執行15次迴圈。

4-4-1 for迴圈敘述-遞減的for迴圈 相反的情況,如果是從15到1,for迴圈的計數器就是使用i--,表示每次遞減1,如下所示: for ( total = 0, i = 15; i >= 1; i-- ) { }

4-4-1 for迴圈敘述-無窮的for迴圈 如果for迴圈是空的for( ; ; ),即沒有指定結束條件,其預設是true。換句話說,for迴圈是一個無窮迴圈,永遠不會結束迴圈執行。

4-4-2 前測式的while迴圈敘述-說明 while迴圈敘述不同於for迴圈,我們需要在程式區塊自己處理計數器的增減。while迴圈是在程式區塊的開頭檢查結束條件,條件為true才允許進入迴圈執行。例如:使用while迴圈計算階層5!的值,如下所示: while ( level <= 5 ) { n *= level; System.out.println(level + "!=" + n); level++; }

4-4-2 前測式的while迴圈敘述-UML活動圖

4-4-3 後測式的do/while迴圈敘述-說明 do/while和while迴圈敘述的差異是在迴圈結尾檢查結束條件,因此,do/while迴圈的程式區塊至少會執行一次。例如:使用do/while迴圈顯示攝氏轉華氏的溫度轉換表,如下所示: do { f = (9.0 * c) / 5.0 + 32.0; System.out.println(c + "\t" + f); c += step; } while ( c <= upper );

4-4-3 後測式的do/while迴圈敘述-UML活動圖

4-4-4 break和continue指令敘述-break指令中斷迴圈 Java的break指令可以強迫終止迴圈執行,如同switch條件敘述使用break指令敘述跳出程式區塊一般,如下所示: do { System.out.print("|" + i); total += i; i++; if ( i > 15 ) break; } while ( true );

4-4-4 break和continue指令敘述- continue指令繼續迴圈 Java的continue指令是對應break指令,可以馬上繼續下一次迴圈的執行。不過,它並不會執行程式區塊位在continue指令敘述後的程式碼,如果使用在for迴圈,一樣更新計數器變數,如下所示: for ( total = 0, i = 1; i <= 10; i++ ) { if ( (i % 2) == 1 ) continue; System.out.print("|" + i); total += i; }

4-5 巢狀迴圈-說明 巢狀迴圈是在迴圈內擁有其他迴圈。例如:在for迴圈擁有for、while和do/while迴圈;或在while迴圈內擁有for、while和do/while迴圈。

4-5 巢狀迴圈-範例 Java語言的巢狀迴圈可以有很多層,二、三、四層都可以,例如:二層的巢狀迴圈,如下所示: for ( i = 1; i <= 9; i++ ) { …… j = 1; while ( j <= 9 ) { ….. j++; }

4-5 巢狀迴圈-執行過程1 迴圈一共有兩層,第一層的for迴圈執行9次,第二層的while迴圈也是執行9次,兩層迴圈總共執行81次,如下表所示:

4-5 巢狀迴圈-執行過程2 程式範例第一層迴圈的計數器變數i值為1時,第二層迴圈的變數j為1到9,可以顯示下列的執行結果,如下所示: 1*1=1 1*2=2 …. 1*9=9 當第一層迴圈執行第二次時,i值為2,第二層迴圈仍然為1到9,此時的執行結果,如下所示: 2*1=2 2*2=4 2*9=18 繼續第一層迴圈,i值依序為3到9,所以可以建立完整的九九乘法表。