Language Basics Lecturer: 曾學文.

Slides:



Advertisements
Similar presentations
第四章 类、对象和接口.
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一單元 建立java 程式.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
JAVA 程式設計 資訊管理系 - 網路組.
本章大綱 2-1、程式、程式語言、程式架構 2-2、變數與資料型態 2-3、常數 2-4、 運算式、運算子和運算元
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第三章 控制结构.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
Visual C++ introduction
物件導向程式設計 (Object-Oriented rogramming)
第二章 C# 基础知识.
Classes Lecturer: 曾學文.
實作輔導 日期: 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.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C語言簡介 日期 : 2018/12/2.
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
類別(class) 類別class與物件object.
C 語言簡介 - 2.
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
JAVA 程式設計 資訊管理系 - 網路組.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
變數命名 保留字(Reserved Word)
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
Java 程式設計 講師:FrankLin.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
第一單元 建立java 程式.
第三章 C# 基础知识.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第二章Java基本程序设计.
第三课 标识符、关键字、数据类型.
JAVA 程式設計 資訊管理系 - 網路組.
CH05. 選擇敘述.
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
Review 1~3.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第五章 運算關係式(Expression).
JAVA 程式設計與資料結構 第三章 物件的設計.
變數、資料型態、運算子.
第2章 Java语言基础.
第6章 PHP基本語法介紹.
Programming & Language Telling the computer what to do
判斷(選擇性敘述) if if else else if 條件運算子.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
C语言基本语句 判断循环.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
Summary
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Language Basics Lecturer: 曾學文

Outline 變數 Variables 運算子 Operators 運算式(Expressions)、敘述(Statements)與程式區塊(Blocks) Your Turn 程式流程 Control Flow Statements Decision making statement if-else statements switch statements

變數 Variables 定義 變數宣告(Declaration) 範例: int x = 6; double y; 儲存資料的單位 每個變數都有各自的名稱(name)與資料型態(data type) 變數宣告(Declaration) 意義:告知電腦我的程式要使用變數,請配置記憶體以供存放。 變數必須在第一次使用前宣告! 語法:DataType VarName [= InitialValue]; 範例: int x = 6; double y;

變數 Variables 基本資料型態(Primitive Data Types) byte short int long float 型態名稱 大小 / 格式 範圍 說明 整數型態 負數: 二進位數型態首位為1時(11110111 → 先減1 → 11110110 → 取補數 → 00001001 → 9 → 真正的值 → -9) byte 8 bit / 二補數方式 -128 ~ 127 位元組整數 (Byte Integer) short 16 bit / 二補數方式 -32768 ~ 32767 短整數 (Short Integer) int 32 bit / 二補數方式 -2147483648 ~ 2147483647 整數 (Integer) long 64 bit / 二補數方式 -9223372036854775808 ~ 9223372036854775807 長整數 (Long Integer) 實數型態 (以近似表示任意某個實數;a = m * be) float 32 bit / IEEE 754 格式 七位小數 單精度浮點數 double 64 bit / IEEE 754 格式 十五位小數 雙精度浮點數 其它型態 char 16 bit / Unicode 格式 \u0000 ~ \uffff (0 ~ 65535) 字元 boolean true / false true, false 布林值

變數 Variables 變數宣告完畢後可以給定初值。 給初值的方法: int x; x = 7; int x = 7; int x = 7, y; y=x; x y 記憶體

變數 Variables 變數初始值(Initialization) 型態名稱 初值設定 整數型態 byte byte x = 3; short short x = 3; int int x = 3; long long x = 3L; 實數型態 float float x = 1.234F; float x = 1.234e-4F; double double x = 1.234; double x = 1.234D; double x = 1.234e-4; double x = 1.234e-4D; 其它型態 char char x = ‘a’; boolean boolean x = true;

變數 Variables 溢位(Overflow) Example: IntOverflow.java 一種當數值超過資料型態範圍的錯誤 int int_i = Integer.MAX_VALUE; System.out.println("int_i= " + int_i++);

變數 Variables 變數存取型態 基本型態(Primitive Type)- 直接存取 整數、浮點數、字元、或布林值 參考型態(Reference Type)- 間接存取 由物件所組成的型態

變數 Variables 基本型態與參考型態在記憶體中的不同 基本型態 參考型態 x 38 0x1234 s 0x5678 0x1234 int x = 38; 參考型態 String s; x 38 0x1234 s 0x5678 0x1234 0x5678 此變數資料 存放之位置

變數 Variables 變數參考型態(Reference Data Type) Class 內含各種屬性,方法,事件。也就是說,可以是任何基本型態的組合。 Interface 類似 Class,但是所有屬性,方法,事件都沒有實作的程式碼,只是一個空殼子。 Array 可以是一群相同型態的集合。如:整數陣列就是一群整數的集合。

