java-chapter 02 data operations and processing

16
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

Upload: wongyos-keardsri

Post on 25-May-2015

1.899 views

Category:

Documents


6 download

DESCRIPTION

Chapter 02 Data Operations and Processing

TRANSCRIPT

Page 1: Java-Chapter 02 Data Operations and Processing

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

Page 2: Java-Chapter 02 Data Operations and Processing

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

เลก ใหญ

Page 3: Java-Chapter 02 Data Operations and Processing

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) หรอคาจากตวแปรอนกได

ซายตองใหญหรอพอดกบขวา

Page 4: Java-Chapter 02 Data Operations and Processing

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';

Page 5: Java-Chapter 02 Data Operations and Processing

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

Page 6: Java-Chapter 02 Data Operations and Processing

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

Page 7: Java-Chapter 02 Data Operations and Processing

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 หมายถงจอภาพ

ใชเครองหมาย + เปนตวเชอม

แตละชวงเขาดวยกน

Page 8: Java-Chapter 02 Data Operations and Processing

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

ขนบนจอภาพ

Page 9: Java-Chapter 02 Data Operations and Processing

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

Page 10: Java-Chapter 02 Data Operations and Processing

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(…) กอน

Page 11: Java-Chapter 02 Data Operations and Processing

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 ตวเลข

Page 12: Java-Chapter 02 Data Operations and Processing

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

Page 13: Java-Chapter 02 Data Operations and Processing

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

ใชกบขอมลประเภทตวเลข (เตม/จรง) และอกขระ เทานน

Page 14: Java-Chapter 02 Data Operations and Processing

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

Page 15: Java-Chapter 02 Data Operations and Processing

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

Page 16: Java-Chapter 02 Data Operations and Processing

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?