Java-Chapter 04 Iteration Statements

1,832 views

Published on

Chapter 04 Iteration Statements

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,832
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
192
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Java-Chapter 04 Iteration Statements

  1. 1. Iteration Statements - 04 Computer Programming using Java 41 CHAPTER คําสังวนซํ้า ่ 04 (Iteration Statements)1. คําสั่งวนซําแบบเบืองต้ นด้ วยคําสั่ง while ้ ้1. นิยามและข้ อกําหนดของคําสั่งวนซําหรือทําซํา ้ ้ 1) คําสังวนซํ ้าหรื อทําซํ ้า (Iteration/Repetition) คือ คําสังที่ใช้ สําหรับวนรอบเพื่อทํางานอย่างใดอย่างหนึ่ง ่ ่ ตามเงื่อนไข (Condition) ที่กําหนดขึ ้น และจะวนทํางานแบบนันไปเรื่ อยๆ ตราบใดที่เงื่อนไขยังเป็ นจริง ้ 2) คําสังวนซํ ้าในภาษาจาวา ประกอบไปด้ วย 3 ชุดคําสังได้ แก่ [1] while, [2] do-while และ [3] for ่ ่2. คําสั่งวนซําด้ วยคําสั่ง while มี 3 ส่วนหลักดังรูปแบบคําสังต่อไปนี ้ ้ ่ 1 Initial; 1 ค่าตังต้ น (Initial) เป็ นการกําหนดค่าเริ่มต้ นสําหรับการวนซํ ้า ้ 2 while(Condition) { 3 Statement(s); 2 เงื่อนไข (Condition) จะเป็ นนิพจน์ตรรกะ (Boolean Expression) 4 Update; 5 } ที่แสดงถึงค่าความจริงว่าเมื่อไรจะวนซํ ้า เมื่อไรจะสิ ้นสุดการวนซํ ้า ผังงาน 3 การเปลี่ยนรอบ (Update) เป็ นการเปลี่ยนรอบการวนซํ ้า (ถ้ าไม่ระบุ ส่วนนี ้จะเกิดการวนซํ ้าแบบไม่ รู้จบ หรื อ Infinite Loop) Initial ภายในคําสัง while ถ้ ามีเพียง 1 คําสังไม่ต้องมีเครื่ องหมายปี ก ่ ่ กาเปิ ดปิ ดก็ได้ False Update Condition พิจารณาเงื่อนไขของคําสัง while ว่าเป็ นจริงหรื อไม่ ถ้ าเป็ นจริง ่ True จะเข้ าทําคําสังทุกๆ คําสัง ภายในคําสัง while และจะวนทํางาน ่ ่ ่ Statement แบบนี ้ไปเรื่ อยๆ จนกว่าเงื่อนไขของคําสัง while จะเป็ นเท็จ ก็จะ ่ สิ ้นสุดการวนซํ ้า ตัวอย่ าง กําหนดค่าเริ่ มต้ นให้ ตวแปร i เท่ากับ 1 แล้ วทําการวนซํ ้าเพื่อ ั int i = 1; 1 2 while(i <= 5) { แสดงค่า i ตังแต่ 1 ถึง 5 โดยในแต่ละรอบการวนซํ ้าจะเพิ่มจํา ้ 3 System.out.print(i); นวนรอบ (เพิ่มค่า i) ขึ ้นทีละ 1 (โดยใช้ คําสัง i++) ดังนัน ่ ้ 4 i++; 5 } ผลลัพธ์ที่ได้ คือ 12345โจทย์ ข้อที่ 1 [ระดับง่ าย] จงแสดงผลลัพธ์ จากส่ วนของโปรแกรมตามค่ า n ที่กาหนดให้ ต่อไปนี ้ (5 คะแนน) ํ 1 int i = 0, j = 5; n = 1 n = 0 n = -1 n = 3 n = -2 2 while (i <= n) { 3 System.out.println(n++); 4 i = i + 2; } 5 while (j > n) { 6 System.out.println(--j); 7 j--; 8 }© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  2. 2. 42 Computer Programming using Java 04 - Iteration Statements โจทย์ ข้อที่ 2 [ระดับง่ าย] จงเขียนเฉพาะคําสั่ง while ตามเงื่อนไขต่ อไปนี ้ (10 คะแนน) 1) แสดงคําว่ า "Java" ขึนบนจอภาพ 100 ครัง (5 คะแนน) ้ ้ 2) แสดงเลขค่ ู 10 ตัวแรกออกทางจอภาพ โดยเริ่มต้ นที่ตวเลข 2 (5 คะแนน) ั 3. คําสั่งวนซําด้ วยคําสั่ง while (true) มีรูปแบบดังต่อไปนี ้ ้ 1 while(true) { 2 Statement(s); คําสัง while(true) มีเงื่อนไข (Condition) เป็ นจริง ่ 3 if(Condition) break; ตลอดกาล ดังนันจะวนซํ ้าแบบไม่ร้ ูจบ ้ 4 } การออกจากคําสัง while(true) ทําได้ เพียงวิธีเดียวเท่านัน คือ ่ ้ ผังงาน ใช้ คําสัง if(…) break; โดยเมื่อเงื่อนไขของคําสัง if เป็ นจริง ่ ่ ก็จะสิ ้นสุดการวนซํ ้า True เข้ าทําคําสังทุกๆ คําสัง ภายในคําสัง while ทันทีเพราะว่าเงื่อนไข ่ ่ ่ Statement เป็ นจริงตลอดกาล และจะวนทํางานแบบนี ้ไปเรื่ อยๆ จนกว่าเงื่อนไข True False ของคําสัง if ซึงอยูภายในคําสัง while เป็ นจริง ก็จะ break ่ ่ ่ ่ Condition การทํางาน และสิ ้นสุดการวนซํ ้า ตัวอย่ าง วนรับค่าตัวเลขจํานวนเต็ม 1 จํานวนทางแป้ นพิมพ์ แล้ วตรวจสอบ 1 Scanner kb = new ...; ว่าตัวเลขที่รับเข้ ามานันเท่ากับ 0 หรื อไม่ ถ้ าใช่ก็จะสิ ้นสุดการวนซํ ้า ้ 2 while(true) { 3 int x = kb.nextInt(); แต่ถ้าไม่เช่นนันก็จะวนรับค่าตัวเลขจํานวนเต็มจากแปนพิมพ์ไป ้ ้ 4 if(x == 0) break; 5 } เรื่ อยๆ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  3. 3. Iteration Statements - 04 Computer Programming using Java 43โจทย์ ข้อที่ 3 [ระดับง่ าย] จงเขียนเฉพาะคําสั่ง while(true) ตามเงื่อนไขต่ อไปนี ้ (10 คะแนน)1) แสดงคําว่ า “เกรี ยน” ขึนบนจอภาพ 1000 ครั ง (5 คะแนน) ้ ้2) สุ่มตัวเลขตังแต่ 0-10 แล้ วแสดงผลขึนบนจอภาพไปเรื่อยๆ จะจบเมื่อสุ่มได้ เลข 5 (5 คะแนน) ้ ้โจทย์ ข้อที่ 4 [ระดับง่ าย] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บค่ าตัวเลขจํานวนเต็มหนึ่งจํานวน ูเข้ ามาทางแปนพิมพ์ แล้ วทําการแสดงค่ าตัวเลขจํานวนเต็มตังแต่ 0 จนถึงตัวเลขที่รับเข้ ามานันออกทาง ้ ้ ้จอภาพทีละบรรทัดให้ สวยงาม (10 คะแนน) 1 2 3 4© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  4. 4. 44 Computer Programming using Java 04 - Iteration Statements โจทย์ ข้อที่ 5 [ระดับง่ าย] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บค่ าตัวเลขจํานวนเต็มหนึ่งจํานวน ู เข้ ามาทางแปนพิมพ์ แล้ ววนรอบแสดงเครื่ องหมายดอกจัน "*" ให้ มีจํานวนเท่ ากับค่ าของตัวเลขที่ ้ รั บเข้ ามานัน และแสดงผลลัพธ์ ส่วนอื่นๆ ให้ เหมือนกับตัวอย่ างต่ อไปนี ้ (10 คะแนน) ้ 1 2 3 4 Enter number: -1 -1 Enter number: 4 4 **** Enter number: 6 6 ****** โจทย์ ข้อที่ 6 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มหนึ่งจํา ู นวนเข้ ามาเก็บไว้ ในตัวแปร n และหาผลบวกของตัวเลขตังแต่ 1 จนถึง n เก็บไว้ ในตัวแปร sum พร้ อมทัง ้ ้ แสดงค่ าของตัวแปร sum ที่เป็ นผลคําตอบสุดท้ ายออกทางจอภาพ (10 คะแนน) 1 2 3 4 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  5. 5. Iteration Statements - 04 Computer Programming using Java 45โจทย์ ข้อที่ 7 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มหนึ่งจํา ูนวนเข้ ามาเก็บไว้ ในตัวแปร n และหาค่ าแฟคทอเรี ยล (Factorial) ของจํานวนนัน (ผลคณของตัวเลข 1 ้ ูจนถึง n) เช่ น 4! = 1 x 2 x 3 x 4 = 24 เป็ นต้ น พร้ อมทังแสดงผลลัพธ์ ออกทางจอภาพ (10 คะแนน) ้ 1 2 3 4โจทย์ ข้อที่ 8 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มสองจํา ูนวนเข้ ามาเก็บไว้ ในตัวแปร a และ b ตามลําดับ และคํานวณหาค่ าเลขยกกําลังของ ab โดย a เป็ นเลขฐานและ b เป็ นเลขชีกาลัง พร้ อมทังแสดงผลลัพธ์ ออกทางจอภาพให้ สวยงาม (10 คะแนน) ้ํ ้ 1 2 3 4 ให้ b มีค่าตังแต่ 0 ขึนไป และ ้ ้ ห้ ามใช้ เมท็อดในคลาส Math ในการคํานวณ© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  6. 6. 46 Computer Programming using Java 04 - Iteration Statements โจทย์ ข้อที่ 9 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มสองจํา ู นวนเข้ ามาเก็บไว้ ในตัวแปร a และ b ตามลําดับ และหาผลคณของตัวเลขสองจํานวนนัน โดยใช้ หลักการ ู ้ บวก (ห้ ามใช้ เครื่ องหมายคณ) เช่ น a x b มีความหมายเท่ ากับ a บวกกัน b ตัว พร้ อมทังแสดงผลลัพธ์ ู ้ ออกทางจอภาพ (10 คะแนน) 1 2 3 4 โจทย์ ข้อที่ 10 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มหนึ่งจํา ู นวนเข้ ามาเก็บไว้ ในตัวแปร n และคํานวณหาผลบวกของตัวเลขคี่ตังแต่ 1 ถึง n ที่หาร 3 ลงตัว พร้ อมทัง ้ ้ แสดงผลลัพธ์ ออกทางจอภาพ (10 คะแนน) 1 2 3 4 5 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  7. 7. Iteration Statements - 04 Computer Programming using Java 47โจทย์ ข้อที่ 11 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มบวกหนึ่งจํา- ูนวนเข้ ามาทางแปนพิมพ์ แล้ วแสดงผลลัพธ์ ท่ ีได้ เป็ นเลขฐานสองที่มีค่าเท่ ากับจํานวนนั น ดังตัวอย่ าง ้ ้ต่ อไปนี ้ (10 คะแนน) Decimal Number: 14 Binary Number: 1110 1 2 3 4 5 Decimal Number: 345 Binary Number: 1010110012. คําสั่งวนซําแบบเบืองต้ นด้ วยคําสั่ง for ้ ้1. คําสั่งวนซําด้ วยคําสั่ง for มี 3 ส่วนหลักเช่นเดียวกับคําสัง while ดังรูปแบบต่อไปนี ้ ้ ่ 1 for(Initial;Condition;Update) { 2 Statement(s); [1] ค่าตังต้ น (Initial) [2] เงื่อนไข (Condition) ้ 3 } และ [3] การเปลี่ยนรอบ (Update) ทัง้ 3 ส่วนนี ้ จะอยูภายในส่วนหัวของคําสัง for ทังหมด ่ ่ ้ ผังงาน ภายในคําสัง for ถ้ ามีเพียง 1 คําสังไม่ต้องมี ่ ่ Initial เครื่ องหมายปี กกาเปิ ดปิ ดก็ได้ พิจารณาเงื่อนไขของคําสัง for ว่าเป็ นจริ ง ่ False Update Condition หรื อไม่ ถ้ าเป็ นจริ งจะเข้ าทําคําสังทุกๆ คําสัง ่ ่ True ภายในคําสัง for และจะวนทํางานแบบนี ้ไป ่ Statement เรื่ อยๆ จนกว่าเงื่อนไขของคําสัง for จะเป็ นเท็จ ่ ก็จะจบการวนซํ ้า© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  8. 8. 48 Computer Programming using Java 04 - Iteration Statements ตัวอย่ าง กําหนดค่าเริ่ มต้ นให้ ตวแปร i เท่ากับ 1 แล้ วทําการวนซํ ้า ั 1 2 for(int i = 1; i <= 5; i++) { System.out.print(i); เพื่อแสดงค่า i ตังแต่ 1 ถึง 5 โดยในแต่ละรอบการวนซํ ้า ้ 3 } จะเพิ่มค่า i ขึ ้นทีละ 1 ดังนันผลลัพธ์ที่ได้ คือ 12345 ้ โจทย์ ข้อที่ 12 [ระดับง่ าย] จงแสดงผลลัพธ์ จากส่ วนของโปรแกรมตามค่ า n ที่กาหนดให้ ต่อไปนี ้ (4 คะแนน) ํ 1 double c = 3.0; n = 3 n = 0 n = 1 n = 4 2 for(c = 1.0; c <= n; c += 0.1) 3 System.out.println(c++); 4 c++; 5 for(int i = 6; i > n; i--) { 6 System.out.print(i); 7 System.out.print(n++); 8 } โจทย์ ข้อที่ 13 [ระดับง่ าย] จงเขียนเฉพาะคําสั่ง for ตามเงื่อนไขต่ อไปนี ้ (10 คะแนน) 1) แสดงคําว่ า "Get A" ขึนบนจอภาพ 1000 ครัง (5 คะแนน) ้ ้ 2) แสดงเลขค่ ู 900 ตัวแรกออกทางจอภาพ (เริ่ มที่ 78) (5 คะแนน) 2. เปรียบเทียบคําสั่ง while และคําสั่ง for 1) คําสัง while และคําสัง for มีลกษณะการทํางานที่วนซํ ้าเหมือนกัน แต่มีรูปแบบขการเขียนที่แตกต่างกัน ่ ่ ั 2) คําสัง while ใช้ วนซํ ้าเมื่อไม่ทราบจํานวนรอบที่แน่ชด แต่คําสัง for ใช้ วนซํ ้าเมื่อทราบจํานวนรอบที่แน่ชด ่ ั ่ ั 3) การแปลงคําสัง while ให้ เป็ นคําสัง for ่ ่ 1 1 int i = 1; 1 for(int i = 1; i <= 5; i++) { 2 while(i <= 5) { 2 ... 3 ... 3 } 2 4 i++; 5 } 3 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  9. 9. Iteration Statements - 04 Computer Programming using Java 49โจทย์ ข้อที่ 14 [ระดับง่ าย] จงเขียนส่ วนของโปรแกรมภาษาจาวาเพื่อเปลี่ยนคําสั่ง while ในโจทย์ ข้อที่ 6ถึง 9 ให้ เป็ นคําสั่ง for โดยไม่ ต้องเขียนโปรแกรมในส่ วนของการรั บค่ าและแสดงผล และสามารถเรี ยกใช้ ตวแปรเดิมของการรั บค่ าได้ เลย แต่ ตวแปรอื่นๆ จะต้ องประกาศใหม่ ทงหมด (20 คะแนน) ั ั ั้1) แปลงเฉพาะคําสั่ง while ในโจทย์ ข้อที่ 6 ให้ เป็ นคําสั่ง for (5 คะแนน)2) แปลงเฉพาะคําสั่ง while ในโจทย์ ข้อที่ 7 ให้ เป็ นคําสั่ง for (5 คะแนน)3) แปลงเฉพาะคําสั่ง while ในโจทย์ ข้อที่ 8 ให้ เป็ นคําสั่ง for (5 คะแนน)4) แปลงเฉพาะคําสั่ง while ในโจทย์ ข้อที่ 9 ให้ เป็ นคําสั่ง for (5 คะแนน)© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  10. 10. 50 Computer Programming using Java 04 - Iteration Statements โจทย์ ข้อที่ 15 [ระดับง่ าย - ระดับยาก] จงเขียนเฉพาะคําสั่ง for เพื่อหาคําตอบของสมการต่ อไปนี ้ พร้ อม ทังประกาศตัวแปรทุกตัวที่เรี ยกใช้ งาน และห้ ามเรียกใช้ เมท็อดในคลาส Math (30 คะแนน) ้ 1) [ระดับง่ าย] 5 + 10 + 15 + ... + 40 (5 คะแนน) 2) [ระดับง่ าย] 1 + 8 + 27 + ... + 20 3 (5 คะแนน) 3) [ระดับปานกลาง] 1 + 3 + 7 + 15 + 31 + ... + (215 − 1) (5 คะแนน) 1 1 1 1 1 4) [ระดับปานกลาง] 1 + − + − + ... + (5 คะแนน) 2 3 4 5 30 © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  11. 11. Iteration Statements - 04 Computer Programming using Java 51 23 25 27 29 211 2195) [ระดับยาก] 2 − + − + − + ... − (10 คะแนน) 3! 5! 7! 9! 11! 19!โจทย์ ข้อที่ 16 [ระดับปานกลาง] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรับตัวเลขจํานวนเต็ม 100 จํา- ูนวนทางแปนพิมพ์ แล้ วทําการหาค่ าสงสุด (Maximum) ค่ าตํ่าสุด (Minimum) และค่ าเฉลี่ย (Average) ของ ้ ูตัวเลขทังหมด พร้ อมทังแสดงผลลัพธ์ ท่ ได้ ออกทางจอภาพ (10 คะแนน) ้ ้ ี 1 2 3 4 5© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  12. 12. 52 Computer Programming using Java 04 - Iteration Statements โจทย์ ข้อที่ 17 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มเข้ ามาทาง ู แปนพิมพ์ หนึ่งจํานวน แล้ วแสดงผลลัพธ์ ตามรปทรงต่ อไปนี ้ (10 คะแนน) ้ ู Number: 5 1 2 3 4 5 * ** *** **** ***** Number: 10 * ** *** **** ***** ****** ******* ******** ********* ********** โจทย์ ข้อที่ 18 [ระดับยาก] จงเขียนโปรแกรมภาษาจาวาที่สมบรณ์ เพื่อรั บตัวเลขจํานวนเต็มหนึ่งจํานวน ู ทางแปนพิมพ์ และทําการตรวจสอบว่ าตัวเลขดังกล่ าวเป็ นจํานวนเฉพาะหรือไม่ พร้ อมทังแสดงผลลัพธ์ ท่ ี ้ ้ ได้ ดงตัวอย่ าง ซึ่งจํานวนเฉพาะ คือ จํานวนที่ค่า 1 และตัวมันเองเท่ านันที่หารลงตัว (15 คะแนน) ั ้ 1 2 3 4 5 Number: 17 17 is a prime number Number: 45 45 is not a prime number © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้

×