實作輔導 本周5/5(六)安排實作輔導 二時段: 周六 11:00~12:30 周六13:30~15:30.

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 程式.
项目6 通用堆栈.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第 5 章 流程控制 (一): 條件分支.
The discipline of algorithms
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第三章 控制结构.
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號出口)
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
Java程式概觀.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
程式撰寫流程.
實作輔導 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 一个编程实例
第 8 章 过程.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第一單元 建立java 程式.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
Week 2: 程式設計概念與 演算法的效能評估
《JAVA程序设计》 语音答疑 辅导老师:高旻.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
JAVA 程式設計 資訊管理系 - 網路組.
小學四年級數學科 8.最大公因數.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
if (j…) printf ("… prime\n"); else printf ("… not prime\n");
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

實作輔導 本周5/5(六)安排實作輔導 二時段: 周六 11:00~12:30 周六13:30~15:30

搶答!!

Q1 : 印出結果? int x=10, y=15; int s=0; while (x>y) { x--; while (x%2==1 && s<3) s++; } System.out.println("x="+x+"s="+s);

Q2 : 印出結果? x=10; y=15; s=20; for(;x>=5;x--) for(;y<=20;y++) s--; System.out.println("x="+x+"y="+y+"s="+s);

Self-regulated learning import java.util.Scanner; public class nested_looptest1 { static Scanner input = new Scanner(System.in); public static void main(String[] args) { int x=10, y=15; int s=0; while (x>y) { x--; while (x%2==1 && s<3) s++; } System.out.println("x="+x+"s="+s); x=10; y=15; s=20; for(;x>=5;x--) for(;y<=20;y++) s--; System.out.println("x="+x+"y="+y+"s="+s); }//main //x=10s=0 //x=4y=21s=14 }//class_loop1

迴圈LOOP應用 II 輾轉相除法 輾轉相減法 判斷迴文(palindrome): 複習 求兩個整數的最大公因數(greatest common divisor, GCD): II 輾轉相除法 輾轉相減法 字元金字塔 : Nested for loop

複習 palindrome迴文 2017/1/2 line

palindrome迴文 str1.length()==5 輸入字串 str1.length() :字串長度 輸入字串,判斷是否為迴文? 迴文 2017102 ABCBA ABBA 不是迴文 ABCBB 輸入字串 Scanner input = new Scanner(System.in); String str1 = input.nextLine(); str1.length() :字串長度 str1.charAt(i):取得字串第i個字元(character) i: 0~ str1.length()-1 A B C str1 str1.length()==5 i=0 i=1 i=2 i=3 i=4 str1.charAt(4) str1.charAt(0)

取得字串第i個字元(character)

輸入字串,判斷是否為迴文?奇數個字元為例 str1 A B C left=0;right=str1.length()-1; boolean palindrome=true; while (left<right) { if (str1.charAt(left)!=str1.charAt(right)) {palindrome=false; break;} left++; right--; }//while if (palindrome) dif="是迴文!“; else dif="不是迴文!"; System.out.println(+dif); // != 不等於 奇數個字元 Left=0; right=4:比較str1.charAt(0)、 str1.charAt(4) Left=1; right=3:比較str1.charAt(1)、 str1.charAt(3) Left=2; right=2:比較str1.charAt(2)、 str1.charAt(2) Left=3; right=1;  left >right  離開loop left right A B C str1

輸入字串,判斷是否為迴文?偶數個字元為例 str1 A B C left=0;right=str1.length()-1; boolean palindrome=true; while (left<right) { if (str1.charAt(left)!=str1.charAt(right)) {palindrome=false; break;} left++; right--; }//while if (palindrome) dif="是迴文!“; else dif="不是迴文!"; System.out.println(+dif); // != 不等於 偶數個字元 Left=0; right=5: 比較str1.charAt(0)、 str1.charAt(5) Left=1; right=4:比較str1.charAt(1)、 str1.charAt(4) Left=2; right=3:比較str1.charAt(2)、 str1.charAt(3) Left=3; right=2;  left >right  離開loop left right A B C str1

求兩個整數的最大公因數(greatest common divisor, GCD) :II 從2開始找, 直到能整除兩個整數的最大正整數 何時結束 (不會超過兩個整數的最小整數) 200, 40的GCD 輾轉相除法 (本回) 輾轉相減法 (本回) 最小公倍數(LCM): n1*n2/gcd

求兩個整數GCD的方法2: 輾轉相除法 輾轉相除法,又稱歐幾里得算法(Euclidean algorithm) 兩個整數的最大公因數(greatest common divisor)是能夠同時整除 它們的最大的正整數

求GCD(52,240) 52/240=0 ………………52 240/52=4………………..32 1 2 52 240 32 20 12 8 240 208 32 20 12 8 4 4 1 ①  ②52x4  ③  ④  ⑤  ⑥ 4*2 gcd

求兩個整數GCD的方法2: 輾轉相除法 gcd=m; 輾轉相除法,又稱歐幾里得算法(Euclidean algorithm) 兩個整數的最大公因數(greatest common divisor)是能夠同時整除它們的最大的正整數 int t,m,n; m=n1; n=n2; do { t=m%n; m=n; //除數變被除數 n=t; //餘數變除數 } while (n!=0); //除數不可為0 gcd=m; System.out.println("輾轉相除法: GCD("+n1+","+n2+")="+gcd); System.out.println("輾轉相除法: LCM("+n1+","+n2+")="+n1*n2/gcd);

求GCD(52,240) do { t=m%n; m=n; n=t; gcd } while (n!=0); gcd=m; 52 240 輾轉相除法 步驟 M (被除數) N (除數) t=m%n (取餘數) m=n(除數變成被除數) n=t(餘數變成除數) 條件 (n!=0) (1) 52 240 n=240 n=52 true (2) 32 (3) 20 (4) 12 (5) 8 (6) 4 (7) t=8%4 ==0 m=4 n=0 False 結束loop GCD=4 52 240 32 20 12 8 208 4 1 2 ①  ②52x4  ③  ④  ⑤  ⑥ 4*2 gcd do { t=m%n; m=n; n=t; } while (n!=0); gcd=m;

步驟 m (被減數) n (減數) m=m-n n(減數不變) 條件 (m!=n) (1) 240 52 188 m>n true (2) 136 (3) 84 (4) 32 n=n-m m(減數不變) (5) 20 m<n (6) 12 (7) (8) 8 (9) 4 (10) False 求兩個整數GCD的方法3: 輾轉相減法 m=n1; n=n2; while (m!=n) { while (m>n) m=m-n; while (m<n) n=n-m; } gcd=m; // gcd=n; GCD=4

求兩個整數GCD的方法3: 輾轉相減法 m=n1; n=n2; while (m!=n) { while (m>n) m=m-n; while (m<n) n=n-m; } gcd=m; System.out.println("輾轉相減法: GCD("+n1+","+n2+")="+gcd); System.out.println("輾轉相減法: LCM("+n1+","+n2+")="+n1*n2/gcd+"\n");

檢討GCD方法 求兩個整數GCD的方法: 從2開始找, 直到能整除兩個整數的最大正整數 輾轉相除法 輾轉相減法 2~min(n1,n2)==min(n1-1, n2-1) 輾轉相除法 輾轉相減法 那些較好?那些暴力法(brute force)? 速度快

Demo: GCD的方法2

字元金字塔 Nested for loop

主題:字元金字塔 - 斜金字塔 利用迴圈印出 「 * 」,逐行增 加印出個數,直到印出7層斜 金字塔。 本題利用到巢狀迴圈的概念 巢狀迴圈為迴圈範圍內又有迴 圈,從外層來看,內層迴圈只 屬與外層迴圈內的動作。因此 外層迴作用,內層迴圈開始運 作到執行結束後,又回到外層 迴圈。 執行結果

主題:字元金字塔 - 斜金字塔 追蹤nested for loop程式 外層 i 內層 j 初值 條件 j<=i 執行次數 結果 內迴圈執行1次 印1顆*、換行 i=2 j<=2 內迴圈執行2次 印2顆*、換行 i=3 j<=3 內迴圈執行3次 印3顆*、換行 i=4 j<=4 內迴圈執行4次 印4顆*、換行 i=5 j<=5 內迴圈執行5次 印5顆*、換行 i=6 j<=6 內迴圈執行6次 印6顆*、換行 i=7 j<=7 內迴圈執行7次 印7顆*、換行 i=8,外迴圈結束 執行結果

輸入n層, 印出n層三角形 (3層loop)

第11周習題: 輸入n1, n2, n3,求三整數之GCD 須能重複執行 繳交”設計歷程”檔及.java