การเขียนโปรแกรมแบบวนซ้ำ - wathinee . reru . ac . th

Download Report

Transcript การเขียนโปรแกรมแบบวนซ้ำ - wathinee . reru . ac . th

บทที่ 5
การเขี ย นโปรแกรมแบบวนซ้า :
คาสั่ ง WHILE
คาสั่ ง DO….WHILE
โครงสร้างควบคุม (Control Structure)
2
 การควบคุมโปรแกรมให้ทางานได้ตามต้องการ เราจาเป็ นต้องมี
ความเข้าใจเกี่ยวกับโครงสร้างควบคุมของการเขียนภาษาโปรแกรม
ประกอบด้วย
ลาดับการทางาน (Sequence)
ทางเลือก,ตัดสิ นใจ (Decision)
การวนซ้ า (Iteration)
การเขียนโปรแกรมแบบ วนซ ้า
คาสัง่ for
คาสัง่ while
คาสัง่ do..while
การใช้ while
ลูป while จะทาการตรวจสอบเงื่อนไขก่อน
หากพบว่าเงื่อนไขเป็ นเท็จจะไม่เข้าไปทา
Statement(คาสัง่ ) ภายในลูป
คาสัง่ while
start
กาหนดค่ าเริ่มต้ น
เงือ่ นไข
เปลีย่ นแปลงค่ าตัวแปร
เท็จ
จริ ง
คาสั่งต่าง ๆ
คาสัง่ ถัดไป
End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คาสัง่ while)
start
int num=1
num<=100
num++
เท็จ
จริ ง
Print
num
End
คาสัง่ while
รู ปแบบ
กาหนดค่ าเริ่มต้ น;
while(เงือ่ นไข){
คาสัง่ ในลูป ; //สามารถมีได้มากกว่า 1 คาสัง่
คาสั่ งเปลีย่ นแปลงค่ า;
}
ตัวอย่าง
ให้แสดงข้อมูล 20,15,10,5,0
int x=20;
while(x>0) {
System.out.println(x);
x=x-5;
}
System.out.println(“End Program”);
20
15
10
5
End Program
แบบฝึ กหัด
1. ให้แสดงข้อมูล 1-100
2. ระหว่างเลข 1 – 100 ให้แสดงเฉพาะเลขคู่
3. เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดง
ค่าตัวเลขนั้น ทางหน้าจอแต่ถา้ ระบุตวั เลขเป็ น
999 จึงหยุด
ฝึ กเขียนคาสัง่
ในแต่ละ Loop ให้แสดงคาว่า “ Ture ”
จากนั้นสอบถาม User ว่าต้องการให้แสดงข้อความอีกหรื อไม่
ถ้า User input y หรื อ Y ให้แสดงข้อความอีก
ถ้า input ข้อมูลอื่นๆให้ ออกจากโปรแกรม
ตัวอย่างแบบ ที่ 1 :
แนะนาคาสั่ง ตรวจสอบการมีคา่ เท่ากันของ ข้ อความ(String)
ตัวอย่าง
String x=“yes”;
โจทย์ตอ้ งการทราบว่า ข้อความที่เขียน คือข้อความ yes ใช่หรื อไม่
รู ปแบบ
ตัวแปร.equals(ข้อความที่ตอ้ งการ)
x.equals(“yes”)
ผลที่ได้จากคาสัง่ นี้คือ true,false
หมายเหตุ : ค่าเริ่ มต้นของตัวแปรประเภท String คือ null
ตัวอย่างแบบ ที่ 2 :
โจทย์
1. ให้รับค่าข้อมูลคะแนน ทางแป้ นพิมพ์ทีละคน จากนั้นแสดงผลคะแนนดังกล่าว
2. สอบถามผูใ้ ช้วา่ ต้องการทางานต่อ
หรื อไม่(Y/N)
ถ้า Y ให้รับค่าข้อมูลคนต่อไป
ถ้า N ให้ออกจากโปรแกรม
โปรแกรม
โจทย์
ให้รับค่าข้อมูล ชื่อ และคะแนนสอบทางแป้ นพิมพ์ทีละคน
ถ้าคะแนน 50 ขึ้นไปคือสอบผ่าน ถ้าน้อยกว่า 50 คือสอบไม่ผา่ น
กรุ ณาระบบชื่อ : som
จากนั้นสอบถามผูใ้ ช้วา่
กรุ ณาระบุคะแนน : 77
ผลสอบของ som คือ : Pass
ต้องการทางานต่อหรื อไม่(Y/N)
ต้องการทางานต่อหรื อไม่ [y/n] : y
ถ้า Y ให้รับค่าข้อมูลคนต่อไป
กรุ ณาระบบชื่อ : yai
กรุ ณาระบุคะแนน : 30
ถ้า N ให้ออกจากโปรแกรม
ผลสอบของ yai คือ : Fail
ต้องการทางานต่อหรื อไม่ [y/n] : n
End Progam
ตัวอย่างโปรแกรม
โจทย์สาหรับนักศึกษา
ข้อ 1) ให้รับค่าข้อมูล ชื่อ และคะแนนสอบทางแป้ นพิมพ์ทีละคน
ถ้าคะแนน 50 ขึ้นไปคือสอบผ่าน
จากนั้นสอบถามผูใ้ ช้วา่
y
ต้องการออกจากโปรแกรมหรื อไม่
(Y/N) ?
ถ้า Y ให้ออกจากโปรแกรม
ถ้า N ให้รับค่าข้อมูลคนต่อไป
โจทย์สาหรับนักศึกษา
ข้อ 2 ) เขียนโปรแกรมรับข้อมูลปี เกิด (ระบุเป็ นปี พ.ศ.) จากนั้นนาไป
คานวณอายุ แล้วแสดงผล
(ถ้าระบุ ปี มากกว่าหรื อเท่ากับปี ปัจจุบนั ให้แสดงข้อความเตือน ว่า “ท่าน
ระบุขอ้ มูลผิด”
หลังจากแสดงผล อายุ ให้สอบถามว่า ท่านต้องการออกจากโปรแกรม
หรื อไม่ [Y/N]
ถ้า y ให้ออกจากโปรแกรม
ถ้า n ให้กลับไปสอบถาม ปี เกิดใหม่อีกครั้ง
โจทย์สาหรับนักศึกษา
ข้อ 3) จงเขียนโปรแกรมคานวณผลบวก ลบ
คูณ และหาร จากตัวเลข 2 ตัวที่รับเข้าไปจาก
ผูใ้ ช้แล้วนาตัวเลข 2 ตัวนี้ไปคานวณผลตามที่
ผูใ้ ช้ตอ้ งการโดยให้ผใู ้ ช้เลือกจากหัวข้อดังนี้
1. Plus (บวก)
2. Subtract (ลบ)
3. Multiply (คูณ)
4. Divide (หาร)
5. End Program (ออกโปรแกรม)
แนะนาคาสัง่ break และ continue
break; ถ้าโปรแกรมพบคาสัง่ นี้ จะหลุดออกจากลูปการทางาน
ทัน
continue; ถ้าโปรแกรมพบคาสัง่ นี้ จะทาให้หยุดการทางานที่จุด
นั้นแล้วย้อนกลับไปเริ่ มต้นการทางานที่ตน้ ลูปใหม่
จริ ง
break
continue
คาสั่งต่าง ๆ
คาสั่งต่าง ๆ
break;
continue;
คาสั่งต่าง ๆ
คาสั่งต่าง ๆ
เงื่อน
ไข
เท็จ
คาสั่ง นอกลูป
จริ ง
เงื่อน
ไข
เท็จ
คาสั่ง นอกลูป
ตัวอย่าง ทดสอบ break ,continue…. (1)
เขียนคาสังแสดงตัวเลข 1  10
ตัวอย่าง ทดสอบ break ,continue….(2)
เขียนคาสังแสดงตัวเลข 1 ถึง 10 แต่ไม่แสดงข้อมูล 4 และ 7
ตัวอย่าง ทดสอบ break ,continue….(3)
จากตัวเลข 1 ถึง 10 ให้แสดงข้อมูล แต่ถา้ ข้อมูลเป็ นเลข 7 ให้จบโปรแกรม
ตัวอย่าง ทดสอบ break ,continue
การใช้ do…. while
 การใช้ do..while นั้น จะใช้เมื่อเราต้องการเข้าสู่ การ
