分支 (selection,branch)概念再複習

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

多元評量與 Greenfoot 簡介 南港高中高慧君. 演講大綱 多元評量 高中階段程式設計教學目標與困境 Greenfoot 快速入門 – 袋熊吃樹葉 – 沙灘螃蟹 Greenfoot 臺灣社群介紹 2.
单元二:面向对象程序设计 任务二:借书卡程序设计.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一單元 建立java 程式.
計算機程式語言實習課.
健康少負擔 肥胖防治真簡單 主辦單位:行政院衛生署國民健康局.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
向健康體位說 YES! 莿桐國中.
JAVA 程式設計 資訊管理系 - 網路組.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
第三章 控制结构.
Chapter 5 迴圈.
程式設計實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
本周不辦理實作輔導 happy mother day!
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
臺北市立大學 資訊科學系(含碩士班) 賴阿福
控制流程 邏輯判斷 迴圈控制.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
流程控制 大綱 傳遞參數給main()方法 流程控制的用途與種類 if判斷敘述 switch 判斷敘述.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
程式撰寫流程.
類別(class) 類別class與物件object.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
實作輔導 4 日期: 4/21(星期六) 13:10~16:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
請大家準時上課.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第一單元 建立java 程式.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
Week 2: 程式設計概念與 演算法的效能評估
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
JAVA 程式設計 資訊管理系 - 網路組.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
期末考.
小數除法.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
程式的時間與空間 Time and Space in Programming
實作輔導 本周5/5(六)安排實作輔導 二時段: 周六 11:00~12:30 周六13:30~15:30.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
因數與倍數.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
JAVA 程式設計與資料結構 第三章 物件的設計.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

分支 (selection,branch)概念再複習

分支 (selection,branch)概念:搶答(1) if (邏輯/關係運算式) { s1; S2; } s3; 邏輯/關係運算式 邏輯/關係運算式 邏輯/關係運算式 false false false true true true s3 S1; S1; S2; S1; S2; A S2; s3 s3 3 1 2 (邏輯/關係運算式) ==(條件式) A的正確流程圖? 1、2、3

分支 (selection,branch)概念:搶答(3) if (邏輯/關係運算式) { s1; S2; } else s3; 邏輯/關係運算式 邏輯/關係運算式 邏輯/關係運算式 false false false true true true s3 S1; S1; S2; S1; S2; S2; s3 s3 C 3 1 2 C的正確流程圖? 1、2、3 (邏輯/關係運算式) ==(條件式)

分支 (selection,branch)概念:搶答(2) 邏輯/關係運算式 邏輯/關係運算式 邏輯/關係運算式 false false false if (邏輯/關係運算式) s1; s2; s3; true true true s3 S1; S1; S2; S1; S2; B S2; s3 s3 3 1 2 B的正確流程圖? 1、2、3 (邏輯/關係運算式) ==(條件式)

分支 (selection,branch)概念複習(1) if (邏輯/關係運算式) { s1; S2; } s3; 邏輯/關係運算式 邏輯/關係運算式 邏輯/關係運算式 false false false true true true s3 S1; S1; S2; S1; S2; A if (邏輯/關係運算式) s1; s2; s3; S2; s3 s3 3 1 2 A的正確流程圖? 1~3 B的正確流程圖? 1~3 (邏輯/關係運算式) ==(條件式) B

分支 (selection,branch)概念複習(1) 邏輯/關係運算式 S1; S2; s3 true false if (邏輯/關係運算式) { s1; S2; } else s3;

