臺北市立大學 資訊科學系(含碩士班) 賴阿福

Slides:



Advertisements
Similar presentations
多元評量與 Greenfoot 簡介 南港高中高慧君. 演講大綱 多元評量 高中階段程式設計教學目標與困境 Greenfoot 快速入門 – 袋熊吃樹葉 – 沙灘螃蟹 Greenfoot 臺灣社群介紹 2.
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
計算機程式語言實習課.
四資二甲 第三週作業 物件導向程式設計.
向健康體位說 YES! 莿桐國中.
TQC+ 物件導向程式認證-JAVA.
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第三章 控制结构.
Chapter 5 迴圈.
程式設計實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
臺北市立大學 資訊科學系(含碩士班) 賴阿福
控制流程 邏輯判斷 迴圈控制.
分支 (selection,branch)概念再複習
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
Java程式概觀.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
程式撰寫流程.
類別(class) 類別class與物件object.
CHAP13 演算法概論 高中資訊科技概論 松崗圖書公司.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
實作輔導 4 日期: 4/21(星期六) 13:10~16:00、13:10~16:00
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
請大家準時上課.
邏輯關係運算 == 等於 & 且 (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基本语法 讲师:复凡.
JAVA 程式設計 資訊管理系 - 網路組.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
實作輔導 本周5/5(六)安排實作輔導 二時段: 周六 11:00~12:30 周六13:30~15:30.
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第二章 Java基本语法 讲师:复凡.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
JAVA 程式設計與資料結構 第三章 物件的設計.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
Programming & Language Telling the computer what to do
網頁設計第十二課.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

臺北市立大學 資訊科學系(含碩士班) 賴阿福 複習算術運算式、條件運算式 臺北市立大學 資訊科學系(含碩士班) 賴阿福

搶答Q1: debug int x=9, y=8, z; if (y=x+1) z=3; if (x-1=y+8) z=4;

搶答Q1: debug (answer) int x=9, y=8, z; if (y==x+1) z=3; if (x-1==y+8) z=4; int x=9, y=8, z; if (y==x+1) z=3; if (x-1==y+8) z=4; int x=9, y=8, z; if (y==x+1) { z=3; } if (x-1==y+8) { z=4; }

條件Q2:邏輯運算式 (立即搶答) if (nn>=100 && nn<=999) && : and (及) 符合條件數值範圍? If (nn>=100 || nn<=999) || : or (或)

條件Q3:邏輯運算式 (立即搶答) If (nn<100 || nn>999) 符合條件數值範圍? If (nn<100 && nn>999) If ( !(nn>=100 && nn<=999)) ! : not (反)

條件Q2/3:邏輯運算式 (answer) if (nn>=100 && nn<=999) && : and (及) 交集 符合條件數值範圍? 100<= nn <=999 If (nn>=100 || nn<=999) || : or (或) 聯集 符合條件數值範圍? unlimited If (nn<100 || nn>999) 符合條件數值範圍? 100~999之外 If (nn<100 && nn>999) 符合條件數值範圍? 無此 if (!(nn>=100 && nn<=999)) ! : not (反) 符合條件數值範圍? Same as (nn<100 || nn>999) 100 999

搶答Q4 int x , y , z = 5; x = y = z + 5; z = x + y + z; System.out.println("z = " + z);

搶答Q5 int x1 = 9, y1 = 8, z1 = 7; x1 = x1 % z1; if (x1 < 5) else y1 = y1 + 1; else y1 = x1 + 1; System.out.println("y1 = " + y1);

搶答Q6 x1 = 9; y1=8; z1=7; x1 = x1 % z1; if (!(x1<=5)) else y1 = y1 + 1; else y1 = x1 + 1; System.out.println("y1 = " + y1);

搶答Q7 int w=7, p = 4; x = 3; p = w / x * 2; if (p<18 && p>8) else x = (x*x)%2; else x = x % 3; System.out.println("x = " + x);

搶答Q8 w = 7; p = 4; x = 3; p = w / x * 2; if (p<18 || p>8) else x = (x*x)%2; else x = x % 3; System.out.println("x = " + x);

搶答Q9 w = 8; p = 6; x = 4; x++; //x = x + 1; if( w+1 == p+3) x=x+1; System.out.println("x = " + x);

搶答Q10 w = 8; p = 4; x = 2; x--; //x = x-1; if (w+1!=p+3) else x = x++; System.out.println("x = " + x);

Q4~Q10 Answer Please download test_if.java, compile & run Then try to revise and test

Assignment statement x=x+1; x=x-1; x++; x--; ++x; --x; x+=1; x-=1;

再談分支 (selection, branch) III 程式如何轉彎? 臺北市立大學 資訊科學系(含碩士班) 賴阿福

Review BMI診斷:分成三層次(簡化)

多分支流程圖 輸入身高(公尺) 可交換 輸入體重(公斤) 循序 SEQUENCE 計算BMI BMI<=18.5 False False True True 分支 (SELECTION) Status=“過輕” Status=“正常” Status=“過重” 印出status End

多分支流程圖 輸入身高(公尺) 輸入體重(公斤) SEQUENCE 計算BMI BMI<18.5 BMI<24 False True True 分支 (SELECTION) Status=“過輕” Status=“正常” Status=“過重” 印出status End

BMI診斷 完整BMI診斷需要分支? 流程圖如何畫?

猜數字遊戲 解題方法: 運用亂數函數(亂數類別)產生整數隨機數值 猜數字:讓使用者輸入數值 判斷答對與否,且輸出回饋信息

猜數字遊戲flow chart Nested if 產生整數隨機數值 輸入數值 No 輸入值等於亂數 yes No 輸入值大於亂數 印“猜對” yes 印“太大” 印“太小”

猜數字遊戲(1):運用亂數設計猜數字遊戲程式 多重分支 Multi-way if

產生1~100亂數 建立亂數類別SecureRandom之物件 ,再以此類別 nextInt函數(方法)產生1~100隨機整數 SecureRandom sr = new SecureRandom(); a = sr.nextInt(100)+1; new SecureRandom()以建立sr物件,再 用.nextInt(100)方法/method產生0~99隨機整數 sr.nextInt(100) +1 import java.security.SecureRandom; 如何產生10~90隨機整數?

猜數字遊戲(2):運用亂數設計猜數字遊戲程式 巢狀分支 Nested if

猜數字遊戲(3):運用亂數設計猜數字遊戲程式 巢狀分支 Nested if

不同分支,相同結果 多重Multi-way if 三個分支 巢狀分支Nested if

巢狀分支Nested if 第一層:二個分支 第二層:二個分支

猜數字遊戲之反思 目標: 讓初學者熟悉巢狀分支Nested if、多重分支 Multi-way if 邏輯變化 分支結構 缺點:無法讓使用者依據太大、太小的回饋訊息再 次輸入數字, 應重複直至使用者答對或不想玩。 Loop (迴圈) can do it

System.out.print("Please input a 3-digit decimal:"); Scanner ipt = new Scanner(System.in); int nn = ipt.nextInt(); int n1=nn%10; int n2=nn/10; System.out.print("You input nn="+nn+"; first digit="+n1+";"); System.out.println("higher digit="+n2);

判斷閏年(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 Not year被400整除 yes Not Year不被100整除 印“閏年” yes Not 印“平年” yes 印“平年” 印“閏年”

No year被400整除 ※ Yes 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)!";

迴圈(loop)概念 : 讓程式繞圈圈

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

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

猜數字遊戲 讓猜數字重複執行 猜到對為止 繼續猜 但何時結束? 結束條件 建立亂數類別SecureRandom之物件 以此類別nextInt函數(方法)產生1~100隨機整數 猜數字:讓使用者輸入數值 判斷答對與否,且輸出回饋信息

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

讓猜數字重複執行

程式與流程圖對應

import java. security. SecureRandom; import java. util 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 = 0; a = sr.nextInt(100)+1; while (b>0) { System.out.print("猜數字(1~100):"); b = input.nextInt(); if (a!= b) { //nested if if (a > b) System.out.println("猜的太小囉"); else System.out.println("猜的太大囉"); } //if else { System.out.println("恭喜猜對!\n"); }//else }//while }//main }//class 迴圈會執行? Why?

習題 習題2:輸入民國幾年,判斷該年是閏 年或平年,須能重複執行,直到輸入 年份為<=-100 正方形或長方形條件? 習題1:輸入矩形長、寬(整數)資料,求面積及邊長、判 斷為正方形或長方形,但須能重複執行,直到長或寬 輸入為<=0 正方形或長方形條件? 如何解決? 請規畫其過程 (解法)且畫流程圖 習題2:輸入民國幾年,判斷該年是閏 年或平年,須能重複執行,直到輸入 年份為<=-100