LanguageBasics

上传人:xx****x 文档编号:242869435 上传时间:2024-09-10 格式:PPT 页数:56 大小:274.50KB
返回 下载 相关 举报
LanguageBasics_第1页
第1页 / 共56页
LanguageBasics_第2页
第2页 / 共56页
LanguageBasics_第3页
第3页 / 共56页
点击查看更多>>
资源描述
按一下以編輯母片標題樣式,*,National Taiwan University,Department of Computer Science and Information Engineering,按一下以編輯母片,第二層,第三層,第四層,第五層,Language Basics,Lecturer: 曾學文,1,Outline,變數,Variables,運算子,Operators,運算式(,Expressions,)、敘述(,Statements,)與程式區塊(,Blocks,),Your Turn,程式流程,Control Flow Statements,Decision making statement,if-else,statements,switch,statements,Your Turn,2,變數 Variables,定義,儲存資料的單位,每個變數都有各自的名稱(,name,)與資料型態(,data type,),變數宣告(,Declaration,),意義:告知電腦我的程式要使用變數,請配置記憶體以供存放。,變數必須在第一次使用前宣告!,語法:,DataType VarName,=,InitialValue,;,範例:,int x = 6;,double y;,3,變數 Variables,基本資料型態(,Primitive Data Types,),型態名稱,大小 / 格式,範圍,說明,整數型態,負數,:,二進位數型態首位為,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 /,二補數方式,-92233728, 92233727,長整數 (,Long Integer),實數型態,(,以近似表示任意某個實數;,a = m * b,e,),float,32,bit / IEEE 754,格式,七位小數,單精度浮點數,double,64,bit / IEEE 754,格式,十五位小數,雙精度浮點數,其它型態,char,16,bit / Unicode,格式,u0000 uffff (0 65535),字元,boolean,true / false,true, false,布林值,4,變數 Variables,變數宣告完畢後可以給定初值。,給初值的方法:,int x;x = 7;,int x = 7;,int x = 7, y;,y=x;,x,y,記憶體,5,變數 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;,6,變數 Variables,溢位(,Overflow,),一種當數值超過資料型態範圍的錯誤,Example:,IntOverflow.java,int int_i = Integer.MAX_VALUE;,System.out.println(int_i= + int_i+);,System.out.println(int_i= + int_i+);,System.out.println(int_i= + int_i+);,7,變數 Variables,變數存取型態,基本型態(,Primitive Type,),-,直接存取,整數、浮點數、字元、或布林值,參考型態(,Reference Type,),-,間接存取,由物件所組成的型態,8,變數 Variables,基本型態與參考型態在記憶體中的不同,基本型態,int x = 38;,參考型態,String s;,38,0,x1234,0,x1234,0,x5678,此變數資料,存放之位置,x,s,0,x5678,9,變數 Variables,變數參考型態(,Reference Data Type,),Class,內含各種屬性,方法,事件。也就是說,可以是任何基本型態的組合。,Interface,類似,Class,,但是所有屬性,方法,事件都沒有實作的程式碼,只是一個空殼子。,Array,可以是一群相同型態的集合。如:整數陣列就是一群整數的集合。,10,變數 Variables,變數名稱,大小寫不同,,可用,A-Z, a-z, 0-9, _ (,底線), $,長度不限制,第一個字不可以是數字,。,不能是關鍵字(,keyword,)或稱保留字,(null),、布林字(,true,、,false,),命名慣例,變數名稱以小寫開頭,,,類別名稱由大寫開頭,如果名稱由不同字組成,必須將字組相連,建議後面字的首字元大寫,例:,myParameter,常數(,constant,)通常全部大寫,,且使用底線(,_,)分開字組,例:,CURRENT_USER_NUM,11,變數 Variables,關鍵字,Java,保留給本身所使用的文字,也有人稱為 “保留字” (,Reserved Words),Keyword:,abstract default ifprivatethisboolean doimplements protectedthrowbreakdoubleimportpublicthrowsbyteelse instanceof returntransientcaseextendsintshorttrycatch finalinterfacestaticvoidcharfinallylongstrictfpvolatile classfloatnativesuperwhileconstfornewswitch continue gotopackagesynchronized,12,變數 Variables,常數,語法:,final,DataType VarName,=,InitialValue,;,一旦變數被宣告成,final,,其值將不可再更改,若程式欲更改,final,變數的值將造成編譯時期錯誤(,compile-time error,),範例:,final,double PI = 3.1416;,PI = 2.345; /,會發生錯誤,因為,PI,是常數,13,變數 Variables,轉換變數型態,型態相容時,相容時,,Java,會自動加以轉換,int a;,long b = a; (,相容會自動轉換,),型態不相容時,兩種不相容的型態要轉換,必須使用強制轉換,語法,:,(target-type) value,int a;,b = (byte) a;,(縮小轉換),-,將會被縮減成,byte,範圍的餘數,char x =,(char),65;,14,變數 Variables,變數有效範圍(,Scope,),變數有效範圍 = 宣告處 所屬下大括號為止,class HelloWorld,int x;,public static void Count (int x),int x;,catch (int x),主類別,方法,例外處理,成員變數,方法參數,區域變數,例外處理器參數,15,變數 Variables,16,變數 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);,17,運算子(Operators),運算子可對一個、兩個或三個運算元(,operands,)執行動作,依照所需的運算元數目,可分為,一元運算子(,unary operator,),例:,a+,、,-a,二元運算子(,binary operator,),例:,a = 2,三元運算子(,ternary operator,),例:,(x0) ? x-1 : (x+1),依照運算子擺放位置,可分為,前置(,prefix,)運算子,:運算子擺放在運算元之前,例:,+i,後置(,postfix,)運算子,:運算子擺放在運算元之後,例:,i+,中置(,infix,)運算子,:運算子擺放在中間,例:,a + b,運算子執行動作後將回傳值,其值之型態視運算元而定,18,運算子(Operators),算術運算子(,Arithmetic Operators,),二元運算子,用法,說明,+,X + Y,X,加上,Y,-,X Y,X,減去,Y,*,X * Y,X,乘以,Y,/,X / Y,X,除以,Y,%,X % Y,取,X,除以,Y,的餘數,單一運算子,用法,說明,+,+ X,正,X,-, X,負,X,19,運算子(Operators),算術運算子(,Arithmetic Operators,),單一增減運算子,用法,說明,+ (前置式),+X,X = X +1,- (前置式),- X,X = X -1,(後置式) +,X+,X = X +1,(後置式) -,X-,X = X -1,前置式:加 / 減後再取用變數,後置式:取用變數後再加 / 減,X = 3;,System.out.println(X+);,System.out.println(X);,X = 3;,System.out.println(+X);,System.out.println(X),20,運算子(Operators),Example:,PrefixPostfix.java,x = 3;,System.out.println(Before Prefix X = +,+x,);,System.out.println(After Prefix X = + x);,x = 3;,System.out.println(Before Postfix X = +,x+,);,System.out.println(After Postfix X = + x);,21,運算子(Operators),指定運算子(,Assignment Operators,),功能:將運算完的結果指定給另外一個變數保存起來,指定運算子,用法,相當於,=,X = Y,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,22,運算子(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 ,X Y,將,X,向右移動,Y,個位元,不含正負號,23,運算子(Operators),位元運算子加上指定運算子,指定運算子,用法,相當於,&=,X &= Y,X = X & Y,|=,X |= Y,X = X | Y,=,X = Y,X = X Y,=,X = Y,X = X Y,=,X = Y,X = X =,X = Y,X = X Y,24,運算子(Operators),關係運算子,Relational Operators,功能:比較兩個變數的大小。比較的結果是一個布林值 (,true / false),關係運算子,用法,傳回,true,的條件,X Y,X,小於,Y,=,X =,X = Y,X,大於等於,Y,X Y,X,大於,Y,25,運算子(Operators),條件運算子(,Conditional Operators,),功能:將兩個條件合併起來的運算子,運算結果仍為布林值。,條件運算子,用法,傳回,true,的條件,&,X & Y,X,與,Y,必須同時為,true,X, Y,不一定進行求值,|,X | Y,X,與,Y,之一為,true,即可,X, Y,不一定進行求值,!,! X,X,為,false,26,運算子(Operators),其他運算子,其它運算子,用法,功能,? :,X ? Y : Z,如果,X,為,true,,傳回,Y,如果,X,為,false ,,傳回,Z,a0,用來存取陣列元素,.,Object.Property,用來存取物件內的屬性或方法,(,參數, 參數, ,),f(X, Y, Z),用來接收一系列的參數,(,型態,),(int) 3.5F,將某數值強制轉型,new,new Object,建立物件或陣列,instanceof,X instanceof Y,檢查,X,是否為,Y,的個體 (,Instance),27,運算子(Operators),? :,語法:,op1 ? op2 : op3,唯一的三元運算子,簡略的,if-else,敘述,例,:,(x0) ? (x-1) : (x+1),即,if (x 0),return x-1;,else,return x+1;,28,運算子(Operators),運算子優先權,運算子分類,運算子,分隔運算子,() , .,單一運算元,+ - + (,正號) - (負號) !,建造 / 轉型運算子,new (type)expr,乘除,* / %,加減,+ -,位移運算子, ,關係運算子, instanceof,相等運算子,= !=,高,29,運算子(Operators),運算子優先權,位元,AND,&,位元,XOR,位元,OR,|,邏輯,AND,&,邏輯,OR,|,條件運算子,? :,指定運算子,= += -= *= /= %=,&= = |= = =,低,30,Expressions、Statements & Blocks,運算式(,Expressions,),範例,int x = 3 * 4 1;,double y = -100 / x;,ambiguous vs. unambiguous,擅用括號避免曖昧不明(,ambiguous,)的運算式,例如:,x + y / 100,(x + y) / 100,x + (y / 100),3 *,4,運算子,運算元,31,Expressions、Statements & Blocks,敘述(,Statements,),類似人們說話的語言(,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);,32,Expressions、Statements & Blocks,敘述,Statements,除了由運算式構成,另有兩種敘述,Declaration Statement,,例:,int x = 2;,Control Flow Statement,程式區塊,Blocks,由大括號包覆,且內含零個以上的敘述,例:,if (a 2) ,33,Your Turn,Practice,請撰寫一程式,輸入姓名、身高、體重,您的程式會計算出,身材比例係數,。,身材比例係數,公式為:,(,體重,Kg)/(,身高,m)2,。,鍵入,“,java SlimBody Tsai 172 68”,印出,“,Tsai,的身材比例係數為,22.9853”,34,Your Turn,Hint:,SlimBody.java,參數讀取範例,String name = args0;,double height = Double.parseDouble(args1);,public class SlimBody ,public static void main ( String args ) ,35,程式流程,程式敘述,程式敘述,程式敘述,循序結構,36,程式流程,選擇結構,如:,if-else, switch,程式敘述,程式敘述,程式敘述,條件,37,程式流程,重複結構,前測式,如:,for, while,程式敘述,程式敘述,條件,false,true,38,程式流程,重複結構,後測式,如:,do-while,程式敘述,程式敘述,條件,false,true,39,程式流程,Rubby.start();,Lisa.start();,public void run(),public void run(),呼叫方法時,控制權會轉換,40,Control Flow Statements,Why do we need control flow statements?,Control Flow Statements,41,Control Flow Statements if-else,if/else statements,語法:,使用,? :,運算子,代替簡單的,if-else,較複雜的情況,我們常使用巢狀,if-else,敘述,if (,expression,),statements,else if (expression),statements,else,statements,42,Control Flow Statements if-else,例如:,如果,(考試成績 60),印出 “你不及格”,印出,“,糟糕!”,否則,印出 “你及格了”,在,Java,中,if (Score 60) ,System.out.println (“,你不及格”);,System.out.println (“,糟糕!”);,else ,System.out.println (“,你及格了”);,43,Control Flow Statements if-else,結合關係運算子,功能:比較兩個變數的大小。比較的結果是一個布林值 (,true / false),if (x = y) ,關係運算子,用法,傳回,true,的條件,X Y,X,小於,Y,=,X =,X = Y,X,大於等於,Y,X Y,X,大於,Y,44,Control Flow Statements if-else,結合條件運算子,功能:將兩個條件合併起來的運算子,運算結果仍為布林值。,if(xy) & (y z) ,if(xy) | (y = 60),System.out.println (“pass!);,else,System.out.println (“fail!);,47,Control Flow Statements if-else,Example:,Age.java,public class Age ,public static void main (String args) ,int x = Integer.parseInt(args0);,if(x=20 & x=30 & x=39),System.out.println(,三年級,);,else,System.out.println(,四年級,);,48,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:,statements,break;,default:,statements,break;,49,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;,50,Control Flow Statements switch-case,Example:,GetMonthDays.java,public class GetMonthDays ,public static void main (String args) ,int Year = Integer.parseInt(args0);,int Month = Integer.parseInt(args1);,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,51,Control Flow Statements switch-case,case 4:,case 6:,case 9:,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);,break;,/ end of switch,/ end of main method,52,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 ,肥胖,(,注意:身高在公式中的單位為公尺,),53,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! Dont you eat something?);,54,Your Turn,Advanced Practice,請寫出一個程式讀入三個整數,找出最大和最小的數。,例如,,java Compare 25 23 67,輸出:最大,67;,最小,23,例如,,java Compare 54 43 21,輸出:最大,54;,最小,21,55,Your Turn,Hint:,Compare.java,慢的版本,if(ab & bc),system.out.println(“Max= ”+a+” Min=”+c),else if(ab & bb)max = a, min = b;,56,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!