變數 Variables 變數名稱 大小寫不同,可用 A-Z, a-z, 0-9, _ (底線), $,長度不限制 第一個字不可以是數字。 不能是關鍵字(keyword)或稱保留字 (null)、布林字(true、false)命名慣例 變數名稱以小寫開頭,類別名稱由大寫開頭 如果名稱由不同字組成,必須將字組相連,建議後面字的首字元大寫,例:myParameter 常數(constant)通常全部大寫,且使用底線(_)分開字組,例:CURRENT_USER_NUM

變數 Variables 關鍵字 Java 保留給本身所使用的文字,也有人稱為 “保留字” (Reserved Words) Keyword: abstract default if private this boolean do implements protected throw break double import public throws byteelse instanceof return transient case extends int short try catch final interface static void char finally long strictfp volatile class float native super while const for new switch continue goto package synchronized

變數 Variables 常數 語法:final DataType VarName = InitialValue; 若程式欲更改 final 變數的值將造成編譯時期錯誤(compile-time error) 範例: final double PI = 3.1416; PI = 2.345; // 會發生錯誤,因為 PI 是常數

變數 Variables 轉換變數型態 型態相容時 型態不相容時 相容時,Java 會自動加以轉換 int a; long b = a; (相容會自動轉換) 型態不相容時 兩種不相容的型態要轉換,必須使用強制轉換 語法: (target-type) value b = (byte) a; (縮小轉換)- 將會被縮減成byte範圍的餘數 char x = (char) 65;

