Annual 08 1 - NIA · รายงานประจำป สนช. 2551 5 สามฝ าย ได แก ฝ ายบริหารโครงการนว ัตกรรม
อาจารย ดร. นัฐพงศ ส งเนียม ... · 2019. 5. 4. · Integer...
Transcript of อาจารย ดร. นัฐพงศ ส งเนียม ... · 2019. 5. 4. · Integer...
อาจารย ดร. นัฐพงศ สงเนียมhttp://www.siam2dev.net
[email protected] , [email protected]
Last updated : 08-12-2560
Operator คือสัญลักษณ หรือ keywords ท่ีใชสําหรับนําคามาคํานวณบางอยางใหไดเปนผลลัพธ ซึ่งจะเรียกอินพุตของ operator วา operand
ตัวดําเนินการเดี่ยว Unary Operator ใช operand 1 ตัว ซึ่งมี 2 แบบ คือ◦ Pre-fix unary operator เชน --y , ++x ◦ Post-fix unary operator เชน y-- , x++ , i++ , i--
Binary Operator ใช operand 2 ตัว เชน a + b , x / y , a = 5 Y*5
x/z
ตวัดาํเนินจะอยู่ด้านหน้าของ Operand ++X ++Y
int x = 5; --x; // เอาคา่ x ลบดว้ย 1
System.out.println(x);
int x = 5; System.out.println(--x);
4
4
int x = 5; x--; เอาคา่ x ลบดว้ย 1
System.out.println(x);
int x = 5; System.out.println(x--); System.out.println(x--);
4
5
คาํศพัท์
ไวยากรณ์ การประกาศตวัแปร
ผลลพัธ ์หน้าจอ คาํตอบ
อธิบายโค้ด
เขียนโปรแกรมด้วย
X++ Y++ I++ int x;
X+=5;ผลลพัธจ์ะเป็นอยา่งไร
Syntax Errorภาษาจาวา เป็น ภาษา แบบ case sensitive
int x;X++;ผลลพัธจ์ะเป็นอยา่งไร
int x;x++;ผลลพัธจ์ะเป็นอยา่งไร
int x;x--;ผลลพัธจ์ะเป็นอยา่งไร
4.3 ปีแสง ก่ีกิโลเมตร
300000 *60*60*24*365*4.3
ท่ีเหลือเป็นความรู้ระดบั เบสิก พืน้ฐาน
byte = 8bit , 2^7 short = 16bit ,2^15 int = 32bit หรอื 4 Byte long = 64bit หรอื 8 Byte
, 2^63
Byte Short Integer Long
PDT จากโค้ดน้ี มีข้อผิดพลาดหรือไม่ จะแก้ไขอย่างไร
ADT
Type Wrapper Class
Byte Short Integer Long
MIN_VALUEMAX_VALUE
3.5 KM = ? CM
1. สรา้ง Project ตัง้ชือ่ทีเ่หมาะสม2. วธิกีารคดิ
3. การรบัขอ้มลู
4. การแปลง สตูรคาํนวณ ทาํอยา่งไร
?ถ้าโจทยแ์บบต้องมีความรู้เก่ียวกบัอะไร?
เทียบบญัญติัไตรยางศ์
เอก็ซะ 10^18 เพตะ 10^15 เทระ 10^12 = 1,000,000,000,000 จกิะ
เมกะ
เดคา
เดซิ
มลิลิ
float 4 byte double 8 byte
1
2
3
ถ้า รบั มาเป็น เงินสกลุดอลล่ารส์หรฐั ให้แปลงเป็นเงินบาท
หรอื แปลงเงินเยนเป็นเงินบาท
หรอื แปลงจากเงินหยวนเป็นเงิน บาท
กาํหนดให้ผูใ้ช้สามารถเลือกหน่วยสกลุเงินได้
*** กาํหนดให้เลือก สกลุเงินก่อน แล้วป้อนจาํนวน
เงิน แล้วแปลงให้เป็นเงินบาท
14.17
ทาํได้ เกือบ
ทาํไม่ได้
จะทาํใหเ้ลอืก หน่วยไดอ้ยา่งไร?
คาํตอบ ให้แสดงข้อความดงัน้ี
กรณุาเลือกสกลุเงิน
1. Dollar (30)2. Yen (100/30)3. Yuan (5)
if (ans==1) {คิดแบบ US dollar} else if (ans==2) {
} else if (ans==3) {
}
if(ans==1) {
} else if(ans ==2) {
} else if(ans ==3) {
}
Decision Control•If•Switch case
[ 1 ] พท. วงกลม
[ 2 ] พท. สามเหล่ียม
[ 3 ] พท. ส่ีเหล่ียม
[ 4 ] พท. ส่ีเหล่ียมคางหมู
[ 5 ] เส้นรอบวงกลม
[ 6 ] ปริมาตรทรงกลม
สง่ วนัที ่17 ธ.ค. 2560
เกิด กาํหนดตวัแปร ไม่ถกูต้อง หรอื เกบ็ค่าเกินขนาดท่ีตวัแปรจะรองรบั ซ่ึง
เรียกว่า Overflow การผิดพลาดแบบน้ีเป็น Syntax Error วิธีแก้ให้ปรบัขนาดตวัแปรให้รองรบัขนาดข้อมลู
จากโค้ดน้ี มีข้อผิดพลาดหรือไม่ จะแก้ไขอย่างไร
วนัจนัทร ์ที ่26 ธ.ค. 2559
◦ สาํหรบั นศ. วทิยค์อมฯ 58/1 และ
58/2
*** อาจมีการเปล่ียนแปลง
27 ธ.ค. 2558
Lec01-Lec05 ทฤษฏ ี+ ขอ้เขยีน + ปฏบิตัิ
Facebook Page :: java2oop
+-+*/ฯลฯ
5 + 6
Operand Operand
X + Y
SUM += Y
Operator
Term คือคาหน่ึงคา อาจจะเปนคาคงท่ี หรือ คาท่ีอยูในตัวแปรExpression คือหนวยของโปรแกรมท่ีสามารถคํานวณออกมา
เปนคาคาหน่ึง ซึ่งอาจจะเปน term เดียว ๆ หรือประกอบขึ้นจากหลาย ๆ term และ operator
7 X
X + 7Math.sqrt(X)
Y - Math.sqrt(X)A+b-5/2*4/6+7
ตวัอยา่ง เชน่
Term
Term
Expression
Arithmetic ExpressionBoolean Expression
X = 5SUM = X+YX = 5;X = x – 5;
{x= x-5;y=y*2;
}
X87y
term
expression
block
Statementประโยค ;
ifwhileformethodclass
== Comparison operatorเป็นตวัดาํเนนิการในการเปรยีบเทยีบคา่
= Assignment operatorเป็นตวัดาํเนนิการในการกาํหนดคา่ใหต้วัแปร
START
READ X
X > 10
STATEMENT1
YES
FALSE
NO
TRUE
T
F
STATEMENT2
X >10if(x > 10) {
} else {
}
Boolean expression
Assignment Operators◦ สําหรับกําหนดคา โดยใช operator =
Arithmetic Operators◦ สําหรับการคํานวณทางคณิตศาสตร
Bit-wise Operators◦ สําหรับกระทํากับ bits ของเลขจาํนวนเต็ม
Relational Operators◦ สําหรับการเปรียบเทียบ ใหผลลพัธเปนคา boolean
Logical Operators◦ สําหรับใชกระทํากับขอมลูชนิด boolean
Conditional Operators◦ สําหรับเปรียบเทยีบแลวตัดสินใจทําประโยคทีก่ําหนดให
ภาษา java มี operators = สําหรับทําการกําหนดคา (assignment)
รูปแบบคําสั่ง
variable = [constant | expression];
Example
X = ( a * a + 4.0 * b ) / 2.0;
Y = 5;
(อานวา ใหเอาคา 5 เก็บไวในตวัแปร Y)
MyClass.name = “alovela”;
1. int y;2. y=100;3. y=5;
บรรทดัน้ีจงึไม่
แปลวา่ y กบั 5 เทา่กนั
int y =4;y = 5;
SET Y 10SET SUM X
X = 5Y=10
vb, java
SET X 5 SET Y X+2; SET SUM SUM + i
= X = 5; Y = X+2; SUM = SUM + i;
Java
Algorithm/Pseudo-code
:=X := 5;Y := X+2;SUM := SUM + i;
Pascal , Delphi
if(x==5) {}
Java
int x=1;if(x==5)
x = x+3;x = x+9;
int x=8;if(x==5)
x = x+3;x = x+9;
int x=5;if(x==5)
x = x+3;x = x+9;
int x=5;if(x==5)
x = x+3; else
x = x+9;
int x=5;if(x==5) {
x = x+3; x = x+9; }
statement Variable declaration statement
10
int x=5;if(x==5)
x = x+3; else
x = x+9;8
T
F
int x=5;if(x==5) {
x = x+3;}else {
x = x+9;}
x = x + 20;
35
T
F
28
int x=1;if(x==5)
x = x+3;x = x+9;
10
int x=1;if(x==5) {
x = x+3;x = x+9;
} 1
True/False
int x=5;if(x==5) {
x = x+3;x = x+9;
} 17
int x=6;if(x==5) {
x = x+3;x = x+9;
} 17
class TestOperator{public static void main(String [] args){ int x ,y ,z ;
x = y = z = 1;System.out.println(x + "," + y +"," + z );x = (y = (z = z + 1 )+ 1 ) + 1;System.out.println(x + "," + y +"," + z );x = (y = 1) + (z = 1) ;System.out.println(x + "," + y +"," + z );//x = y = 1 + z = 1 ;
}}
double x,y,z;int k,g;byte P,B;
//ใหท้าํจากขวามาซา้ย
นราธร
=
??? ปวณีา
??? โรจน์ศกัดิ ์
โปรแกรมน้ี จะไดผ้ลลพัธ ์คอื
ใหเ้วลา 5 นาท ี(13.35)
int x; ....default ... 0 , null
PDTdouble x,y,z;int k,g;byte P,B;
Double x,y,z;Integer k,g;Byte P,B;
k.MaxVALUES();
*** ถา้ตัง้ตวัแปรแบบ type wrapper class แต่ทาํงานแบบ PDT
Class
()^ xor* /
- +
X= 3 * 2-5/(4-2)*(7-2)
X= 3 * 2-5/(4-2)*(7-2)
X = …………………………
5.5
5.5
X = 2*8/(5-8*3)/(9-7)
16 / -19/ 2
-19/32
X = 5*2+8-5*7/3-3+5X = 5*2+8-5*7/3-3+5
10+8 - 35/3 - 8
10 – 35/3-1 กวา่
X = 5 + 4 – 9 X = 8 / 2 * 7
X = 8 / 2 * 7 – 5 + 8
Operators ใชสําหรับการคํานวณทางคณิตศาสตร ซึ่งจะมี Operands และผลลัพธเปนตัวเลข จํานวนเต็มหรือทศนิยมก็ได แบงเปน 4 ประเภทคือ
Integer Arithmetic Operators Floating-point Arithmetic Operators Arithmetic Assignment Operators Increment and Decrement Operators
Integer Arithmetic Operators ไดแก + (บวก), - (ลบ), * (คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากับเลขจํานวนเตม็และจะไดผลลัพธเปนเลขจํานวนเต็ม
Floating-point Arithmetic Operators ไดแก + (บวก), - (ลบ), * (คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากับเลขจํานวนทศนยิมและจะไดผลลัพธเปนเลขทศนิยม
Opt Integer Output Float Output
+ + 1 1 + 1.0 1.0
- - 2 -2 – 2.0 -2.0
ตัวดําเนนิการเดี่ยว(unary operator)
Opt Integer Output Float Output
+ 1 + 2 3 1.0 + 2.0 3.0
- 2 - 3 -1 2.0 – 3.0 -1.0
* 3 * 4 12 3.0 * 4.0 12.0
/ 24 / 5 4 24.0 / 5.0 4.8
% 16 % 7 2 16.0 % 7.0 2.0
ตัวดําเนนิการคู(binary operator)
MODULATE การหารเอาเศษ
8.0/2= ?
for(int i=1; i <= 1000; i++) {if(i % 2 == 0) {
System.out.println(i);}
}
1001
2,4,6,…1000
100,98,96,…4,2
Postfix Unary OperatorTestPostFix
คาํถาม
•โปรแกรมน้ีทาํอะไร
•โปรแกรมน้ี จะทาํทัง้หมดกีร่อบ
•โปรแกรมน้ี จะแสดงคา่ i กีค่ร ัง้
รปูแบบ
for(ค่าเร่ิมต้น ; เง่ือนไข ; ค่าเพ่ิมหรือลดค่า กาํหนดจาํนวนรอบ;) {
}
ตวัอย่าง
for(int I =1; I <= 10 ; I++;) {System.out.println(I);
}
for(int i=1; i <= 1000; i++) {if(i % 10 == 0) {
System.out.println(i);}
}
1001
2,4,6,…1000
100,98,96,…4,2
Postfix Unary OperatorTestPostFix
คาํถาม
•โปรแกรมน้ีทาํอะไร
•โปรแกรมน้ี จะทาํทัง้หมดกีร่อบ
•โปรแกรมน้ี จะแสดงคา่ i กีค่ร ัง้
จงเขยีนคาํสัง่เพือ่หา เลขตัง้ 500 - 1000 มเีลขอะไร ที ่
5 หารลงตวั จงแสดงออกมา
คาํตอบ
int i;for(i=500; i<=1000;i++) { }
คาํตอบ
int i;for(i=500; i<=1000;i++) {
}
จงเขยีนโปรแกรม เพือ่รับคา่(x) แลว้หาคา่ของ 1^2 + 2^3 + 3^4 + 4^5 +… + X^X+1
Enter Number :: 5
1^1 + 2^2 + 3^3+4^4+5^5=???
1. package …..ชือ่โปแกรม Test_Power2. import java.util.Scanner;3. ………………………………..4. Scanner Sc = new Scanner(System.in);5. System.out.print(“Enter Number : ”);6. int x = Sc.nextInt();7. long sum=0; 8. for(int I = 1; I <=x ; I++) {9. sum = sum + (long)Math.pow(I,I+1);10. }11. System.out.println(“1^2+2^3 +… + x^x+1” + sum);
“Enter Number”
จะหา PRIME NUMBER ได ้อยา่งไร
รบัและแสดงผล โดย
ไม่ระบอุปุกรณ์รบัข้อมลูจาก
แป้นพิมพ์
STATEMENT 1STATEMENT 1
STATEMENT 3
STATEMENT 3
TRUE
FALSE
YES
NO
Y
N
T
F
ตวัทีเ่ป็นคา่ Prime Number ตัง้ 1-100 มเีลขอะไรบา้ง จงเขยีนคาํสัง่
ภาษา จาวา
จงรบัตวัเลขเข้ามาแล้วตรวจสอบวา่เป็น Prime Number หรอืไม่
9 = Prime Number?1,3,9
STEP 1 STEP 2
คาํตอบ
int i;for(i=500; i<=1000;i++) {
}
คาํตอบ
int i;for(i=500; i<=1000;i++) {if(i % 5 ==0) { System.out.println(“I : ” + i);}
}
Step 1
Step 2
1. for loop จะทาํกีร่อบ .......................
2. และ System.outprintln จะถกูทาํกีค่ร ัง้ ...........
y++; // y = y + 1; I++ ; …. I = I +1; sum++ …. sum = sum + 1
int y=5; System.out.println(y++); // 5
int y=5; System.out.println(++y); // 6
คาํตอบ
int i;int x=0;for(i=500; i<=1000;i++) {if(i % 5 ==0) { System.out.println(“I : ” + i);x++;}
}System.out.println(x);
Step 2
1. for loop จะทาํกีร่อบ .......................
2. และ System.outprintln จะถกูทาํกีค่ร ัง้ ...........
1. ตวัทีห่ารดว้ย 5 ลงตวัมกีีต่วั
2. ทีห่ารไมล่งตวั มกีีต่วั
ถา้ใส ่คา่ arsg[0] = 100จาํนวนจะทาํกีร่อบ ?คา่ I สดุทา้ยคอื อะไร ...........
I++ …………………. I = I + 1 ++I …………………… I = I+1
i=500;System.out.println(i++);i++;System.out.println(++i);
500
503
I-- …………………. I = I - 1 --I …………………… I = I-1
i=500;System.out.println(i--);i--;System.out.println(--i);
?
?
i=875;System.out.println(i--);i++;System.out.println(--i);
….
….
875
874
int i;i =1025;i+=5;System.out.println(i--);i++;System.out.println(i++);
….
….
1030
?1030
i=1025;System.out.println(i--);i++;System.out.println(i++);
….
….
1025
1025
i=125;System.out.println(i--);i++;System.out.println(i++);
….
….
???
???
i = 5 i==5 Comparison Operator
Assign Operator
for(int i=1000; i >= 1; i--) {if(i % 2 == 0) {
System.out.println(i);}
}
0
2,4,6,…100
100,98,96,…4,2
--i
5 นาที
for(int i=997;i>=1;i--) {if(i%2==1) {System.out.println(i +” , ”);} else {
}}
X++ X— --X ++X
Post Fix
Pre Fix
X=8;System.out.println(--X);
X= 8;System.out.println(X--);System.out.println(x);
7
87
X = X – 1;X = X+1;
%
1. 5 % 1588555 = ?2. 1897744 % 2 = ?
ODDEVEN
1. 2 + 4 + 6 +8 …100000 = ? 2. 2^2 + 3^2 + 4^2 +.. 50^2=? 3. 1^10 + 2 ^ 9 + 3^8 +… 8^3 + 9^2 + 10^1 =?
(เพียรพรรณ)(แนะนํา ใช ้double)
2*2*2 ประถม2^3 มัธยมMath.pow(2,3) มหาวทิยาลัย
ผูห้ญิง
ผูช้าย
เชน่ 5
2*1 = 2 2*2 = 4 2*3 = 6
… 2*12 = 24 --------------------------
5*12 = 60
for(int i=2;i<=x;i++) {
for(int j=2;j<=12;j++) {System.out.println(i + ”*” +j
+ “=” + i*j);}
}
If Switch case / Select case Loop◦ For ………………………………..การวนลปู ต้องรู้จาํนวนท่ีแน่นอน
◦ Do ………………………….. ให้ทาํไปก่อนแล้วค่อยมาเชค็ ตรวจสอบเง่ือนไขท่ี
หลงั
◦ While ……………..ตรวจสอบก่อนแล้ว ค่อยถ้าจริง
คา่เริม่ตน้ สดุทา้ย
จากน้อยไปหามาก
จากมากไปหาน้อย
5 5
for(int i = 5; i<= 100; i++) {if(i % 5 ==0) {
System.out.println(i);}
}
Inteval
ไมค่วรเอาผลรวมไปแสดงในลปู
ผลรวมจะแสดงคา่สดุทา้ยออกมา ควรอยูห่ลงัลปู
1 + 2 + 3 . + 10000 for(int I = 1;for(int I = 1;i<=1000;
for(int I = 1;i<=1000;i++) {Total = Total + I;
}
for(int I = 1;i<=1000;i++) {Total = Total + I;
}
for(int i = 1;i<=1000;i++) {Total = Total + i;System.out.println(Total);}
long Total=0;for(int i = 1;i<=1000;i++) {Total = Total + i;
}System.out.println(Total);
ทัง้สองแบบนี้แตกตา่งกนัอยา่งไร ?
1 + 2 + 3 ….1000 = 500500
for(int I = 2 ; I <=1000;I++) {if(I % 2 ==0) {Total = Total + I;}
}System.out.println(“Total : ” + Total);
1. จาํนวนรอบทีว่นกีร่อบ2. คา่ สดุทา้ยของ I คอื ...................3. คา่ total คอื ..............................4. มกีารพมิพค์า่ Total กีร่อบ ............
สว่นของโปรแกรม
for(int I = 2 ; I <=1000;I++) {if(I % 2 ==0) {Total = Total + I;}
}System.out.println(“Total : ” + Total);
N/2(N+1)10/2*(10+1) = 55100/2*101 = 50501000000/2*(1000001) = 500000500000
Integer.parseInt()
long x; x = Math.pow(2,5);
return เป็น double
long x; x = (long)Math.pow(2,5);
casting
System.out.println(1 + 2);System.out.println(2 - 3);System.out.println(3 * 4);System.out.println(6 % 7);
System.out.println(1.0 + 2.0);System.out.println(2.0 - 3.0);System.out.println(3.0 * 4.0);System.out.println(6.0 % 7.0);
System.out.println(2.0 - 3);System.out.println(3 * 4.0);
Operator ที่ใชคาของตัวแปรตัวหนึ่งมากระทาํกับ operand แลวเก็บผลลัพธไวที่ตัวแปรตัวนัน้ โดยมีรูปแบบประโยคดังนี้
<variable> <op> = <operand>;
Example
X += 1; // X = X + 1Y -= 5; // Y = Y - 5X /= 4; // X = X / 4
X = X + 5; ……………… X+=5; X = X + Y; ……………… X +=Y;
+= -= *= /=
Total = Total + x; ……. Total +=x;
X = X + 5; X+=5; SUM = SUM + 5; SUM +=5;
Y *=7 ; Y = Y * 7;
op Form Meaning
+= 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
X = X + Z K = K - 5 ; SUM = SUM /7;
X+=Z;
K-=5;
SUM/=7;
int x = 1;x += 1; System.out.println(x); 2x *= 2; System.out.println(x); (42 จริาพร)x -= 3; System.out.println(x); (-2 วลิาวัณย์)x /= 4; System.out.println(x); (0 พชรณัฏฐ์)float y = 1f;y += 1; System.out.println(y) (ธนวัฒน์ 2.0);y *= 2; System.out.println(y); (2.0 สุปัญโญ)y -= 3; System.out.println(y); (-2.0 ศราวุฒ)y /= 4; System.out.println(y) 0.25 กรพฒัน์);
int x = ¼; 0
X= 5/2; = 2.5
Operators สําหรับใชในการเพ่ิมคาหรอืลดคาของตัวแปรทีละ 1 เชน++x; จะมีความหมายวา x = x + 1; และ--x; จะมีความหมายวา x = x – 1;
มีวิธีใช 2 แบบคือ1. ใชแบบ prefix เชน ++x จะทําการบวกหนึ่งใหแก x กอน
แลวจึงสงผลลพัธออกมาเปนคาที่ไดจากการกระทํา2. ใชแบบ posfix เชน x++ จะเก็บคา x ตอนนัน้ไวกอน แลวจึง
ทําการบวกหนึง่ แลวจึงสงคา x ที่ไดจากการกระทําออกมาเปนผลลัพธ
ตัวดําเนินการสําหรับเพ่ิมคา ++ตัวดําเนินการสําหรับลดคา --
int x = 10;int y;y = ++x;System.out.println(x);System.out.println(y);
int x = 10;int y;y = x++;System.out.println(x);System.out.println(y);
1111
1110
int a, b, x = 1, y = 1 ;a = x++; b = ++y;System.out.println(a + "," + b);a = x--; b = --y;System.out.println(a + "," + b);
เปน Operator สําหรับกระทํากับทุก ๆ bits ของ operands ท่ีเปนขอมูลเลขจํานวนเต็ม(ไดแก byte, short, int และ long) หรือเปนตัวอักษร char แบงออกเปน 2 กลุมคือ
Boolean Bit-wise Operators Assignment Bit-wise Operators
Op Meaning Example Result
~ Bitwise NOT ~(0110) 1001
& Bitwise AND 0011 & 0101 0001
| Bitwise OR 0011 | 0101 0111
^ Bitwise XOR 0011 ^ 0101 0110
<< Shift left 1011 << 2 1100
>> Shift right(sign bit) 1011 >> 2 1110
>>> Shift right(zero fill) 1011 >>> 2 0010
op Form Meaning
&= 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
>>>= x >>>= y x = x >>> y
System.out.println(~2);System.out.println(2&1);System.out.println(2|1);System.out.println(2<<1);System.out.println(2<<2);System.out.println(-4>>1);System.out.println(-1>>>1);
ไดแ้ก่ ==, !=, >, <, >=, <= ใชทํ้าการเปรยีบเทยีบคา่ของ operands ทมีชีนดิขอ้มลูเป็น byte, char, short, int, long, float และ double สําหรับชนดิขอ้มลู boolean จะทําการเปรยีบเทยีบเทา่กบั หรอื ไม่เทา่กบัไดเ้ทา่นัน้ผลลพัธจ์ากการเปรยีบเทยีบจะไดเ้ป็นคา่ boolean
Operator Meaning Example Result
> more than a > b false
< Less then a < b true
>= More than and equal a >= b false
<= Less than and equal a <= b true
== Equal a == b false
!= Not equal a != b true
int a = 0, b = 1;
เปน operat0rs ที่ใชกับ operands ที่มีชนิดขอมูลเปน booleanเทานั้น และใหผลลัพธเปน boolean แบงเปน 3 กลุม
Boolean Logical Operators◦ ไดแก & (AND), | (OR), ^ (XOR), ! (NOT)
Short-circuit Logical Operators◦ ไดแก && (short-circuit AND) , || (short-circuit OR)
Assignment Logical Operators◦ ไดแก &= , |=, ^=
X Y RESULT
T T T
T F F
F T F
F F F
AND
Boolean Logical Operator& b = false & true false| b = false | true true^ b = false ^ true true! b = !true false
Short-circuit logical Operator&& b = false && true false|| b = true || true true
boolean b;
System.out.println(1<2 & 4==1);System.out.println(1<2 | 4==1);System.out.println(!true ^ 1==1);System.out.println(!(4!=1));
F ^ T …T……?…….
T T T
T F F
F T F
F F F
if (5 > 4) & (7 < 9) {…..}
T T
T T T
T F T
F T T
F F F
if (5 > 4) & (7 < 9) {…..}
T T T
T T F
T F T
F T T
F F F
Operators ? ใชร้ว่มกบั : โดยมรีปูแบบดงันี้
ถา้คา่ของ <condition> เป็น true คา่ทีไ่ดจ้ะเป็น <expression 1>
แตถ่า้เป็น false คา่ทีไ่ดจ้ะเป็น <expression 2>
เชน่ System.out.println((a<b)? "aนอ้ยกวา่b":"aมากกวา่หรอืเทา่กบัb" );
(<condition>)? <expression 1> : <expression 2>;
(4 > 8)? “ 4 มากกวา่ 8” : “4 น้อยกวา่ 8”
if(4 > 8) {…
} else {…
}
(1==1)? …………………… : …………………..
int X=5; System.out.println((X==1)? “X เท่ากบั 1” : “X ไม่เท่ากบั 1 ”);
True False
int x=5;if(x==1) {…..
} else {…..
}
ให ้รบั ตวัเลข เขา้มา แลว้ ตรวจสอบดวู่าเป็น เลขคู ่หรอืเลขคี่
1. ใหเ้ขยีนแบบ IF2. ใหเ้ขยีนแบบ conditional Operator
จงเขียนโปรแกรมคิดคาํนวณ ค่าเช่าห้อง โดย รบั จาํนวนห้อง
และ จาํนวนคืนท่ีค้าง
หมดข้อมลู หรือยงั [ Y/N ] คิดรายได้ทัง้หมด ใน 1 เดือน (30 วนั)
1. import java.util.Scanner;……………………..Scanner Sc = new Scanner(System.in);System.out.print(“Enter Number : ”);int x = Sc.NextInt();if(x % 2 == 0) {
System.out.println(x + “ เป็นเลขคู”่);} else {System.out.println(x + “ เป็นเลขคี”่);
}
1. import java.util.Scanner;……………………..Scanner Sc = new Scanner(System.in);System.out.print(“Enter Number : ”);int x = Sc.NextInt();System.out.println( (x % 2 == 0)? x + “ เป็นเลขคู”่
: x + “ เป็นเลขคี”่ );
[],(), op++, op--
++op,--p, +op, -op, ~, !
New, (type)op
*,/,%
+,-
<<,>>,>>>
<,>,>=,<=,instanceof
==,!=
&
^
|
&&
||
?:
=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>=
สําคัญมาก
สําคัญนอย
ลําดับการกระทําของ operators ที่มีลําดับความสําคัญเทากัน มีทั้งการทําจากซายไปขวา และขวาไปซาย เรียกวา associativity ข้ึนอยูกับชนิดของ operator เชน operators = ม ีassociativity ทางขวา คือจะทําจากขวามาซาย เชน
a = b = c = 1 ; ทํางานดังนี้ a = (b = (c = 1))operators + , - มี associativity ทางซาย คือจะทาํจากซายมาขวา
a + b – c + d ; ทํางานดังนี้ ((a + b) – c) + d
System.out.println(1 + 2 * 3 - 2);System.out.println((1 + 2) * (3 -2));System.out.println(2 * -5 - 17 % 3/ 2 + 26 * 2 + 4);
ทดลองใสวงเล็บใหถูกตองตามลาํดับของ Operator
เม่ือตองการดําเนินการทางคณิตศาสตรระหวาง operands ท่ีมีชนิดขอมูลท่ีแตกตางกัน จะตองแปลงชนิดขอมูลใหเปนชนิดเดียวกันกอน แบงการแปลงออกเปน 2 ประเภท คือ
Implicit type conversion ◦ เปนการแปลงชนดิขอมูลที่ภาษาจาวาทําใหโดยอัตโนมัติตามความเหมาะสม
Explicit type conversion (หรือ Casting) ◦ เปนการแปลงชนดิขอมูลที่ผูเขียนโปรแกรมตองทําดวยตนเอง
Operand byte char short int long float double
byte int int int int long float double
char int int int int long float double
short int int int int long float double
int int int int int long float double
long long long long long long float double
float float float float float float float double
double double double double double double double double
ผลลพัธข์องการใชO้perators รว่มกนั Operand ชนิดต่าง ๆ
เปนการแปลงชนิดขอมูลที่ผูเขียนกําหนดเอง
รูปแบบ
เชน a = (int)(c + b);
ควร casting ชนิดขอมูลจากคาที่เล็กกวาไปเปนคาที่ใหญกวา เพื่อลดการสูญหายของขอมูล
(<type>)<operand>
ชนดิขอ้มลู ขนาดขอ้มลูdouble
float
long
int
short
byte
ขนาดใหญ่
ขนาดเล็ก
float a = 1.0F, b = 2.5F;int c;double d;d = a + b;System.out.println("d = " + d);c = (int)(a + b);System.out.println("c = " + c);
คลาส Scanner อยูใน package java.util.Scanner จงึตองมีการ
import กอน
จากน้ันทําการสรางวัตถุจากคลาส Scanner โดยมีรูปแบบดังน้ี
Scanner keyboard = new Scanner(System.in);
ตัวอยางการใชงาน
int number;Scanner keyboard = new Scanner(System.in);System.out.print(“Enter an interger value: ”);number = keyboard.nextInt();
เมธอด การทาํงาน
nextByte() รับขอ้มลูเลขจํานวนเต็มชนดิ Byte ทางแป้นพมิพ์
nextDouble() รับขอ้มลูเลขทศนยิมชนดิ Double ทางแป้นพมิพ์
nextFloat() รับขอ้มลูเลขทศนยิมชนดิ Float ทางแป้นพมิพ์
nextInt() รับขอ้มลูเลขจํานวนเต็มชนดิ Int ทางแป้นพมิพ์
nextLine() รับขอ้มลูแบบ String ทางแป้นพมิพ์
nextLong() รับขอ้มลูตวัเลขชนดิ Long ทางแป้นพมิพ์
nextShort() รับขอ้มลูตวัเลขชนดิ Short ทางแป้นพมิพ์
7.5
15.5
Enter Your Name : ….Dr.Nattapong Songneam Your Name is :…… ….Dr.Nattapong Songneam.
String
import java.util.Scanner; //เรยีกใชค้ลาส Scannerpublic class calnum {
public static void main(String[] args){int x,y; //ประกาศตวัแปร x และ y สาํหรบัเกบ็เลขจาํนวนเตม็Scanner in = new Scanner(System.in); //สรา้งออบเจก็ต ์in สาํหรบัรบั
ขอ้มลู
System.out.print("Input Number 1 : ");x = in.nextInt(); //รบัตวัเลขจาํนวนเตม็มาเกบ็ในตวัแปร xSystem.out.print("Input Number 2 : ");y = in.nextInt(); //รบัตวัเลขจาํนวนเตม็มาเกบ็ในตวัแปร ySystem.out.println(x + " + " + y + " = " + (x+y) ); //แสดงผลการบวก
} }
Operators ? ใชรวมกับ : โดยมีรูปแบบดังน้ี
ถาคาของ <condition> เปน true คาท่ีไดจะเปน <expression 1> แตถาเปน false คาท่ีไดจะเปน <expression 2>
เชน System.out.println((a<b)? "aนอยกวาb":"aมากกวาหรือเทากับb" );
(<condition>)? <expression 1> : <expression 2>;
ถา้ ตวั x หาร ดว้ย 5 ลง ให ้“Print X” ถา้ไมใ่ช ่ให ้“Print Y”
System.out.println((x % 5 ==0)? “Print X” :” Print Y” );
X หารตวั 5 ลงตวัหรอืไม่
(X % 5 ==0)? X + “หารดว้ย 5 ลงตวั” : x + “หารดว้ย 5 ไมล่งตวั”
T F
1 2 3
5
7
11
13
17
145 เป็น Prime Number หรอืไม่
187 เป็น Prime Number หรอืไม่
5145 เป็น Prime Number หรอืไม่
8115 เป็น Prime Number หรอืไม่
X เป็น Prime Number หรอืไม่
int x=9; int y=1; if(x%y == 0) { … } else {
}
1 หาร X ลงตวั หรอืไม ่ ไมต่อ้งทํา เพราะ 1 หารทกุตวัลงตวั
อยูแ่ลว้ ไมนั่บ
X ใดๆ หาร X ลงตวั หรอืไม ่ ไมต่อ้งทํา เพราะ X หารตวัมนั
เองลงตวัอยูแ่ลว้ ไมนั่บ
2 .... X-1
1 หาร X ลงตวั หรอืไม ่ ไมต่อ้งทํา เพราะ 1 หารทกุตวัลงตวั
อยูแ่ลว้ ไมนั่บ
X ใดๆ หาร X ลงตวั หรอืไม ่ ไมต่อ้งทํา เพราะ X หารตวัมนั
เองลงตวัอยูแ่ลว้ ไมนั่บ
2 .... X/29/2 = 4
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8
i<=x-1
import java.util.Scanner;public class FindTriangle {public static void main(String[] args) {
double height = 0 , base = 0 , result = 0;Scanner input = new Scanner(System.in);System.out.println("โปรแกรมหาพื้นท่ีสามเหล่ียม");
System.out.println("กรณุาป้อนความสงู ");
height = input.nextDouble();System.out.println("กรณุาป้อนความยาวฐาน ");
base = input.nextDouble();result = 0.5 * height * base;System.out.println("พื้นท่ีสามเหล่ียม = " + result );
}}
สรางโปรแกรมแปลงหนวย โดยรับ Input ทาง Keyboard ตั้งช่ือ Project และ Class วา DataConv
ดูอัตราการแปลงหนวยไดท่ีเว็บไซตhttp://navy.in.th/dataconv.html
โดยเลือกแปลงหนวยอะไรก็ไดคนละ 1 หนวย
สงไฟลท่ีเปน SourceCode.java มาท่ีE-mail [email protected] หัวเร่ืองอีเมล DataConv_2015.XX_56XXXXXXX
รับตวัเลขใดๆ [1 - 12] แลว้แสดงสตูรคณู ของแม่สตูรคณูนัน้ๆ
ต.ย. รับ 8◦ 8*1 = 8◦ 8*2 = 16◦ 8*3 = 24◦…◦ 8*12 = 96
Test_Multiply
80 ใหเ้กรด A 70-79 ให ้B 60 – 69 ให ้C 50 – 59 ให ้D 0-49 ให ้E
Scanner + if / switch
ตํา่กวา่ 5000 ใหข้ึน้เงนิเดอืน 20%
5001-10000 ใหข้ึน้ 15%
10001 – 50000 ใหแ้ค ่10%
มากวา่ 50000 ให ้5 %
Scanner + if / switch
รบัจํานวน และ ราคา
ราคาสนิคา้รวม ตํา่กวา่ 10000 ลด 20% 10001 – 50000 ลด 15% 50001 – ขึน้ไป ลด 10%
Scanner + if / switch
สามเหล่ียม
สีเหล่ียม
วงกลม
วงรี
เส้นรอบวง
ทรงกลม
ส่ีเหล่ียมคางหมู
สตูร พ.ท. + INPUT