JAVA程式語言入門(I) 授課教師:王大瑾

Slides:



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

第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
第四章 選擇結構.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
第4章 流程控制結構 4-1 結構化程式設計 4-2 程式區塊 4-3 簡單的條件控制敘述 4-4 巢狀條件敘述 4-5 多選一條件敘述
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
重複結構簡介.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
第三章 控制结构.
Chapter 5 迴圈.
程式設計實作.
JAVA程式設計入門(II) Ch01 JAVA程式語言簡介.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
Visual C++ introduction
第二章 C# 基础知识.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
第3章 C 語言的基本知識.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
保留字與識別字.
流程控制 大綱 傳遞參數給main()方法 流程控制的用途與種類 if判斷敘述 switch 判斷敘述.
程式設計實作.
類別(class) 類別class與物件object.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
第7章 選擇控制項與條件判斷 [速食店點餐系統]
Java 程式設計 講師:FrankLin.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
第三章 C# 基础知识.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第二章Java基本程序设计.
JAVA 程式設計 資訊管理系 - 網路組.
Java變數 2014/6/24.
第 03 章 流程控制 3.1 流程控制的運算式 3.2 選擇結構 3.3 迴圈結構 3.4 實例.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
CH05. 選擇敘述.
期末考.
挑戰C++程式語言 ──第8章 進一步談字元與字串
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
Review 1~3.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第二章 Java基本语法 讲师:复凡.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
適用於多選一 可減少if 與 else配對混淆的錯誤.
變數、資料型態、運算子.
第2章 Java语言基础.
多重條件選擇敘述
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

JAVA程式語言入門(I) 授課教師:王大瑾 Ch05 條件控制 JAVA程式語言入門(I) 授課教師:王大瑾

前言 本章內容: if …then … else 巢狀條件控制 switch…case break

結構化程式設計-觀念 結構化程式設計的主要觀念有三項,如下所示: 由上而下的設計方法。 流程控制結構。 模組。 由上而下的設計方法是當我們面對問題時,先將整個問題分解成數個獨立功能的大模組,再對於這每一個大模組,一一分割成數個小模組。 流程控制結構。 模組。

程式區塊-說明 Java程式區塊是一種最簡單的結構敘述,它的目的只是將零到多列的程式敘述組合成一個群組,可以將整個程式區塊視為一列程式敘述,如下所示: { 程式敘述; ………… } 上述程式區塊使用”{“和”}”大括號包圍的程式敘述,事實上,在大括號內也可以不含任何程式敘述,稱為「空程式區塊」(Empty Block)。

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