變數 Variables 變數有效範圍(Scope) 變數有效範圍 = 宣告處 ~ 所屬下大括號為止 主類別 方法 例外處理 class HelloWorld { int x; public static void Count (int x) { … catch (int x) { } 主類別 方法 例外處理 成員變數 方法參數 區域變數 例外處理器參數

變數 Variables

變數 Variables Example: Area.java  /* 程式目的: 計算圓的面積 */ public class Area { public static void main (String args []) { final double PI = 3.1416; //pi,近似值 double r, area;     r = 10.8; //圓的半徑     area = PI * r * r; //計算面積     System.out.println(“Area of circle is: ” + area); } }

運算子(Operators) 運算子可對一個、兩個或三個運算元(operands)執行動作 依照所需的運算元數目,可分為 一元運算子(unary operator),例:a++、--a 二元運算子(binary operator),例:a = 2 三元運算子(ternary operator),例:(x>0) ? x-1 : (x+1) 依照運算子擺放位置,可分為 前置(prefix)運算子:運算子擺放在運算元之前,例:++i 後置(postfix)運算子:運算子擺放在運算元之後,例:i++ 中置(infix)運算子:運算子擺放在中間,例:a + b 運算子執行動作後將回傳值,其值之型態視運算元而定

運算子(Operators) 算術運算子(Arithmetic Operators) 單一運算子 用法 說明 + + X 正 X - – X 二元運算子 用法 說明 + X + Y X 加上 Y - X – Y X 減去 Y * X * Y X 乘以 Y / X / Y X 除以 Y % X % Y 取 X 除以 Y 的餘數

運算子(Operators) 算術運算子(Arithmetic Operators) 前置式:加 / 減後再取用變數 單一增減運算子 用法 說明 ++ (前置式) ++X X = X +1 -- (前置式) -- X X = X -1 (後置式) ++ X++ (後置式) -- X-- 前置式:加 / 減後再取用變數 後置式:取用變數後再加 / 減 X = 3; System.out.println(X++); System.out.println(X); X = 3; System.out.println(++X); System.out.println(X)

運算子(Operators) Example: PrefixPostfix.java x = 3; System.out.println("Before Prefix X = " + ++x); System.out.println("After Prefix X = " + x); System.out.println("Before Postfix X = " + x++); System.out.println("After Postfix X = " + x);

運算子(Operators) 指定運算子(Assignment Operators) 功能:將運算完的結果指定給另外一個變數保存起來 用法 相當於 = X = Y += X += Y X = X + Y -= X -= Y X = X – Y *= X *= Y X = X * Y /= X /= Y X = X / Y %= X %= Y X = X % Y

運算子(Operators) 位元運算子(Bit Operators) 功能:將數字拿來作一個 bit 一個 bit 的運算。 TruthTable.txt 位元運算子 用法 功能 & X & Y X 與 Y 以 bit 為單位,做 AND 運算 | X | Y X 與 Y 以 bit 為單位,做 OR 運算 ~ ~ X X 做補數運算 ^ X ^ Y X 與 Y 以 bit 為單位,做 XOR 運算 >> X >> Y 將 X 向右移動 Y 個位元 << X << Y 將 X 向左移動 Y 個位元 >>> X >>> Y 將 X 向右移動 Y 個位元,不含正負號

運算子(Operators) 位元運算子加上指定運算子 指定運算子 用法 相當於 &= X &= Y X = X & Y |= X |= Y ^= X ^= Y X = X ^ Y >>= X >>= Y X = X >> Y <<= X <<= Y X = X << Y >>>= X >>>= Y X = X >>> Y

運算子(Operators) 關係運算子 Relational Operators 功能:比較兩個變數的大小。比較的結果是一個布林值 (true / false) 關係運算子 用法 傳回 true 的條件 < X < Y X 小於 Y <= X <= Y X 小於等於 Y == X == Y X 等於 Y != X !=Y X 不等於 Y >= X >= Y X 大於等於 Y > X > Y X 大於 Y

運算子(Operators) 條件運算子(Conditional Operators) 功能:將兩個條件合併起來的運算子,運算結果仍為布林值。 條件運算子 用法 傳回 true 的條件 && X && Y X 與 Y 必須同時為 true X, Y不一定進行求值 || X || Y X 與 Y 之一為 true 即可 ! ! X X 為 false

檢查 X 是否為 Y 的個體 (Instance) 運算子(Operators) 其他運算子 其它運算子 用法 功能 ? : X ? Y : Z 如果 X 為 true,傳回 Y 如果 X 為 false ,傳回 Z [] a[0] 用來存取陣列元素 . Object.Property 用來存取物件內的屬性或方法 (參數, 參數, …) f(X, Y, Z) 用來接收一系列的參數 (型態) (int) 3.5F 將某數值強制轉型 new new Object 建立物件或陣列 instanceof X instanceof Y 檢查 X 是否為 Y 的個體 (Instance)

運算子(Operators) ? : 語法:op1 ? op2 : op3 唯一的三元運算子 簡略的 if-else 敘述 例:(x>0) ? (x-1) : (x+1) 即 if (x > 0) return x-1; else return x+1;

運算子(Operators) 運算子優先權 高 運算子分類 運算子 分隔運算子 () [] {} , . 單一運算元 () [] {} , . 單一運算元 ++ -- + (正號) - (負號) ~ ! 建造 / 轉型運算子 new (type)expr 乘除 * / % 加減 + - 位移運算子 << >> >>> 關係運算子 < <= => > instanceof 相等運算子 == != 高

運算子(Operators) 運算子優先權 低 位元 AND & 位元 XOR ^ 位元 OR | 邏輯 AND && 邏輯 OR || 條件運算子 ? : 指定運算子 = += -= *= /= %= &= ^= |= >>= <<= >>>= 低

Expressions、Statements & Blocks 範例 int x = 3 * 4 – 1; double y = -100 / x; ambiguous vs. unambiguous 擅用括號避免曖昧不明(ambiguous)的運算式 例如: x + y / 100 (x + y) / 100 x + (y / 100) 運算子 3 * 4 運算元

Expressions、Statements & Blocks 類似人們說話的語言( natural language ) 敘述由多個運算式構成一個完整的執行動作,並以分號(;)作結尾 下列運算式可構成敘述 Assignment Expressions,例:a = 2; Any Use of ++ or --,例:a++; Method Calls,例:System.out.println(“Hi!”); Object Creation Expressions,例:Integer intObject = new Integer(4);

Expressions、Statements & Blocks 除了由運算式構成,另有兩種敘述 Declaration Statement,例:int x = 2; Control Flow Statement 程式區塊 Blocks 由大括號包覆,且內含零個以上的敘述 例: if (a > 2) { … }

Your Turn Practice 請撰寫一程式,輸入姓名、身高、體重,您的程式會計算出身材比例係數。 身材比例係數公式為:(體重Kg)/(身高m)2。 鍵入“java SlimBody Tsai 172 68” 印出 “Tsai 的身材比例係數為 22.9853…”

Your Turn Hint: SlimBody.java 參數讀取範例 String name = args[0]; double height = Double.parseDouble(args[1]); public class SlimBody { public static void main ( String[] args ) { … }

程式流程 循序結構 程式敘述

程式流程 選擇結構 如:if-else, switch 程式敘述 條件

程式流程 重複結構 前測式,如:for, while 程式敘述 條件 false true

程式流程 重複結構 後測式,如:do-while 程式敘述 條件 false true

程式流程 呼叫方法時 … Rubby.start(); Lisa.start(); public void run(){ … } 控制權會轉換 … Rubby.start(); Lisa.start(); public void run(){ … } public void run(){ … }

Control Flow Statements Why do we need control flow statements? Control Flow Statements

Control Flow Statements – if-else if/else statements 語法: 使用 ? : 運算子代替簡單的 if-else 較複雜的情況,我們常使用巢狀 if-else 敘述 if (expression){ statements… } else if (expression){ … else{

Control Flow Statements – if-else 例如: 如果 (考試成績 < 60) 印出 “你不及格” 印出 “糟糕!” 否則 印出 “你及格了” 在 Java 中 if (Score < 60) { System.out.println (“你不及格”); System.out.println (“糟糕!”); } else { System.out.println (“你及格了”);

Control Flow Statements – if-else 結合關係運算子 功能:比較兩個變數的大小。比較的結果是一個布林值 (true / false) if (x <= y) … 關係運算子 用法 傳回 true 的條件 < X < Y X 小於 Y <= X <= Y X 小於等於 Y == X == Y X 等於 Y != X !=Y X 不等於 Y >= X >= Y X 大於等於 Y > X > Y X 大於 Y

Control Flow Statements – if-else 結合條件運算子 功能:將兩個條件合併起來的運算子,運算結果仍為布林值。 if((x<y) && (y < z)) … if((x<y) || (y < z)) … 條件運算子 用法 傳回 true 的條件 && X && Y X 與 Y 必須同時為 true X, Y不一定進行求值 || X || Y X 與 Y 之一為 true 即可 ! ! X X 為 false

Control Flow Statements – if-else 定義: if-else 之內還夾了別的 if-else 範例:以下的例子就需要用到巢狀 if-else if 90 分以上同學印出 “Grade A” else if 80 分以上同學印出 “Grade B” else if 70 分以上同學印出 “Grade C” else if 60 分以上同學印出 “Grade D” else 60 分以下同學印出 “Grade F”

Control Flow Statements – if-else Example: Grading.java public class Grading { public static void main (String[] args) { int Score = Integer.parseInt(args[0]); if (Score >= 60) System.out.println (“pass!"); else System.out.println (“fail!"); }

Control Flow Statements – if-else Example: Age.java public class Age { public static void main (String[] args) { int x = Integer.parseInt(args[0]); if(x>=20 && x<=29) System.out.println("二年級"); else if(x>=30 && x<=39) System.out.println("三年級"); else System.out.println("四年級"); }

Control Flow Statements – switch-case switch statement 適用場合:多重if-then-else敘述 case 文數字: case 後方只能接字元或整數 如:case 1: 或 case ‘a’: 不可填入一個範圍 break; break 指令可以阻止程式繼續往下執行,並跳出整個 switch-case 結構 switch(expression){ case value1: statements… break; case value2: … default: }

Control Flow Statements – switch-case Example: SwitchDemo.java switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; … case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Not a month!"); break; }

Control Flow Statements – switch-case Example: GetMonthDays.java public class GetMonthDays { public static void main (String[] args) { int Year = Integer.parseInt(args[0]); int Month = Integer.parseInt(args[1]); switch (Month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("31 days"); break; 執行:java GetMonthDays 2004 10 結果:31 days

Control Flow Statements – switch-case case 11: System.out.println("30 days"); break; case 2: if ( ((Year%4 == 0) && (Year%100 != 0)) || (Year%400 ==0) ) System.out.println("29 days"); else System.out.println("28 days"); } // end of switch } // end of main method }

Your Turn Basic Practice 請製作一個程式,輸入身高與體重,並告知是否合乎身材比例,例如,170公分65公斤重, 輸入:java SlimBody2 170 65 輸出:下列四者之一 體重kg / (身高m)2 < 18.5  過輕 18.5<= 體重kg / (身高m)2 <24  標準體重 24 <= 體重kg / (身高m)2 < 27  過重 BMI 體重kg / (身高m)2 > 27  肥胖 (注意:身高在公式中的單位為公尺)

Your Turn Hint: SlimBody2.java public class SlimBody2 { public static void main(String[] args) { … // 肥胖 System.out.println("You are too fat!!"); // 過重 System.out.println("You are over weight."); // 標準體重 System.out.println("Good Shape! Keep going!"); // 過輕 System.out.println("Poor baby! Don't you eat something?"); }

Your Turn Advanced Practice 請寫出一個程式讀入三個整數,找出最大和最小的數。 例如,java Compare 25 23 67 輸出:最大67; 最小23 例如,java Compare 54 43 21 輸出:最大54; 最小21

Your Turn Hint: Compare.java 慢的版本 if(a>b && b>c) system.out.println(“Max= ”+a+” Min=”+c) else if(a>b && b<c) … 快的版本 int max, min; if(a>b){max = a, min = b;}