Presentation is loading. Please wait.

Presentation is loading. Please wait.

實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)

Similar presentations


Presentation on theme: "實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)"— Presentation transcript:

1 實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口) 公誠樓三樓 G315 電腦教室(資訊科學系(含碩士班)) 可自行攜帶筆電 目標:協助習題、安裝java 環境、path設定 下次預定: 3/24(星期六)、4/14(星期六)09:10~16:00

2 搶答I 負責編譯(compile)Java程式為? 你所編寫Java的來源程式副檔名?

3 搶答I 負責編譯(compile)Java程式為? Javac.exe 你所編寫Java的來源程式副檔名? java

4 搶答II 若a1.java編譯成功,會產生的檔案為何? 執行Java編譯成功檔案的程式名稱? 如何執行上述1編譯成功之檔案? Java的主程式名稱?

5 搶答II 若a1.java編譯成功,會產生的檔案為何? a1.class 執行Java編譯成功檔案的程式名稱? Java.exe 如何執行上述1編譯成功之檔案? Java a1 Java的主程式名稱? main

6 臺北市立大學 資訊科學系(含碩士班) 賴阿福
輸出、輸入、變數 循序敘述 臺北市立大學 資訊科學系(含碩士班) 賴阿福

7 複習第1支程式

8 學習程式之觀念 漸進式學習 From unclear to clear 不用全部學完語法再開始程式設計 從基本功能進化、優化
不可能一步登天 從基本功能進化、優化 養成規劃、設計習慣 不要怕出現Bug 思考、動手寫程式

9 第1支程式回顧 import java.util.*; //匯入類別/函數庫 public class welcomea{
類別名稱,Class name,一定與主檔案名稱相同 主程式名稱(固定) import java.util.*; //匯入類別/函數庫 public class welcomea{ public static void main(String args[]){ System.out.println(“Java is an excellent computer language.”);//輸出 System.out.println(“Let‘s start to learn Java!”); }//main() }//class 主程式之引數 敘述以分號結束 println之引數, 現為字串常數 System.out: 標準輸出設備,即螢幕 println:輸出/顯示之函數/方法,ln: Line,即顯示後游標跳到下行(換行) 註解

10 輸出 : 換行(二種方式) 或 不換行 \n :Escape 字元,new line,即換行 \n\n : 換行二次
System.out.println(“Drink Java coffee!”);//換行 System.out.println(“excellent .”);//不換行 相同 System.out.print (“Drink Java coffee\n”); //不換行變換行 System.out.println(“excellent .”); \n :Escape 字元,new line,即換行 \n\n : 換行二次

11 程式出現錯誤,如何是好? Error(錯誤)! Bug(臭蟲)! Debug(抓臭蟲)

12 Error! Bug! debug include java.util.*; public Class welcome{ public static void main(String args[]){ System.out.println("Java is an excellent computer language.") System.out.println("Let's start to learn Java!"); } }//class include: import Class: class ;

13 debug(偵錯)

14 何謂偵(抓)錯(debug)?語法(syntax)˴語意(semantic)錯誤?
指的是句子文法上的錯誤 我是學生  我學生是 Compiler可抓到語法錯誤 語意(semantic)錯誤? 指的是句子意思上的錯誤 求矩形面積 Area=(Length+width)*2; Compiler抓不到語意錯誤

