java-chapter 02 data operations and processing
DESCRIPTION
Chapter 02 Data Operations and ProcessingTRANSCRIPT
15
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
CHAPTER 02
การดาเนนการและประมวลผลขอมล
(Data Operations and Processing)
1. ประเภทขอมล และตวแปร (Data Types and Variables)
1. ประเภทขอมลหรอชนด ตวแปร (Data Types) 1.1 ประเภทขอมลแบบดงเดม (Primitive Data Types) แบงออกเปน 4 กลม ไดแก
1) ตวเลขจานวนเตม (Integer) คอ จานวนเตมบวก จานวนเตมลบ จานวนเตมศนย
ชนดตวแปร ขนาดตวแปร ชวงของขอมล คาเรมตน
byte 8 bits -128 ถง 127 0
short 16 bits -32,768 ถง 32,767 0
int 32 bits -2,147,483,648 ถง 2,147,483,647 0
long 64 bits -9,223,372,036,854,775,808 ถง
9,223,372,036,854,775,807 0L
2) ตวเลขจานวนจรง (Floating Point / Real Number) คอ จานวนทมจดทศนยม
ชนดตวแปร ขนาดตวแปร ชวงของขอมล คาเรมตน
float 32 bits -3.40292347E+38 ถง 3.40292347E+38 0.0F
double 64 bits -1.79769313486231570E+308 ถง
1.79769313486231570E+308 0.0D
3) ตวอกขระ (Character) คอ ตวอกษร (Letter) หรอตวเลข (Digit) หรอสญลกษณ (Symbol) เพยง 1 ตว
ชนดตวแปร ขนาดตวแปร ชวงของขอมล คาเรมตน
char 16 bits '\u0000' ถง '\uFFFF' (0 - 65535) เชน 'A' หรอ 'a' (คลอมดวยเครองหมาย '…')
'\u0000'
4) ตวตรรกะ (Boolean) คอ คาความจรง ซงมเพยงสองคาคอ จรง (True) หรอ เทจ (False)
ชนดตวแปร ขนาดตวแปร ชวงของขอมล คาเรมตน
boolean ไมระบ true หรอ false false
1.2 ประเภทขอมลแบบอางอง (Reference Data Types) แบงออกเปน 1 กลม (ยงมมากกวาน) ไดแก
1) สตรง (String) หรอขอความ คอ กลมของอกขระหรอสายอกขระตงแต 0 ตวขนไปมาเรยงตอกน
ชนดตวแปร ขนาดตวแปร ชวงของขอมล คาเรมตน
String
ไมระบ เชน "Java Chula" หรอ "1" หรอ "F50" หรอ
"" (Empty String) (คลอมดวยเครองหมาย "…")
null
16
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
1.3 การเรยงลาดบขนาดและศกดศร ของประเภทขอมล (เฉพาะตวเลข) มดงน
2. การตงชอตวแปร 1) กฎการตงชอตวแปร (บงคบและตองทาตาม)
(1) ชอตวแปรสามารถประกอบไปดวย ตวอกษร ตวเลข สญลกษณ '$' (Dollar Sign) และสญลกษณ
'_' (Underscore) เชน num, $_$, _hey, $1, xxx3, test1_$ เปนตน
(2) ชอตวแปรหามขนตนชอดวยตวเลข เชน 3girl1man, 2you, 5hundredMile เปนตน
(3) ชอตวแปรหามมชองวางและสญลกษณพเศษอนๆ นอกเหนอจากทกลาวไวในขอท 1
(4) ชอตวแปรหามตงชอซากบ คาสงวน (Reserved Words / Keywords) ซงม 53 คาดงตอไปน abstract assert boolean break byte case catch char class const * continue default do double else enum extends false final finally float for goto * if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while
(5) ชอตวแปรหามตงชอซากนภายในเมทอดเดยวกน (แตตางเมทอดกนอาจตงชอซากนได)
(6) ชอตวแปรมความยาวไดไมจากด (จะยาวกกโลเมตรกได แตควรใหมความยาวเหมาะสม)
(7) ตวอกษรพมพใหญและพมพเลกมความหมายตางกนเสมอ (Case-Sensitive) เชน var ตางกบ Var
2) ธรรมเนยมการตงชอตวแปร (ไมบงคบแตควรทาตาม) (1) ชอตวแปร (และชอเมทอด) นยมขนตนดวยอกษรพมพเลก / ชอคลาสนยมขนตนดวยอกษรพมพใหญ
(2) ชอตวแปรนยมใชเปนภาษาองกฤษ (แตอาจใชเปนภาษาใดกได ขนกบการรองรบของ Editor ทเขยน)
(3) ชอตวแปรควรตงชอใหสอความหมายกบคาของตวแปรนน เชน stdID, firstName, birthDate เปนตน
(4) ชอตวแปรถาประกอบดวยคาหลายคาใหเขยนคาแรกขนตนดวยอกษรพมพเลก สวนคาถดๆ ไปขนตน
ดวยอกษรพมพใหญ เชน hostName, numberOfCourse, currentTime, firstDayOfMonth เปนตน
(5) ชอตวแปรถาเปนคาคงทนยมตงชอดวยอกษรพมพใหญทงหมด เชน PI, MONTH_OF_YEAR เปนตน
(6) พยายามหลกเลยงการใชสญลกษณ '$' และ สญลกษณ '_'
3. การประกาศและกาหนดคาตวแปร 1) การประกาศตวแปร
ตวอยาง int x; double num; String lastName; boolean check;
<ประเภทขอมล> <ชอตวแปร>;
byte short int long float double
เลก ใหญ
17
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
2) การกาหนดคาตวแปร
ตวอยาง x = 5; num = 4.01; lastName = "Rukchula"; check = true; a = b; 3) การประกาศพรอมกบการกาหนดคาตวแปร (รวมวธท 1 และ 2 เขาดวยกน)
ตวอยาง int x = n; double num = 4.01; char ch = 'A'; float y = 2.9f; 4) การประกาศและกาหนดคาตวแปรหลายตวทมประเภทขอมลเดยวกน
ตวอยาง int x = n, year, age = 18, z, a;
4. คาของตวแปรตามประเภทขอมล 1) คาของจานวนเตม
ประเภทขอมล รปแบบการเขยน / ตวอยางคาทจดเกบ
byte และ short เขยนเลขจานวนเตมทวไป เชน byte x = 12; short y = 199;
int (ฐานสบ) เขยนเลขจานวนเตมทวไป เชน int dec = 26;
int (ฐานแปด) เขยน 0 (ศนย) นาหนาเลขจานวนเตม เชน int oct = 032;
int (ฐานสบหก) เขยน 0x หรอ 0X นาหนาเลขจานวนเตม เชน int hex = 0x1A;
long เขยนเลขจานวนเตมแลวมอกษร l หรอ L ตอทาย เชน long n = 26L;
2) คาของจานวนจรง ประเภทขอมล รปแบบการเขยน / ตวอยางคาทจดเกบ
float เขยนเลขจานวนจรงแลวมอกษร f หรอ F ตอทาย เชน float f = 1.3F;
double (รปทวไป) เขยนเลขจานวนจรงทวไป เชน double d = 1.3;
double (รปเตม) เขยนเลขจานวนจรงแลวมอกษร d หรอ D ตอทาย เชน double d = 1.3D;
double (รป a x 10b) เขยนคา a ในรปของเลขจานวนเตมหรอเลขจานวนจรงทวไป ตามดวยอกษร e
หรอ E และตามดวยคา b ในรปของเลขจานวนเตม (เทานน) เชน
double s = 93.478e8; มคาเทากบ 93.478 x 108
double t = 631E-5; มคาเทากบ 631 x 10–5
double u = 2.0e+200; มคาเทากบ 2.0 x 10200
3) คาของตวอกขระและสตรง ประเภทขอมล รปแบบการเขยน / ตวอยางคาทจดเกบ
char (รปทวไป) เขยนอกขระทวไปคลอมดวย Single Quote เชน char c = 'a';
<ชอตวแปรทประกาศไวแลว> = <คาของตวแปร>;
<ประเภทขอมล> <ชอตวแปร> = <คาของตวแปร>;
<ประเภทขอมล> <ชอตวแปร>, <ชอตวแปร> = <คาของตวแปร>, ...;
คนดวย Comma
ซายตงขวายด
อาจเปนคาคงท (Constant) หรอคาจากตวแปรอนกได
ซายตองใหญหรอพอดกบขวา
18
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
ประเภทขอมล รปแบบการเขยน / ตวอยางคาทจดเกบ char (รป Unicode) เขยนรหส Unicode คลอมดวย Single Quote เชน char c = '\u0043';
'\u0030' หรอ รหส 48 (ฐานสบ) มคาเทากบอกขระ '0'
'\u0041' หรอ รหส 65 (ฐานสบ) มคาเทากบอกขระ 'A'
'\u0061' หรอ รหส 97 (ฐานสบ) มคาเทากบอกขระ 'a'
'\u0E01' หรอ รหส 3585 (ฐานสบ) มคาเทากบอกขระ 'ก'
char (รปพเศษ) เขยนรหสพเศษคลอมดวย Single Quote เชน char tab = '\t';
String (รปทวไป) เขยนสายอกขระคลอมดวย Double Quote เชน String s = "Bank";
String (รปออบเจค) สรางออบเจคจากคลาส String เชน String t = new String("CU");
โจทยขอท 1 [ระดบงาย] จงพจารณาคาสงตอไปนผด ( ) หรอถก ( ) พรอมบอกเหตผล (15 คะแนน) 1) integer x; . 2) int x = 1.5; . 3) byte x = 1000; . 4) int null = 5; . 5) Int y = 1; . 6) float cal = 15.763; . 7) String id = "1"; .
8) char c = 'Tuksin'; . 9) String s1 = 'Apisit'; . 10) String 3Type = "One Two Three"; . 11) short _$abcdefghijklmnopqrstuvwxyz0123456789$_; .
12) boolean flag = 1; . 13) float ตวเลข = 139L; .
14) String _ = "ヰベ㈣㈠ヘョ"; .
15) int ch = '\u0044'; .
โจทยขอท 2 [ระดบปานกลาง] จงเตมเตมคาสงการประกาศและกาหนดคาของตวแปรตอไปนใหสมบรณ พรอมทงระบคาทเกบอยในตวแปรแตละขอ (15 คะแนน) ขอ ประเภทตวแปร การประกาศและกาหนดคาตวแปร คาทเกบในตวแปร
1. var1 = 014;
2. var2 = 014f;
3. int var3 = 'C';
19
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
ขอ ประเภทตวแปร การประกาศและกาหนดคาตวแปร คาทเกบในตวแปร
4. var4 = 0E-0;
5. double var5 = 0x1D;
6. var6 = 1.0e2.0;
7. var7 = .1000;
8. var8 = 08;
9. var9 = null;
10. var10 = 100E012;
11. var11 = 1f + "";
12. var12 = 1e1 + "";
13. var13 = 0d;
14. var14 = 3.f;
15. var15 = 0xbeef;
2. การรบเขาและสงออกขอมล (Input and Output the Data)
1. การรบเขาขอมล (Input the Data) การรบเขาขอมลในภาษาจาวามอยหลายวธดวยกน แตในเอกสารชดนจะนาเสนอการรบเขาขอมลทนยมใชกน
มากในปจจบน นนคอการรบเขาขอมลดวยคลาส Scanner ซงมขนตอนการใชงานดงตอไปน
1) การนาเขาคลาส Scanner กอนเรยกใชงานคลาส Scanner จะตองนาเขาคลาส Scanner กอนเสมอ โดย
ใชคาสง import java.util.Scanner; ซงระบไวกอนเขยนหวคลาส ดงตวอยาง
2) การสรางตวอานจากแปนพมพ เปนการกาหนดชอตวอานเพอใชสาหรบรบคาขอมลตางๆ จากแปนพมพ
โดยจะสรางเพยงครงเดยวเทานน และจะใชงานตวอานนนตลอดทงโปรแกรม ซงมคาสงดงน
Scanner <ชอตวอาน> = new Scanner(System.in);
1 2 3 4
import java.util.Scanner; public class Test { ... }
1 2 3 4 5 6 7
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner kb = new Scanner(System.in); ... } }
System.in หมายถง
แปนพมพ (keyboard)
ตวอานชอวา kb
20
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
3) การรบคาขอมลดวยตวอานจากแปนพมพ ตวอานจากแปนพมพทสรางขนสามารถรบคาขอมลประเภท
จานวนเตม จานวนจรง และสตรง โดยใชคาสงและเมทอดตอไปน
1) คาสงรบคาจานวนเตมประเภท int โดยใชเมทอด nextInt()
เชน int num = kb.nextInt(); (รบคา int จากตวอาน kb มาเกบไวทตวแปร num)
2) คาสงรบคาจานวนเตมประเภท long โดยใชเมทอด nextLong()
เชน long n = kb.nextLong(); (รบคา long จากตวอาน kb มาเกบไวทตวแปร n)
3) คาสงรบคาจานวนจรงประเภท float โดยใชเมทอด nextFloat()
เชน float f = kb.nextFloat(); (รบคา float จากตวอาน kb มาเกบไวทตวแปร f)
4) คาสงรบคาจานวนจรงประเภท double โดยใชเมทอด nextDouble()
เชน double d = kb.nextDouble(); (รบคา double จากตวอาน kb มาเกบไวทตวแปร d) 5) คาสงรบคาขอมลประเภท String ทละบรรทด โดยใชเมทอด nextLine()
เชน String s1 = kb.nextLine(); (รบคา String ทงบรรทดจากตวอาน kb มาเกบไวทตวแปร s1)
6) คาสงรบคาขอมลประเภท String ทละคาหรอทละชวง (แตละชวงคนดวยชองวางหรอ \t หรอ \n)
โดยใชเมทอด next()
เชน String s2 = kb.next(); (รบคา String คาแรกจากตวอาน kb มาเกบไวทตวแปร s2)
โจทยขอท 3 [ระดบงาย] จงเตมเตมคาสงการรบคาของตวแปรในแตละขอตอไปนใหสมบรณ พรอมทงระบคาทเกบอยในตวแปรแตละข อ (15 คะแนน)
ขอ ประเภท ตวแปร
การรบคาจากแปนพมพเพอ เกบยงตวแปรทกาหนด
คาทปอนเขามาทางแปนพมพ
คาทเกบใน ตวแปร
1. var1 = kb.nextInt(); 087
2. var2 = kb.nextLong(); -0
int <ชอตวแปร> = <ชอตวอาน>.nextInt();
long <ชอตวแปร> = <ชอตวอาน>.nextLong();
float <ชอตวแปร> = <ชอตวอาน>.nextFloat();
double <ชอตวแปร> = <ชอตวอาน>.nextDouble();
String <ชอตวแปร> = <ชอตวอาน>.nextLine();
String <ชอตวแปร> = <ชอตวอาน>.next();
หลงชอเมทอด nextInt ตองตามดวยวงเลบเสมอ จงไดเปน nextInt() (หามลมเดดขาด)
Scanner kb = new Scanner(System.in);
21
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
ขอ ประเภท ตวแปร
การรบคาจากแปนพมพเพอ เกบยงตวแปรทกาหนด
คาทปอนเขามาทางแปนพมพ
คาทเกบใน ตวแปร
3. int 7.0
4. var4 = kb.nextFloat(); 22.50000
5. long 46L
6. float 7.2F
7. double -0.1
8. double -13
9. double var10 = kb.nextInt(); 1
10. double var11 = kb.nextInt(); 1.0
11. int var12 = kb.nextDouble(); 1.0
12. var13 = kb.nextLine(); 22.50000
13. var14 = kb.nextLine(); Hi java CU
14. var15 = kb.next(); Hi java CU
15. String var16 = kb.nextInt(); 191
2. การสงออกขอมล (Output the Data) การสงออกขอมลหรอการแสดงผลขอมลสามารถทาไดหลายชองทาง แตชองทางทพนฐานทสดนนกคอจอภาพ
(Monitor/Screen) โดยรายละเอยดของคาสงเบองตนไดกลาวไปแลวในบทท 1 ซงมคาสงดงน
1) การแสดงผลออกทางจอภาพแบบไมขนบรรทดใหม โดยใชเมทอด print()
2) การแสดงผลลพธออกทางจอภาพแบบขนบรรทดใหม โดยใชเมทอด println()
สงทสามารถระบและแสดงผลภายในวงเลบของเมทอดทงสองไดนนมดงน
1) ตวแปร เชน System.out.print(num);
2) ตวเลข เชน System.out.print(13);
3) นพจน เชน System.out.print(x * y + (10 – z));
4) ขอความหรอสตรง เชน System.out.print("Hello Java");
5) ขอ 1-4 ปะปนกน เชน System.out.print("Money = " + (x * y + 92.4) + " Baht");
System.out.println(...);
System.out.print(...); System.out หมายถงจอภาพ
ใชเครองหมาย + เปนตวเชอม
แตละชวงเขาดวยกน
22
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
Please enter number: .
Please enter number: 15 .
Please enter number: 15 Result is 15 .
1 2 3 4
3. รปแบบการเขยนโปรแกรม รบเขาและสงออกขอมลท ตองปฏบตตาม มรายละเอยดดงตวอยางตอไปน
โปรแกรมจะแสดงผลลพธออกทางจอภาพดงน
โจทยขอท 4 [ระดบงาย] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบเลขประจาตวนสต ชอ -นามสกลนสต อายนสต และผลการเรยนเฉลยสะสมของนสต เขามาทางแปนพมพเกบไวในตวแปร id, name, age และ gpa ตามลาดบ และแสดงคาของทงสตวแปรนนออกทางจอภาพใหสวยงาม (10 คะแนน)
1 2 3 4 5 6 7 8 9 10 11 12
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner kb = new Scanner(System.in); System.out.print("Please enter number: "); int num = kb.nextInt(); ... System.out.println("Result is " + num); } }
ตองนาเขาคลาส Scanner
ตองสรางตวอาน
ตองแสดงขอความวาตอง
การรบเขาขอมลอะไร โดย
ใชเมทอด print()
หลงชอเมทอดอยาลมใสวงเลบ
ตองแสดงผลลพธ โดยใชเมทอด println()
โปรแกรมจะแสดงขอความเพอแจงใหผใชทราบวา
ระบบกาลงรอรบคาตวเลขหนงคาจากแปนพมพ
ผใชพมพตวเลข 15 ผานทางแปนพมพพรอมทงกดป ม Enter เพอขน
บรรทดใหม ซงทาใหคาของตวเลข 15 เขาไปเกบอยในตวแปร num
โปรแกรมแสดงคาทเกบอยในตวแปร num
ขนบนจอภาพ
23
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
1 2 3 4
โจทยขอท 5 [ระดบปานกลาง] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบตวเลขจานวนเตม สองจานวนเขามาทางแปนพมพเกบไวในตวแปร a และ b ตามลาดบ แลวทาการสลบคาของสองตวแปรนน โดยทคาของตวแปร a หลงการสลบจะเทากบคาเกาของตวแปร b และคาของตวแปร b หลงการสลบจะเกบคาเกาของตวแปร a พรอมทงแสดงผลลพธออกทางจอภาพตามตวอยางตอไปน (10 คะแนน)
3. ตวดาเนนการและคลาสมาตรฐาน (Operators and Standard Class)
1. ตวดาเนนการ (Operators) แบงออกเปน 5 กลมหลกดงตอไปน
1) ตวดาเนนการทางคณตศาสตร (Arithmetic Operators) ไดแก
สญลกษณ ความหมาย ตวอยาง + การบวก x + y หรอ a + b + c - การลบ x - y หรอ a - b - c
* การคณ x * y หรอ a * b * c / การหาร x / y หรอ a / b / c % การหารเอาแตเศษ (Modulo) x % y หรอ a % b % c
2) ตวดาเนนการเพมคาและลดคา (Increment and Decrement Operators) ไดแก
สญลกษณ ความหมาย ตวอยาง x++ ใชงานตวแปร x กอนเพมคาขนอก 1 ให x = 2, y = 1 จะไดวา x++ + y = 3
++x เพมคาขนอก 1 กอนใชงานตวแปร x ให x = 2, y = 1 จะไดวา ++x + y = 4
x-- ใชงานตวแปร x กอนลดคาลงอก 1 ให x = 2, y = 1 จะไดวา x-- + y = 3
--x ลดคาลงอก 1 กอนใชงานตวแปร x ให x = 2, y = 1 จะไดวา --x + y = 2
Enter a: 13 Enter b: 21 Value of a: 21 Value of b: 13
24
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
3) ตวดาเนนการเปรยบเทยบคา (Comparison/Relational Operators) ไดแก
สญลกษณ ความหมาย ตวอยาง == เทากน x == y (คาตอบเปนคาจรงหรอเทจเทานน) != ไมเทากน x != y (คาตอบเปนคาจรงหรอเทจเทานน)
< นอยกวา x < y (คาตอบเปนคาจรงหรอเทจเทานน) > มากกวา x > y (คาตอบเปนคาจรงหรอเทจเทานน) <= นอยกวาหรอเทากน x <= y (คาตอบเปนคาจรงหรอเทจเทานน) >= มากกวาหรอเทากน x >= y (คาตอบเปนคาจรงหรอเทจเทานน)
4) ตวดาเนนการทางตรรกศาสตร (Logical Operators) ไดแก
สญลกษณ ความหมาย ตวอยาง && และ (AND) (x >= y) && (x != 0)
|| หรอ (OR) (x == y) || (x == z)
! นเสธ (NOT) !(x <= y)
5) ตวดาเนนการกาหนดคา (Assignment Operators) ไดแก
สญลกษณ ความหมาย ตวอยาง = เทากบ x = y นาคา y เกบไวใน x += x += y มคาเทากบ x = x + y x += 14 จะไดวา x = x + 14 -= x -= y มคาเทากบ x = x - y x -= 1 จะไดวา x = x - 1 *= x *= y มคาเทากบ x = x * y x *= y-- จะไดวา x = x * y--
/= x /= y มคาเทากบ x = x / y x /= 5.8 จะไดวา x = x / 5.8
โจทยขอท 6 [ระดบงาย] จงแสดงผลลพธจากสวนของโปรแกรมตอไปน (5 คะแนน) ขอ สวนของโปรแกรม ผลลพธทแสดง
1. int a = 21, b = 0; System.out.println("a" + a - b);
2. double x = 1.0, y = 1.000; System.out.println(x > y);
3. double a = 1.6; a += 5.1; System.out.println(a % 4);
4. int x = 6; System.out.println(x-- + ++x - --x - x-- + x++ + x);
5. boolean a = true, b = true, c = false; System.out.println(a || b && c);
2. กฎการพจารณาลาดบตวดาเนนการ (เฉพาะทใชกนบอยๆ)
ลาดบ ชอตวดาเนนการ / ตวดาเนนการ ตวอยางการทางาน
1. วงเลบ (Parentheses) (…) x – (2 + y) จะทา (2 + y) กอนนา x มาลบออก 2. เรยกเมทอด (Method Call) () Math.sqrt(a + 2) จะทา Math.sqrt(…) กอน
25
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
ลาดบ ชอตวดาเนนการ / ตวดาเนนการ ตวอยางการทางาน
คาบวก (Unary Plus) + 2 * +a จะทา +a กอนนา 2 ไปคณกบคาตอบ 3.
คาลบ (Unary Minus) - –a / 3 จะทา –a กอนนาคาตอบไปหาร 3 คณ (Multiplication) * x * 3 + 2 จะทา x * 3 กอนนาคาตอบไปบวก 2
หาร (Division) / 3 – 5 / x จะทา 5 / x กอนนา 3 มาลบออก 4.
หารเอาแตเศษ (Modulo) % y % 2 + 1 จะทา y % 2 กอนนาคาตอบไปบวก 1 บวก (Addition) + x + 17 > 19 จะทา x + 17 กอนทา >
5. ลบ (Subtraction) - x – 9.5 = 42.5 จะทา x – 9.5 กอนทา =
6. การเปรยบเทยบคา : นอยกวา (<), นอยกวาเทากน (<=), มากกวา (>), มากกวาเทากน (>=) 7. การเปรยบเทยบคา : เทากน (==), ไมเทากน (!=)
8. และ (Logical AND) && a || b && c จะทา && กอน || 9. หรอ (Logical OR) || x = d > 3 || d <= 15 จะทา || กอนทา = 10. เทากบ (Assignment) = จะถกพจารณาหลงสด
หมายเหต ในกรณทตวดาเนนการมลาดบความสาคญเทากน ใหพจารณาการทางานจากซายไปขวา
โจทยขอท 7 [ระดบงาย] จงแสดงลาดบการทางานทถกตองของ ตวดาเนนการของนพจนตอไปน โดยใหเขยนหมายเลขลาดบกากบไวบนตวดาเนนการนน (5 คะแนน)
1) a * (b + -(c / d) / e) + (f – g % h)
2) (1.0 / 2.0) * Math.sin(x – Math.PI / Math.sqrt(y))
3) a * b + (-c) / d / e * f - g % h
4) cal = (1 – x % 2.5 + y * z) + 3 * k – -7 / w
5) cal = x == 5 || x <= 3 && x >= -3 || (x != 0)
3. ประเภทขอมลทเปนผลลพธสดทาย จากการดาเนนการ สามารถสรปความสมพนธของประเภทขอมล ตวเลข ตวอกขระ ตวตรรกะ และ สตรง ได 20 รปแบบ ดงน
รปแบบ ขอมลท 1 กลมของตวดาเนนการ ขอมลท 2 ประเภทขอมลสดทาย 1. ตวเลข + - * / % ตวเลข ตวเลข (ทมศกดศรสงสด )
2. ตวเลข = += -= *= /= ตวเลข[1] ตวเลข (ของขอมลท 1) 3. ตวเลข == != < > <= >= ตวเลข boolean
4. ตวเลข + - * / % = += -= *= /= char ตวเลข
26
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
รปแบบ ขอมลท 1 กลมของตวดาเนนการ ขอมลท 2 ประเภทขอมลสดทาย 5. ตวเลข ++ -- - ตวเลข
6. - ++ -- ตวเลข ตวเลข
7. char + - * / % char ตวเลข (โดยทวไปคอ int) 8. char = += -= *= /= char char
9. char == != < > <= >= char boolean
10. char + - * / % ตวเลข ตวเลข 11. char += -= *= /= ตวเลข char
12. char = ตวเลข[2] char
13. char ++ -- - char
14. - ++ -- char char
15. String + ทกประเภท String
16. ทกประเภท + String String
17. String = String String
18. String == != String boolean
19. boolean = && || boolean boolean
20. - ! boolean boolean (คาตรงขาม)
[1] ประเภทขอมลของขอมลท 1 ตองมศกดศร สงกวาหรอเทากบประเภทขอมลของขอมลท 2 [2] ประเภทขอมลของขอมลท 2 ตองเปนตวเลขจานวนเตมทมศกดศรตากวาหรอเทากบ int เทานน
โจทยขอท 8 [ระดบงาย] จงระบประเภทขอมล ทเปนผลลพธสดทายและคาคาตอบจากการดาเนนการของนพจนตอไปน (10 คะแนน) ขอ นพจน ประเภทขอมลสดทาย คาตอบ
1. (5 + 4) + ((3 + 2L) – 1)
2. (5 – 2 / 1) + 0.000 + '\u0000'
3. 5.0F * 6 – ('D' - 'A')
*4. 2 % (0.4 + 0.3F)
*5. !("Java" == "Jaba");
6. (13 / 5) + (2 / 3)
7. '0' - '1' + "5" + false
8. 4E1 / 2
9. !false || true && false || !true
10. 0.0 / (10 + 'q' – 'Y') != 0L
27
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
(<ประเภทขอมล>) <ขอมล/ตวแปร>
4. การเปลยนประเภทขอมล (Type Conversions) 1) เปลยนแบบอตโนมต โดยทวไปคอมไพเลอรของภาษาจาวาจะปรบเปลยนประเภทขอมลใหอตโนมตตาม
ความเหมาะสม ซงเปนไปตามความสมพนธทง 19 รปแบบทไดกลาวไปในหวขอทแลว ดงตวอยางตอไปน
2) เปลยนโดยการบงคบตามทระบ (Casting) จะเปนการบงคบหรอกาหนดประเภทขอมลทตองการจะให
เปน โดยการใสวงเลบชอประเภทขอมลหนาขอมลทจะเปลยน ดงรปแบบคาสงและตวอยางตอไปน
โจทยขอท 9 [ระดบงาย] จงระบประเภทขอมลทเปนผลลพธสดทายและคาคาตอบจากการดาเนนการของนพจนหรอคาสงตอไปน (10 คะแนน) ขอ นพจน ประเภทขอมลสดทาย คาตอบ
1. (byte)(3 + 5.4) / 7
2. (3 + 5.4) / (float) 7
3. (float)((3 + 2) / 7)
4. char c = (double) 'A';
5. char c = (int) 'b'; c += 1.7;
6. char c = 67 + (int) 3.91
7. (int) 19.8E-1
8. (short)((double) 1 / 2) == 00L + 0
9. (byte) 011 + (short) 1.9991
10. (byte) '0' – '6' + (char) 1.5
5. คลาสมาตรฐานทางคณตศาสตร (Mathematic Class) มเมทอดทสาคญดงน
ลาดบ รปแบบคาสง ประเภทขอมลรบเขา หนาท
1. Math.toRadians(degree) double เปลยนองศาเปนเรเดยน 2. Math.toDegrees(radian) double เปลยนเรเดยนเปนองศา
3. Math.sin(radian) double คานวณคาไซน (Sine) 4. Math.cos(radian) double คานวณคาโคไซน (Cosine)
double a = 34 + 1.0F; //a = 35.0 float b = 4L / 3; //b = 1.0F
int c = 'A'; //c = 65 char d = 65; //d = 'A'
byte b = 50; b = (byte)(b * 2); //b = 100
double x = 5.99; long y = (long) x; //y = 5
char c = '1'; int num = (int) c; //num = 49
int ten = (int) "10"; //Error boolean f = (boolean) 1; //Error
ใชกบขอมลประเภทตวเลข (เตม/จรง) และอกขระ เทานน
28
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
ลาดบ รปแบบคาสง ประเภทขอมลรบเขา หนาท
5. Math.sqrt(x) double คานวณคารากทสอง 6. Math.pow(x, y) double, double คานวณคาเลขยกกาลง xy 7. Math.abs(x) double คานวณคาสมบรณ (Absolute) 8. Math.max(x, y) double, double คานวณคามากระหวาง x กบ y
9. Math.min(x, y) double, double คานวณคานอยระหวาง x กบ y 10. Math.log10(x) double คานวณคาลอกาลทมฐานสบ 11. Math.PI คาคงท PI ซงเทากบ 3.141592653589793…
Math.random() ไมมขอมลรบเขา สรางตวเลขสมในชวง [0.0, 1.0) 12.
(int)(Math.random() * (b – a + 1) + a) สรางตวเลขสมจานวนเตมในชวง a ถง b
หมายเหต ผลลพธทไดทกขอจะเปนประเภท double (ยกเวนขอท 12 สวนลาง ผลลพธจะเปนประเภท int)
โจทยขอท 10 [ระดบงาย] จงเขยนคาสงคานวณ (Assignment Statement) จากนพจนตอไปนใหถกตองตามหลกไวยากรณของภาษาจาวา พรอมทงประกาศประเภทตวแปรทใชใหครบสมบรณ (6 คะแนน) ขอ นพจน คาสง
1. ac4b
r22
2
−
π
2. qpqp
mn2nm 22
+−
−−
3. xy)yx)(yx(
y4x3 43
π+−+
+
โจทยขอท 11 [ระดบงาย] จงเขยนคาสงภาษาจาวาทถกตองสมบรณ เพอกาหนดคาใหกบตวแปร n โดยใชการสมคาตวเลขจานวนเตมตามเงอนไขตอไปน (6 คะแนน) ขอ เงอนไข คาสง
1. สมตวเลข 0 – 9
2. สมตวเลข 1 – 10
3. สมตวเลข 0 – 10
4. สมตวเลข 0 – 987
5. สมตวเลข 1 – 500
6. สมตวเลข 2 – 600
29
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Data Operations and Processing - 02
1 2 3 4
1 2 3 4
โจทยขอท 12 [ระดบปานกลาง] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอ รบตวเลขจานวนเตมทมความยาว 4 หลกหนงคาเขามาทางแปนพมพแลวทาการสลบหลกของตวเลขนนดงตวอยางการแสดงผลตอไปน (10 คะแนน)
โจทยขอท 13 [ระดบปานกลาง] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบตวเลขจานวนเตมจากแปนพมพยาว 6 หลก แลวทาการตดตวเลข 2 หลกแรก และ 2 หลกสดทาย เพอนามาคานวนหาคาผลบวกและผลตางของสองตวเลขนน พรอมทงแสดงผลลพธออกทางจอภาพใหสวยงาม (10 คะแนน)
Enter number: 1234 Reversed number: 4321
Enter number: 9753 Reversed number: 3579
30
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 02 - Data Operations and Processing
1 2 3 4
โจทยขอท 14 [ระดบยาก] ธนาคารลานเกยรแหงประเทศไทยไดวาจางใหนสตชนปท 1 ของคณะวศว-กรรมศาสตร จฬาลงกรณมหาวทยาลย ซงกาลงเรยนวชาการเขยนโปรแกรมดวยภาษาจาวาเบองตน เพอสรางเครองคานวณจานวนเงน (Money Machine) โดยเมอผใชระบจานวนเงนเขามา โปรแกรมจะทาการคานวณดวาจะตองใชธนบตรใบละ 1000 บาท 500 บาท 100 บาท 50 บาท และ 20 บาท อยางละกใบ และเหรยญ 10 บาท 5 บาท 2 บาท และ 1 บาท อยางละกเหรยญ โดยมตวอยางของผลการทางานดงตอไปน (15 คะแนน)
Money : 2897 1000 Baht : 2 500 Baht : 1 100 Baht : 3 50 Baht : 1 20 Baht : 2 10 Baht : 0 5 Baht : 1 2 Baht : 1 1 Baht : 0
1 / 0 = Error 1.0 / 0.0 = Infinity -1.0 / 0.0 = -Infinity 1.0 / (1.0 / 0) = 0.0 0.0 / 0.0 = NaN
Do you know?