(selection,branch)概念複習(2) if (邏輯/關係運算式) { s1; S2; } s3; if (邏輯/關係運算式) { s1; S2; } else { s3; S4; S5; if (邏輯/關係運算式) { s1; S2; } else if (邏輯/關係運算式) s3; s4; else { s5; S6; S7; if (邏輯/關係運算式) { if (邏輯/關係運算式) { s1; s2; } else s3; else if (邏輯/關係運算式) s4; s5; S6; 2分支 Multiple-way if: 3分支 nested if: 2層巢狀

分支 (selection,branch)概念複習(3) if (邏輯/關係運算式) { s1; S2; } s3; if (邏輯/關係運算式) s1; S2; s3; if (邏輯/關係運算式) { s1; S2; } else { s3; S4; S5; if (邏輯/關係運算式) s1; else s3; S4; S5; 複合敘述Compound statement 單一敘述Single statement 不用{ }

判斷閏年(leap year)、平年(common year)

閏年、平年 格里高利曆(Calendarium Gregorianum)閏年規則如下: 每逢閏年,2月分有29日,平年的2月分為28日 閏年:閏年是比普通年分多出一段時間的年分,目的是為了彌補人為 規定的紀年與地球公轉產生的差異 格里高利曆(Calendarium Gregorianum)閏年規則如下: 4的倍數是可能的。 100的倍數是不可能的。 400的倍數是可能的。 每逢閏年,2月分有29日,平年的2月分為28日 公元前之閏年出現在1, 5, 9, 13, ... BC,須將年份值減1再 以「除以4」計算。(因為沒有公元0年這一年,所以公 元前1, 2, 3, 4, ... 年應該是公元0, -1, -2, -3, ... 年,而公元 前1, 5, 9, 13, ... 年為公元0, -4, -8, -12, ... 年,為4的倍數) https://zh.wikipedia.org/wiki/%E9%97%B0%E5%B9%B4

判斷閏年(leap year)、平年(common year)流程圖 條件式調整順序,是否正確? 多重Multi-way if Not year被400整除 yes Not year被100整除 印“閏年” yes Not year被4整除 印“平年” yes 印“平年” 印“閏年”

巢狀分支Nested if year被400整除 yes Not 印“閏年” Year不被100整除 印“平年” year被4整除

year被400整除 印“閏年” Year不可被100整除 且可被4整除 印“平年” No Yes ※ 二分支都可得閏年:或(or) (year被400整除 )或 (Year不可被100整除 且可被4整除) 印“閏年” 印“平年” No Yes

閏年規則轉成條件 閏年規則如下: if ((year%4==0 && year%100!=0)|| year%400==0) { 是4的倍數 不是100的倍數 是400的倍數 if ((year%4==0 && year%100!=0)|| year%400==0) { status = "閏年(leap year)!"; } else status = "平年(common year)!";

迴圈加入判斷leap year(閏年)

臺北市立大學 資訊科學系(含碩士班) 賴阿福 讓程式繞圈圈 :談迴圈(loop) 臺北市立大學 資訊科學系(含碩士班) 賴阿福

迴圈(loop) 讓猜數字重複執行 猜到對為止 繼續猜 但何時結束? 結束條件 重複計算BMI 重複判斷leap year(閏年)

迴圈(loop)概念 條件 S1; 重複不斷執行,直到條件不符合為止。 常見型態:for、while、do…while True False 重複不斷執行,直到條件不符合為止。 常見型態:for、while、do…while 一開始條件須符合,才能進入迴圈內 部執行 無窮迴圈:條件永遠符合 有些環境必須是無窮迴圈: O.S(作業系統) *CPU特性:重複執行(耐性)

猜數字遊戲 讓猜數字重複執行 猜到對為止 繼續猜 但何時結束? 結束條件

產生亂數 繼續 玩/猜? 輸入數值 印“答錯了” 輸入值==亂數 False True 印“答對了” 下一個亂數值

讓猜數字重複執行

增加:猜次數 產生亂數 繼續 玩/猜? 次數+1 輸入數值 印“答錯了” 輸入值==亂數 False True 印“答對了” 下一個亂數值

增加:猜次數

結束(離開)程式: System.exit(-1); import java.security.SecureRandom; import java.util.Scanner; public class GuessN_3 { public static void main(String[] args) { SecureRandom sr = new SecureRandom(); Scanner input = new Scanner(System.in); int a = 0; int b = 100; a = sr.nextInt(100)+1; while (b>0) { System.out.print("猜數字(1~100):"); b = input.nextInt(); if (b<=0) { System.out.println("bye!!"); System.exit(-1); } if (a!= b) { //nested if if (a > b) System.out.println("猜的太小囉"); else System.out.println("猜的太大囉"); } //if else { System.out.println("恭喜猜對!\n"); }//while System.out.println("不會被顯示!!"); }//main }//class 結束(離開)程式: System.exit(-1);

迴圈加入計算BMI : debug until it can work.

Errors: 宣告問題

Errors: 重複宣告

迴圈加入計算BMI

迴圈加入判斷leap year(閏年)

習題 習題2:輸入民國幾年,判斷該年是閏年或平年 習題1:輸入矩形長、寬(整數)資料,求面積及邊長、判斷為正方形或長方形, 但須能重複執行,直到長或寬輸入為<=0 正方形或長方形條件? 如何解決? 請規畫其過程 (解法)且畫流程圖 (參考: 程式設計歷程 表.docx、程式設計歷程參考範本.docx) 習題2:輸入民國幾年,判斷該年是閏年或平年 須能重複執行,直到輸入年份為<=-100,結束(離開)程式: System.exit(-1); 判斷閏年或平年之邏輯式為何? 請規畫其過程 (解法)且畫 流程圖(參考: 程式設計歷程表.docx、程式設計歷程參考範 本.docx)

追蹤迴圈 條件 S1; S2; S3; True False 無窮迴圈 空迴圈 如何跳出迴圈

追蹤迴圈1

追蹤迴圈2

追蹤迴圈3

追蹤迴圈4 S1; 條件 False True S2; break S3;

亂數加法練習 (個位數) (1)出10題個位數加法測驗(一次一題),不管對錯都出下一題, 直到答對為止; (2)出10題,答錯不出下一題,直到答對為止; (3)出N題,由user決定題數,每題10分,答錯之題目須於結束 時顯示;

public class add_drill_2 { public static void main(String[] args) { SecureRandom sr = new SecureRandom(); Scanner input = new Scanner(System.in); int n1=0,n2= 0; int ans= 0, score=0, i=1; while (i<=10) { n1 = sr.nextInt(10); n2 = sr.nextInt(10); System.out.print(""+n1+"+"+n2+"=");//present question ans = input.nextInt(); if (ans== n1+n2) { score=score+10; System.out.println("答對,GREAT!!");} else System.out.println("答錯,加油! "); }//while }//main }//class What’s wrong?

public class add_drill_2 { public static void main(String[] args) { SecureRandom sr = new SecureRandom(); Scanner input = new Scanner(System.in); int n1=0,n2= 0; int ans= 0, score=0, i=1; while (i<=10) { //i=i+1; n1 = sr.nextInt(10); n2 = sr.nextInt(10); System.out.print(""+n1+"+"+n2+"=");//present question ans = input.nextInt(); if (ans== n1+n2) { score=score+10; System.out.println("答對,GREAT!! 分數:"+score+"分.");} else System.out.println("答錯,加油! 分數:"+score+"分."); i=i+1; }//while }//main }//class

輸入三變數內容,分別放入a, b, c,且將最大值放入a,最小值放入c

迴圈加入計算BMI

亂數加法練習 (個位數)  亂數加法練習 (個位數) : (1)出10題,答錯不出下一題,直到答 對為止; (2)出N題,由user決定題數,每題10分,答錯之題目須 於結束時顯示;  減法:不可小減大  除法:(1)只能整除;(2)需輸入商和餘數