ทางานของลูป (Loop) อย่างน้อย 1 ครั้ง
โดยจะวางนิพจน์ทดสอบค่า(เงื่อนไข)ไว้ตอนท้ายของ
Loop
คาสัง่ do…while
start
กาหนดค่ าตัว
แปรเริ่มต้ น
คาสั่งต่าง ๆ
ภายในลูป
จริ ง
ตัวแปรเปลีย่ น
แปลงค่ า
เงือ่ นไข
เท็จ
End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คาสัง่ do…while)
start
int num=1
Print
num
num++
จริ ง
num<=100
เท็จ
End
คาสัง่ do…while
รู ปแบบ
ตัวแปรกาหนดค่าเริ่ มต้น
do{
คาสัง่ ในลูป; //สามารถมีได้มากกว่า 1 คาสัง่
คาสัง่ เปลี่ยนแปลงค่า;
} while(เงื่อนไข);
เปรี ยบเทียบ
โจทย์
1. แสดงข้อมูล 1-100
2. เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดงค่า
ตัวเลขนั้น ทางหน้าจอแต่ถา้ ระบุตวั เลขเป็ น 999 จึง
หยุด
โจทย์
จงเขียนโปรแกรมสามารถรับค่าตัวเลขได้เรื่ อย ๆไม่จากัดจานวน
รอบ เมื่อ User ต้องการจบการทางาน ให้ป้อนเลข 0 จากนั้น
แสดงผลรวม (sum) ตัวเลขทั้งหมดที่ป้อนเข้าไป
และข้อความ “Bye..Bye..End of Program”
ตัวอย่าง
โปรแกรม
โจทย์
เขียนโปรแกรมให้สามารถระบุจานวน ที่ตอ้ งการ input คะแนน
จากนั้นนาคะแนนที่ input ไปตัดเกรด
0-49
F
50-59
D
60-69
C
70-79
B
80-100
A
เมื่อครบจานวน ให้แสดงข้อมูล คะแนนและผลเกรดที่ได้
ตัวอย่างโปรแกรม
โจทย์สาหรับนักศึกษา
ข้อ 4) ให้รับข้อมูลราคา สิ นค้า(รับทศนิยมได้) และจานวนสิ นค้าที่ซ้ือของรายการ
นั้น
โดยสามารถรับราคา และจานวน ไม่จากัดจานวนรอบ
จนกระทั้ง ผูใ้ ช้ ป้ อนข้อมูลเป็ น 000 จึงสรุ ป
ผลรวมของยอดเงิน ที่ตอ้ งจ่าย
การบ้ านเพิ่มเติม
ให้นาโจทย์ที่ให้เขียนโปรแกรม นาไปเขียน เป็ น Flow Chart
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คาสัง่ do…while)
start
int num=1
Print
num
num++
จริ ง
num<=100
เท็จ
End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คาสัง่ while)
start
int num=1
num<=100
num++
เท็จ
จริ ง
Print
num
End