15 Debug抓錯蟲 import java.util.*; /匯入函數庫 public class 9welcomea{
public static void Main(String args[]){ system.Out.println(“Java is an excellent computer language.);/輸出 system.Out.println(‘Let's start to learn Java!’) }/main() }/class

16 輸出、輸入敘述 (input & output)

17 輸出目的?可輸出何種資料? 輸出目的? 輸出裝置?輸出到電腦哪裡? 可輸出資料類型: 傳送訊息(如回饋、分析結果)給操作者
提示訊息: 輸入資料時 輸出裝置?輸出到電腦哪裡? 螢幕(CRT、LCD)、喇叭、 可輸出資料類型: 文字介面: 文字:字串(string)、數值(numerical data) System.out.println(“Let‘s start to learn Java!”); 圖形介面: label物件 聲音 圖形 動畫 震動

18 不能只有輸出,也要有輸入 :互動(interaction) 第2支程式
Hello, digital native! 文字輸出 輸出裝置? 輸入 從何裝置輸入?keyboard、mouse、觸控平板、joystick、microphone

19 從keyboard裝置可輸入何種資料? 可輸入資料類型: 文字:字串(string) 數值(numerical data)
整數: integer 小數:浮動點 (floating point ) 單精度float 倍精度Double 輸入後放電腦哪裡?

20 輸入後放電腦哪裡? 輸入目的? 放電腦哪裡?? 要處理、分析、計算、判斷 主記憶體:RAM 程式設計師如何取用處理? 如同人的腦部
容量??:可能有8G(=230)byte(位元組) 位元組:1位元組可存放一個英文字 主記憶體以位址管理,非常複雜 COMPILER為便於程式設計師管理,因此以英文名稱取代主記憶 體位址,即變數名稱 程式設計師如何取用處理? 利用輸入指令/敘述/物件 輸入後放在主記憶體:放在指定變數 (程式設計師不用管真正位址)

21 Second program :鍵盤輸入 import java.util.*; public class welcome_c{ public static void main(String args[]){ System.out.print("Please input your name:"); Scanner sca = new Scanner(System.in);//產生Scanner物件, 提供鍵盤輸入 String name = sca.next(); //運用next方法/函數讀取輸入資料,再放入name變數 System.out.println("welcome "+name+"!!"); //字串連結 }//main() }//class

22 Second program:程式概念 Scanner sca = new Scanner(System.in);
Scanner :類別 (class) Scanner原意為掃描器,代表輸入 new Scanner(): 產生Scanner物件, 可提供鍵盤輸入 System.in: 標準輸入設備,即鍵盤 sca: new之後,sca是Scanner物件(object), sca是物件名稱 String name = sca.next(); //sca物件的(.)next方法或nextLine 運用next方法/函數讀取輸入資料,再放入name變數 =是指定運算符號,將右邊處理或運算結果指定給左邊變數 (next方法/函數讀取資料,放入name變數) String 是一種變數型態,即字串變數,用以存放文字資料 System.out.println("welcome "+name+"!!"); +: 字串連結,字串常數與字串變數連結 “12”+”34”字串連結變成”1234” ,不是”46” int result=12+34; //+:算數運算,加法結果放入result數

23 比較: 字串連結、加法運算 “12”+”34” 字串連結(concatenation, combining)
結果變成”1234” ,不是”46” 12+34 +:算數運算 加法結果46 int result=12+34; 加法結果放入result數

24 多輸入 import java.util.*; public class welcome_D{ public static void main(String args[]){ Scanner input = new Scanner(System.in);//產生Scanner物件 System.out.print("Please input your name:"); String name = input.next(); System.out.print("Please input your age:"); int age = input.nextInt(); System.out.println("Nice to meet you, "+name+"!!"); System.out.print("\n你的年齡: "+age+5+"歲."); age=age+5;//指定、指派、set敘述 System.out.print("\n五年後你的年齡: "+age+"歲."); }//main() }//class

25 CAT name Input (Scanner 物件) input.next(); input.nextInt(); 12 age

26 變數 (variable) 記憶體代言人

27 變數(Variable)? 為了提供還不錯的、有用的功能,程式必須能記得住事 情。 想想看,如果你不能記得任何事情你要如何過生活。
如果你要把兩個數字相加,你必須記得這兩個數字才能相加, 然後你必須記得結果才能在處理其他事情時使用它。 電腦用變數來記憶資料,他們之所以叫做變數是因為他 們的值是可變的。 你可以把變數想像成有不同名稱在上面的信箱:信箱裡面裝的 東西叫做變數的內容。 變數的名稱必須遵守一些規則。 首先他們的第一個字必須是英文字母A到Z,然後可以接著字母 或數字的任意組合。 可以結合大寫和小寫字母。 要小心的是電腦對待大小寫字母的看法比你更仔細,如java及 所有C-like語言把TIME、time、Time當作不同的變數。 變數的型態(data type) String, int, double… 為何需要不同型的態變數

28 為何變數要宣告型態的理由:不同型態的變數
人的腦袋非常靈活可變,可處理各種不同型式的 資料,看到「在9:00見面」、「32」或「2.5」就 知道該如何處理它。 電腦不像人那樣精明,它要正確地知道該處理什 麼型式的資料。這就是為何變數要宣告型態的理 由。

29 變數 (variable) 變數代表一塊記憶體 如何將資料放入到記憶體? 如何從記憶體取出資料 如何為記憶體取名? 100
每一塊記憶體都有位址,但不可能記得起來, 因此用英文字來替代記憶體 如何將資料放入到記憶體? 指定/派敘述(assignment statement) sum=100; sum=p+10; sum=sum+70; //取出sum,加70,再放入sum 如何從記憶體取出資料 printf(“%d”, sum); //取出sum System.out.println(sum);//取出sum 如何為記憶體取名? 分大小寫 英文開頭 有意義名字 Sum 100 p RAM

30 變數的名稱不合法invalid?合法valid?
Date DATE date TimeOfDay yr1991 AbCdEfGhiJ i2 Stats_1981 Total_Cost even_ 1981stats The%Given The+Given Total Cost * A+b-c 不合法 合法

31 不同變數的名稱: 下面是合法的: Date DATE date TimeOfDay yr1991 AbCdEfGhiJ i2 Stats_1981 Total_Cost even_

32 下面是不合法的: 1981stats (開始不可以是數字) The%Given (中間不可有%) The+Given (中間不可有+) Total Cost (中間不可有空隔) * (開始不可以是*符號) A+b-c (中間不可有+)

33 數值型態numeric data type 整數integer: 浮動點floating point : 小數點,採用IEEE 754格式
正負 Byte, short, int, long 浮動點floating point : 小數點,採用IEEE 754格式 不同型態可表示數值範圍不同,占用RAM空間不同 型態名稱都是keyword /reserved word 整數 型態名稱 值域(Range) 貯存空間 byte –27 to 27 (–128 to 127) 8-bit signed short –215 to (–32768 to 32767) 16-bit signed int –231 to (– to ) 32-bit signed long –263 to 263 (– to ) 64-bit signed 浮動點 float Negative range:– E+38 to –1.4E – 45 Positive range: 1.4E – 45 to E + 38 32-bit IEEE 754 double Negative range:– E+308 to –4.9E–324 Positive range: 4.9E–324 to E+308 64-bit IEEE 754

34 計算BMI

35 BMI說明 身體質量指數 Body Mass Index,簡稱BMI 世界衛生組織建議以BMI來衡量肥胖程度
出處:衛生福利部國民健康署 健康九九網站

36 BMI程式一: 只計算BMI 解析: 了解問題、規劃、程式設計 (1) 讓使用者輸入身高、體重;先取二者變數名稱
(2) 計算BMI(算術運算式):結果之變數名稱及型態、 指定敘述(assignment statement) (3) 輸出BMI 更熟悉java程式結構

37 BMI程式一流程圖 (flow chart)
程式開始 輸入身高 循序(sequence) 輸入體重 單位轉換(身高cm -> m) 計算BMI 輸出BMI 結束程式

38 只計算BMI import java.util.Scanner; public class BMI_1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print(“輸入身高(公尺):”);//提示訊息 double height = input.nextDouble();//讀取浮動點資料(double) System.out.print("輸入體重(公斤):"); double weight = input.nextDouble(); double bmi = Math.round((weight/ (height*height) )* 100) / ; System.out.println("身高:"+height+"公尺, 體重:"+weight+"公斤"); System.out.println("BMI:"+bmi); }//end of main }//end of class

39 浮動點之小數位數 double bmi = weight/ (height*height);
double bmi = Math.round((weight/ (height*height) )* 100) / ;

40 輸入整數資料及整數變數 int nn = ipt.nextInt(); int n1=nn%10; int n2=nn/10; 輸入整數資料
運用nextInt方法讀取使用者所輸入整數資料,再放入 nn整數變數 int :是一種變數型態,用以存放整數資料(integer) int n1=nn%10; 求得除以10之餘數 int n2=nn/10; 求得除以10之商

41 習題 習題2:輸入矩形長、寬(整數)資料,求面 積及邊長 習題1:輸入三位整數資料,進行位數翻轉且顯 示結果
如輸入789,顯示翻轉結果為987 先假設一定會輸入三位整數 如何解決? 請規畫其過程 (解法) 熟悉運算式及其應用 習題2:輸入矩形長、寬(整數)資料,求面 積及邊長

42 未完成之程式 import java.util.*; public class input_int{ public static void main(String args[]){ System.out.print("Please input a 3-digit decimal :"); Scanner ipt = new Scanner(System.in);//產生Scanner物件 int nn = ipt.nextInt(); //讀取整數(integer)資料 int n1=nn%10; //求餘數 int n2=nn/10; //除法 System.out.print("You input nn="+nn+"; first digit="+n1+";"); System.out.println("higher digit="+n2); }//main() }//class

43 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);

44 為何需要類別/ 函式庫(Library)/package?
站在巨人肩膀 有些程式細節非常複雜如Input/Output、圖形之 細部工作,因此必須會提供系統函數,讓設計者 直接引用 import java.util.*; *代表萬用(全部)Wildcard import Scanner class就在java.util package import java.util.Scanner; Specific import c語言用include

45 從循序到分支 程式會轉彎

46 判斷體位是否標準? 健康體位 不標準體位 選擇/分支 (selection)
BMI>=18.5 && BMI<24 選擇/分支 (selection) False if (BMI>=18.5 && BMI<24) System.out.print("健康體位 Normal\n\n"); else System.out.print("不標準體位\n\n"); //source file: BMI-2a True 健康體位 不標準體位

47 BMI診斷分成二層次 if (bmi>=18.5 && bmi < 24) status = "正常Normal"; else
import java.util.Scanner; public class BMI_2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("輸入身高:"); double height = input.nextDouble(); System.out.print("輸入體重:"); double weight = input.nextDouble(); double bmi = Math.round((weight/ (height*height) )* 100) / 100.0; String status; if (bmi>=18.5 && bmi < 24) status = "正常Normal"; else status = "不標準體位"; System.out.println("BMI:"+bmi+",狀態: "+status); }//main }//class

48 將BMI診斷分成三層次(簡化)

49 未輸入三位整數時:從循序到分支 (nn>=100 || nn<=999) 複合敘述compound statements
import java.util.*; public class input_int_a{ public static void main(String args[]){ System.out.print("Please input 3-digit decimal:"); Scanner ipt = new Scanner(System.in);//產生Scanner物件 int nn = ipt.nextInt(); if (nn>=100 && nn<=999) { //compound statements int n1=nn%10; int n2=nn/10; System.out.print("You input nn="+nn+"; first digit="+n1+";"); System.out.println("higher digit="+n2); } else System.out.println(“你輸入資料不是三位數!!”); //單一敘述single statement }//main() }//class (nn>=100 || nn<=999) 複合敘述compound statements

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

51 作業 將BMI診斷分成六層次

52 再談指定/派敘述 = (assignment statement)
何者正確? X+1=y-2; If (X+1=y-2) ….. If (X+1==y-2) ….. X=y; If (X=y) …. If (X==y) …


Download ppt "實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)"

Similar presentations


Ads by Google