Java-Chapter 03 Decision Statements
-
Upload
wongyos-keardsri -
Category
Documents
-
view
1.017 -
download
1
description
Transcript of Java-Chapter 03 Decision Statements
31
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Decision Statements - 03
CHAPTER 03
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
คาสงตดสนใจ
(Decision Statements)
1. คาสงตดสนใจแบบเบองตน (Basic Decision Statements)
1. นยามและขอกาหนดของคาสงตดสนใจ 1) คาสงตดสนใจ คอ คาสงทใชสาหรบเลอกทางานหรอตดสนใจทางานตามเงอนไข (Condition) อยางใด
อยางหนงทกาหนดขน เมอเงอนไขนนเปนจรง
2) คาสงตดสนใจในภาษาจาวา ประกอบไปดวย 2 ชดคาสงไดแก [1] if-else และ [2] switch-case
โดยในเอกสารบทนจะกลาวถงเพยงแคคาสง if-else เทานน
3) ชดคาสงตดสนใจ ถามหลายเงอนไขจะทางานเพยงแคกรณใดกรณหนงทเปนจรงเพยงกรณเดยวเทานน
2. คาสงตดสนใจแบบ 1 เงอนไข คาสงตดสนใจแบบ 1 เงอนไขนจะใชคาสง if เพยงอยางเดยวในการทางาน โดยมรปแบบดงน
ตวอยาง
โจทยขอท 1 [ระดบงาย] จงแสดงผลลพธจากสวนของโปรแกรมตามคา n ทกาหนดใหตอไปน (5 คะแนน)
ผงงาน
Condition True
False Statement
1 2 3
if(Condition) { Statement; }
เงอนไข (Condition) จะเปนนพจนตรรกะ (Boolean Expression)
ทแสดงถงคาความจรงวาเมอไรจะทาในคาสง if หรอเมอไรไมทา
ภายในคาสง if สามารถมคาสงไดมากกวา 1 คาสง แตถามเพยง
1 คาสงไมตองมเครองหมายปกกาเปดปดกได
พจารณาเงอนไขของคาสง if วาเปนจรงหรอไม ถาเปนจรงจะเขา
ทาคาสงภายในคาสง if ทกๆ คาสง ถาเปนเทจจะไมเขาทา
if(score >= 100) { System.out.print("A"); } System.out.print("B"); System.out.print("C");
ถา score = 120 จะแสดงผล ABC
ถา score = 100 จะแสดงผล ABC
ถา score = 60 จะแสดงผล BC
if(n < 50) System.out.println("1"+n); System.out.println(n++); if(n <= 75) System.out.println("3"); if(n >= 100) { System.out.println(n--); System.out.println(--n); } System.out.println(n++);
n = 49 n = 75 n = 60 n = 100 n = 123
32
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 03 - Decision Statements
1 2 3 4 5
1 2 3 4 5 6
โจทยขอท 2 [ระดบงาย] จงเขยนเฉพาะคาสง if ตามเงอนไขทกาหนดใหตอไปน (15 คะแนน)
1) ถาตวแปร x มคามากกวา 0 ใหแสดงคารากทสองของตวแปร x ขนบนจอภาพ (5 คะแนน)
2) ถาตวแปร i มคานอยกวาหรอเทากบ 10 ใหเพมคาตวแปร i นนขนอก 1 (5 คะแนน)
3) ถาตวแปร gpa มคามากกวาหรอเทากบ 2.00 ใหแสดงขอความวา "Pass" ขนบนจอภาพ ถาไมเชนนน ใหแสดงขอความวา "Retire" ขนบนจอภาพ (5 คะแนน)
3. คาสงตดสนใจแบบ 2 เงอนไข คาสงตดสนใจแบบ 2 เงอนไขนจะใชคาสง if-else ในการทางาน โดยมรปแบบดงน
ผงงาน
if(Condition) { Statement1; } else { Statement2; }
ถงแมวาจะม 2 เงอนไข กตาม แตใหระบเงอนไขไวทคาสง if
เทานน โดยไมตองระบเงอนไขทคาสง else (หลงคาสง else
หามใสเงอนไข (Condition) โดยเดดขาด)
ภายในคาสง if และ else สามารถมคาสงไดมากกวา 1 คาสง
แตถามเพยง 1 คาสงไมตองมเครองหมายปกกาเปดปดกได
if(score >= 100) { System.out.print("A"); } else { System.out.print("B"); } System.out.print("C");
Condition True False
Statement1 Statement2
คาสง if-else ไมสามารถเขาทาคาสงภายในพรอมกนได โดย
จะเขาทาเพยงกรณ if หรอ else กรณใดกรณหนงเทานน
พจารณาเงอนไขของคาสง if วาเปนจรงหรอไม ถาเปนจรงจะเขา
ทาคาสงภายใน if ทกๆ คาสง แตถาเปนเทจจะเขาทาคาสง
ภายใน else ทกๆ คาสง
ถา score = 120 จะแสดงผล AC
ถา score = 100 จะแสดงผล AC
ถา score = 60 จะแสดงผล BC
33
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Decision Statements - 03
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9
โจทยขอท 3 [ระดบงาย] จงแสดงผลลพธจากสวนของโปรแกรมตามคา s ทกาหนดใหตอไปน (5 คะแนน)
โจทยขอท 4 [ระดบงาย] จงเขยนเฉพาะคาสง if-else เพอตรวจสอบตวเลขจานวนเตมทเกบในตวแปร n เปนเลขคหรอเลขค ถาเปนเลขคใหแสดงคาตวเลขนนตามดวยขอความ "is odd number" ขนบนจอภาพ ถาเปนเลขคใหแสดงคาตวเลขนนตามดวยขอความ "is even number" ขนบนจอภาพ (5 คะแนน)
4. คาสงตดสนใจแบบมากกวา 2 เงอนไข (หลายเงอนไข)
คาสงตดสนใจแบบมากกวา 2 เงอนไขนจะใชคาสง if-else ซอน if-else ในการทางาน โดยมรปแบบดงน
if(s >= 40) System.out.println("1"+s); else { System.out.println("0"); System.out.println(++s); } if(s >= 90) System.out.println(s++); else System.out.println(++s); System.out.println(--s);
s = 39 s = 40 s = 89 s = 100 s = 0
ผงงาน
if(Condition1) { Statement1; } else if(Condition2) { Statement2; } else if(Condition3) { ... } else { StatementN; }
จะระบ เงอนไข ทคาสง if หรอ else if เทานน แตจะไม
ระบเงอนไขทคาสง else โดยเดดขาด และสามารถตดคาสง
else ออกไปได (จะกลาวรายละเอยดอกครงในบทท 9)
ถามหลายเงอนไขทเปนจรงจะเขาทาเพยงกรณแรกทพบวาเปน
จรงเทานน (กรณทเหลอจะไมเขาทาอกถงแมวาจะเปนจรง)
พจารณาเงอนไขของคาสง if วาเปนจรงหรอไม ถาเปน
จรงจะเขาทาคาสงภายในคาสง if ทกๆ คาสง ถาเปน
เทจจะพจารณาเงอนไขของคาสง else if วาเปนจรง
หรอไม ถาเปนจรงจะเขาทาคาสงภายในคาสง else
if ทกๆ คาสง ซงจะทาแบบนไปเรอยๆ จนถงคาสง
สดทาย ถาไมมเงอนไขใดเลยเปนจรงจะเขาทาภายใน
คาสง else ทกๆ คาสง (เลอกทาเพยงกรณเดยวเทานน)
Condition1 True False
Statement1
Statement2
Condition2 False True
34
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 03 - Decision Statements
โจทยขอท 5 [ระดบงาย] จงแสดงผลลพธจากสวนของโปรแกรมตามคา score ตอไปน (11 คะแนน)
โจทยขอท 6 [ระดบงาย] จงเขยนเฉพาะคาสง if-else ซอน if-else เพอตรวจสอบวาตวเลขจานวนเตม ทเกบอยในตวแปร num เปนจานวนเตมประเภทใด ถาเปนจานวนเตมบวกใหแสดงขอความวา "Positive Number" ขนบนจอภาพ ถาเปนจานวนเตมลบใหแสดงขอความวา "Negative Number" ขนบนจอภาพ ถาเปนจานวนเตมศนยใหแสดงขอความวา "Zero Number" ขนบนจอภาพ (8 คะแนน)
5. การเขยนเงอนไขหรอนพจนตรรกะ (Condition / Boolean Expression) 1) เงอนไขหรอนพจนตรรกะจะเปนคาความจรง (Boolean) ทมคาเปน True หรอ False อยางใดอยางหนง
เทานน เชน a == b, grade == 'A', x < 4, y >= 10.0, 1 == 1.0 เปนตน
2) ตวดาเนนการทใชสาหรบการเขยนนพจนตรรกะคอ ตวดาเนนการเปรยบเทยบคา (Comparison Opera-
tors) ซงไดแกเครองหมาย == != < > <= >=
3) ถาเงอนไขหรอนพจนตรรกะมหลายเงอนไขจะใชตวดาเนนการทางตรรกศาสตร (Logical Operators) ซง
ไดแกเครองหมาย && || ! ในการเชอมเงอนไขตางๆ เขาดวยกน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
if(score > 100) { System.out.println("Error 1"); } else if(score < 0) { System.out.println("Error 2"); } else if(score == 0) { System.out.println("Error 3"); } else if(score >= 80) { System.out.println("A"); } else if(score >= 75) { System.out.println("B+"); } else if(score >= 70) { System.out.println("B"); } else if(score >= 65) { System.out.println("C+"); } else if(score >= 60) { System.out.println("C"); } else if(score >= 55) { System.out.println("D+"); } else if(score >= 50) { System.out.println("D"); } else { System.out.println("F"); }
ขอ คา score ผลลพธทแสดง
1. 90
2. -3
3. 47
4. 55
5. 64
6. 79
7. 0
8. 101
9. 71
10. 50
11. 66
35
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Decision Statements - 03
1 2 3 4
1 2 3 4 5 6 7 8
{ int a = 1; { int b = 2; } { a = 3; } b = 4; //Error int c = a; c = c + 1;
}
4) ขอมลทนามาเปรยบเทยบตองเปนประเภทเดยวกน ถาไมเชนนนระบบจะปรบใหเปนประเภทเดยวกน
5) ระวงเครองหมาย = และ == เชน ให n = 1 ความหมายจะไมเหมอนกบ n == 1 โดยท n = 1 เปนการ
กาหนดคาใหกบตวแปร n ใหเทากบ 1 สวน n == 1 เปนการเปรยบเทยบคาวา n เทากบ 1 จรงหรอไม
โจทยขอท 7 [ระดบงาย] จงหาคาตอบจากนพจนตรรกะตอไปนวาเปนจรง (T) หรอเทจ (F) (15 คะแนน) ขอ นพจนตรรกะ คาตอบ (T/F) หมายเหต
1. (2 < 5) && (6 != 7) || (3 > 4) -
2. (x > 13) || (x <= 13) && x != 13 x = 13
3. (a++ != 2) a = 1
4. (--a == 2) a = 2
5. (x++ == 9) && (--x == 9) && (x == 9) x = 9
6. 50 <= a < 150 a = 100
7. a += 2 == 6 a = 4
8. 45 <= 'A' && '0' == 48 -
9. num <= 'B' num = 66.0F
10. 1 >= 1.00 -
11. 95.7 != 95.700000000 -
12. 2.0F != 2.0D -
13. 10 <= 10L -
*14. (1.1 + 2.2) == 3.3 -
*15. s == "java" s = "java"
6. ขอบเขตของตวแปร (Scope Rule) 1) กฏของตวแปรและการกาหนดขอบเขตของตวแปร
(1) ตวแปรประกาศภายใน Block ไหนสามารถเรยกใชไดภายใน Block นนเทานน
(2) ตวแปรประกาศทบรรทดใดจะสามารถเรยกใชไดตงแตบรรทดนนลงไปจนสนสด Block ทประกาศเทานน
int x; x = 5; y = 30.5; //Error double y;
ตวแปรตองประกาศกอนเรยกใชงาน
ไมสามารถเรยกใชงานตวแปร y กอนการประกาศตวแปรได
ไมสามารถเรยกใชงานตวแปร b หลงจากทสนสด Block
ทประกาศได
36
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 03 - Decision Statements
1 2 3 4 5 6
int x = 5; if (x < 10) { int y = x; } System.out.println(x); System.out.println(y); //Error
2) ขอบเขตของตวแปรภายในและภายนอกคาสง if-else (1) ตวแปรประกาศภายในคาสง if หรอ else จะสามารถเรยกใชงานไดภายในคาสง if หรอ else
เทานน เมอจบคาสง if หรอ else จะไมสามารถเรยกใชตวแปรนนไดอก
(2) ตวแปรประกาศภายนอกและอยเหนอคาสง if หรอ else จะสามารถเรยกใชงานไดภายในคาสง if
หรอ else และเมอจบคาสง if หรอ else กยงสามารถเรยกใชตวแปรนนไดเชนเดม
โจทยขอท 8 [ระดบงาย] จงพจารณาสวนของโปรแกรมภาษาจาวาตอไปน เขยนถก ( ) หรอผด ( ) ตามหลกขอบเขตของตวแปร พรอมอธบายเหตผล (6 คะแนน) 1) int y = 25; if (y > 30) { System.out.println(y); }
2) int y; if (y <= 10) { System.out.println(y);
}
3) int x = 1; int y = 1; if (x == y) { int z = x + y; } System.out.println(z);
4) int x = 100; if (x < 50) { int y = ++x; System.out.println(y); } else { int y = --x; System.out.println(y); }
5) int x = 100, y; if (x < 50) { int y = ++x; } else { int y = --x; } System.out.println(y);
6) int x = 100, y; if (x > 50) { y = ++x; } if (x < 50) { y = --x; } System.out.println(y);
ตวแปร y ถกประกาศภายในคาสง if สามารถ
เรยกใชงานไดภายในคาสง if เทานน เมอจบ
คาสง if แลว จะไมสามารถเรยกใชงานไดอก
37
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Decision Statements - 03
1 2 3 4
1 2 3 4
โจทยขอท 9 [ระดบงาย] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบคาตวเลขจานวนเตมหนงคาเขามาทางแปนพมพเกบไวในตวแปร n แลวหาคาสมบรณ (Absolute) ของตวแปร n นน พรอมทงแสดงผลลพธขนบนจอภาพ โดยหามใชคาสงจากคลาส Math และหามประกาศตวแปรใดๆ เพมเตม (10 คะแนน)
โจทยขอท 10 [ระดบงาย] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบตวเลขจานวนเตมจากทางแปน - พมพสองตวเขามาเกบไวในตวแปร a และ b ตามลาดบ แลวทาการแสดงผลลพธวาจานวนใดทมคามากกวากนหรอมคาเทากนออกทางจอภาพ (ใหใชเพยงคาสง if เทานนหามใชคาสง else) (10 คะแนน)
38
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 03 - Decision Statements
1 2 3 4
โจทยขอท 11 [ระดบปานกลาง] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอรบวนเดอนปเกดของนสตคณะวศวกรรมศาสตรเขามาทางแปนพมพหนงคน เพอใชคานวณและแสดงคาระดบความเกรยน (Noob Levels) ทประกอบไปดวยระดบท 1 เกรยน (Noob) ระดบท 2 เกรยนเรยกพอ (Father Noob) ระดบท 3 เกรยนเทพ (God Noob) และระดบท 4 เกรยนเมพ (Hof Noob) โดยใหรบขอมลทงสามคาอยภายใน บรรทดเดยวกน และแตละคาแบงดวยชองวางอยางนอยหนงชองวาง เชน "13 006 2526" หรอ "1 12 2535" หรอ "04 08 2537" เปนตน และใหใชสตรในการคานวณหาคาระดบความเกรยนตามทกาหนดใหดงตอไปน (10 คะแนน)
โจทยขอท 12 [ระดบปานกลาง] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอใชในการ คานวณหาคาความตานทานรวมของวงจรไฟฟาทประกอบไปดวยตวตาน 3 ตว ซงตอแบบอนกรมหรอตอแบบขนาน โดยจะ ตองรบคาของตวตานทานทง 3 ตว ทเปนคาจานวนเตมเขามาทางแปนพมพทละคาเกบไวในตวแปร r1, r2 และ r3 ตามลาดบ พรอมทงรบจานวนเตมอกหนงคาเกบไวในตวแปร type เพอใชแทนรปแบบการตอวงจร โดยถาพมพคา 1 โปรแกรมจะแสดงคาความตานทานรวมของวงจรแบบอนกรม ถาพมพคา 2 โปรแกรมจะแสดงคาความตานทานรวมของวงจรแบบขนาน ถาพมพคาอนๆ นอกเหนอจากนใหแสดงขอความวา "Incorrect Circuit Type" โดยกาหนดใหใชสตรดงตอไปนในการคานวณ และกาหนดใหใชตวแปร rTotal เกบคาผลลพธของความตานทานรวม (10 คะแนน)
1)4)%yearmonthday((NoobLevel +++=
39
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java Decision Statements - 03
1 2 3 4
(กาหนดใหใชคาสง if เทานนในการเขยนโปรแกรม หามใชคาสง else if หรอ else อยางเดดขาด)
โจทยขอท 13 [ระดบยาก] จงเขยนโปรแกรมภาษาจาวาทสมบรณเพอตรวจสอบเลขประจาตวนสตทรบเขามาทางแปนพมพความยาว 10 หลก ถาไมถกตองใหแสดงขอความวา "Invalid ID" และมรายละเอยดดงตอไปน 1. ตรวจสอบวาใชนสตคณะวศวกรรมศาสตรหรอไม โดยตวเลข 2 หลกสดทายจะตองเปนตวเลข 21
แลวแสดงขอความวา "Engineering Student" ถาใชนสตคณะวศวกรรมศาสตร ถาไมเชนนนใหแสดงขอความวา "Unknown Student"
2. ตรวจสอบวาเปนนสตในระดบปรญญาบณฑต (Undergraduate) หรอนสตระดบบณฑตศกษา (Graduate) โดยถาหลกท 3 เปนตวเลข 3 ใหแสดงขอความวา "Undergraduate" ถาเปนตวเลข 7 ใหแสดงขอความวา "Graduate" ถาไมเชนนนใหแสดงขอความวา "Unknown Levels"
แบบขนาน 321total R1
R1
R1
R1
++=
แบบอนกรม 321total RRRR ++=
40
© สงวนลขสทธ พฤศจกายน 2553 (ปรบปรงครงท 7 ฉบบใชตวภาค 2/2553) เรยบเรยงโดย วงศยศ เกดศร (แบงค)
Computer Programming using Java 03 - Decision Statements
1 2 3 4 5 6
3. ตรวจสอบวาเปนนสตชนปใด โดย 2 หลกแรกจะแสดงปการศกษาแรกทนสตเขาเรยน ใหคานวนและแสดงชนปปจจบนของนสต และถาเปนนสตระดบปรญญาบณฑตใหแสดงขอความเพมเตมตอทายดงน นสตป 1 แสดงคาวา "Freshmen" นสตป 2 แสดงคาวา "Sophomore" นสตป 3 แสดงคาวา "Junior" นสตป 4 แสดงคาวา "Senior" สวนนสตปอนๆ ไมตองแสดงขอความใดเพมเตม
ผลลพธการทางานของโปรแกรมแสดงดงตวอยางตอไปน (15 คะแนน)
Student ID : 5330123421 Engineering Student Undergraduate 1 (Freshmen)
Student ID : 5271822821 Engineering Student Graduate 2