範例1 public class Ch04_01 { public static void main(String [] args) { int a = 6; int b = 12; { System.out.println("交換程式變數:"); System.out.print("原來: " + a + " : " + b + "\n"); //System.out.println("原來: " + a + " : " + b + "\n"); } { int temp; temp = a; a = b; b = temp; System.out.println("交換後: " + a + " : " + b); //System.out.println(temp);

結構化程式設計-說明 結構化程式設計是一種軟體開發方法,它是一種組織和撰寫程式碼的技術,使用由上而下的設計方法來分析問題,將程式分解成階層架構的「模組」(Module),每個模組是一段擁有獨立功能的程式碼,而且只有單一的進入點和離開點,各模組間使用三種流程控制來整合: 循序結構(Sequential) 選擇結構(Selection) 重複結構(Iteration)

流程 流程就是程式執行的方向 循序執行 可以利用條件控制敘述或迴圈控制敘述改變流程方向

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

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

流程控制敘述 五種控制敘述: if/else Switch For While do/while 選擇敘述 迴圈敘述

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

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

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

If 選擇敘述 若條件式為true,執行敘述區塊。若條件式為false,則跳過敘述區塊。(如果區塊內只有一個敘述,則大括弧可省略) ,則輸出訊息. if(條件式) { //程式敘述 }

範例2 判斷整數的奇偶數: int i; //將字串轉換成整數 i = Integer.parseInt(args[0]); if(i%2 == 0) System.out.println(i+“為偶數。”); if(i%2 == 1) System.out.println(i+"為奇數。"); 程式於程式區\java(1)\Ch04\Ch04_03.java

練習一 測試下列程式碼: boolean a = true, b = false; if (b = a ) System.out.println("b=a是將a(true)設定給b"); System.out.println("a = "+a); System.out.println("b = "+b) 程式於程式區\java(1)\Ch04\Ex04_01.java

if/else敘述基本用法 若條件式為true,執行區塊敘述一;若條件式為false,執行區塊敘述二。(如果區塊內只有一個敘述,則大括弧可省略) if/else 的流程圖 if(條件式){ //區塊敘述一 } else{ //區塊敘述二

範例3 判斷整數的奇偶數 int i; //將字串轉換成整數 i = Integer.parseInt(args[0]); if(i%2==0) System.out.println(i+"為偶數。"); else System.out.println(i+"為奇數。"); 程式於程式區\java(1)\Ch04\Ch04_04.java

if/else的巢狀結構 兩層巢狀 if/else 的可能情況

範例4 某電影院規定,12歲以下禁止觀看,12歲以上女性門票50元,12歲以上男性門票60元

範例4 某電影院規定,12歲以下禁止觀看,12歲以上女性門票50元,12歲以上男性門票60元 int age, sex; System.out.println("請傳入兩個參數:年齡和性別"); System.out.println("性別以 0(女生)和 1(男生)表示"); age = Integer.parseInt(args[0]); //將字串轉換成整數 sex = Integer.parseInt(args[1]); if(age>=12) { if(sex==0)    System.out.println("女生票價為 50 元"); else   System.out.println("男生票價為 60 元"); } System.out.println("年紀太小,不准進入。"); 程式於程式區\java(1)\Ch6\EX4_5_1.java

範例4結果

if/else巢狀結構 轉換成績程式: 100-90:A  89-80:B  79-70:C  69-60:D  59- 0:F

if/else巢狀結構 此方法平均效能較不好: 若現有100個成績, 此方法共要比對100*5次 平均每一筆資料比對5次 int n, char g; if (n >= 90) g = ‘A’; if (n < 90 && n >= 80) g = ‘B’; if (n < 80 && n >= 70) g = ‘C’; if (n < 70 && n >= 60) g = ‘D’; if (n < 60) g = ‘F’; 此方法平均效能較不好: 若現有100個成績, 此方法共要比對100*5次 平均每一筆資料比對5次

if/else巢狀結構

if/else巢狀結構 此方法的平均效能較好: 例如: 有20個人成績為90分以上 則其比對次數為20*1 if(n>=90){ 有20個人成績為80~89 則其比對次數為20*2 有20個人成績為70~79 則其比對次數為20*3 有20個人成績為60~69 則其比對次數為20*4 有20個人成績為60分以下 則其比對次數為20*5 100筆資料的平均比對次數為 (20+40+60+80+100)/100 = 3 此法最差為5次,最好為1次 if(n>=90){ g=‘A’; }else if(n>=80){ g=‘B’; }else if(n>=70){ g=‘C’; }else if(n>=60){ g=‘D’; } else g=‘F’;

尋找伴侶的else else 配對時,應由前面的先配對 else 先和最靠近自己的 if 配對 若最靠近的 if 已經配對了,則找次靠近者

練習二 傳入三個整數,列出其中最大者 百貨公司週年慶,給消費者的折扣為: 2000元以下:打九折 滿2000元:打八五折 滿3000元:打8折 滿5000元:打七折 程式於程式區\java(1)\Ch04\Ex04_02_01.java 和 Ex04_02_02.java

Switch 選擇敘述 為多選一敘述語法 switch (鍵值){ case 條件值1: // 區段1敘述 break; // 區段1敘述 break; case 條件值2: // 區段2敘述 …… case 條件值N: // 區段N敘述 default: // default區段敘述 }

Switch 選擇敘述 流程圖: 執行switch敘述時,會先求得鍵值,接著將鍵值和條件值1做比對,如果兩值相等,則執行區段1敘述, 接著遇到break 之後,離開switch敘述,如果兩值不相等則再往下比對。 如果鍵值和所有的條件值都不相等,則執行default

Switch 選擇敘述 使用switch敘述時應注意的事項 鍵值必須為可自動轉換成int的型別;例如:byte, short, char, int.而long, float, double不行 鍵值會和所有 case 標籤一一比對。 case 後面只能接常數或是常數的運算式,不能包含變數。 當鍵值和所有 case 標籤比對過,而且沒有符合的 case 標籤時,default 標籤以下的敘述會被執行。 case 和 default 視為標籤,其順序沒有限制。 .

Switch 選擇敘述 Case和default搭配(:)是特殊標籤,它們的功能是將switch 區塊內的敘述分區,switch透過鍵值可以決定從哪個標籤開始執行敘述。 default部份在switch 敘述中是選擇性的,可有可無,而且不一定要放在最後面 在switch敘述中,每個單元的開頭是case,而結尾通常是break Case後面敘述沒有使用大括弧包起來,因此,case與case間並不是區塊,所以需要break跳離switch結構

break敘述 沒有break時,繼續往下執行,並忽略標籤

範例5 在此程式中,default被放在 Switch之頭,在所有case之前, 程式得一樣的結果 case 7: g='C'; break; case 6: g='D'; } System.out.println("等第: "+g); 在此程式中,default被放在 Switch之頭,在所有case之前, 程式得一樣的結果 將分數轉換為等第: int n; char g; //將字串轉換成整數 n = Integer.parseInt(args[0]); switch(n/10){ default: g='F'; break; case 10: case 9: g='A'; case 8: g='B'; 程式於程式區\java(1)\ch7\EX4_8.java

範例5結果

練習三:測試“無break” 承上題,執行下列程式並預測其結果: switch(n/10){ default: g='F'; System.out.println("等第: "+g); case 10: case 9: g='A'; case 8: g='B'; case 7: g='C'; case 6: g='D';      System.out.println("等第: "+g); } 程式於程式區\java(1)\Ch7\EX7_1.java

練習三:測試“無break”結果

範例6 輸入一個字元,輸出相對應的字元 char choice; if(args.length<1) { System.out.println(“請傳入參數,以點選你要的水果”); System.out.println("(a)Apple (b)Banana (c)Coconut"); System.exit(0); //離開程式 } 程式於程式區\java(1)\ch7\EX4_7.java

範例6 choice = args[0].charAt(0);//取得第一個參數的第一個字元 switch(choice){ case 'a': System.out.println("你點了 Apple"); break; case 'b': System.out.println("你點了 Banana"); case 'c': System.out.println("你點了 Coconut"); default: System.out.println(“你沒點水果”); }

練習四 (以switch..case) 百貨公司週年慶,給消費者的折扣為: 2000元以下:打九折 滿2000元:打八五折 滿3000元:打8折 滿5000元:打七折 計算輸出應付金額 程式於程式區\java(1)\Ch7\EX7_2.java

練習四結果