ݺߣ

ݺߣShare a Scribd company logo
บทที่ 7 การทำาซ้ำ้า
7.1 การทำาซ้ำ้าโดยการใช้ While-
do
7.2 การทำาซ้ำ้าโดยใช้ For
7.3 การทำาซ้ำ้าโดยการใช้ Do-
Until
Copyright (c) 2006 by Sasalak Tongkaw2
COMPUTER PROGRAMMING AND ALGORITH
การทำาซ้ำ้า
หมายถึง การทำาอะไรซ้ำ้าๆ หรือคำานวณซ้ำ้า โดย
การใช้ วงวน (looping) การทำาซ้ำ้าจะเกิดขึ้น
เรื่อยๆ จนกว่าจะครบกำาหนด
การทำาซ้ำ้าเกิดขึ้นบ่อยๆ ในชีวิตประจำาวัน เช่น
การวนรับรหัสผ่าน จนกว่าจะใส่รหัสผ่านถูกต้อง
หรือไม่เกิน 3 ครั้ง, การวนรับรหัสบัตรเติมเงินของ
บริการโทรศัพท์ ไม่เกิน 3 ครั้ง จนกว่าจะใส่รหัส
บัตรเติมเงินถูกต้อง เป็นต้น
Copyright (c) 2006 by Sasalak Tongkaw3
COMPUTER PROGRAMMING AND ALGORITH
ตัวอย่าง ผังงานที่มีวงวน
EOFEOF
StartStart
Yes
HouseKeepHouseKeep
StopStop
No
Main loopMain loop
Finish upFinish up
Copyright (c) 2006 by Sasalak Tongkaw4
COMPUTER PROGRAMMING AND ALGORITH
ชนิดของการทำาซ้ำ้า
การทำาซ้ำ้ามี 2 ลักษณะ คือ
แบบใช้เงื่อนไขเป็นตัวตัดสินใจ
ว่าจะทำาซ้ำ้าต่อไปหรือไม่ ต้องการ
ให้โปรแกรมทำาไปเรื่อยๆ ในขณะ
ที่เงื่อนไขยังเป็นจริง อยู่ เช่น ให้
รับรหัสผ่านไปเรื่อยๆ จนกว่าจะ
ใส่ถูก ซ้ึ่งจะไม่มีจำานวนรอบที่
แน่นอนตายตัว ลักษณะนี้จะมี 2
คำาสั่งคือ do..while และ while..
.
แบบมีจำานวนรอบที่แน่นอน เช่น
Copyright (c) 2006 by Sasalak Tongkaw5
COMPUTER PROGRAMMING AND ALGORITH
การทำาซ้ำ้าแบบ While-Do และ Do-
While
คำาสั่ง while และ do..while จะ
ต่างจากคำาสั่ง forเล็กน้อยตรงที่
การทำาซ้ำ้าแบบนี้ ไม่จำาเป็นต้อง
บอกถึงจำานวนรอบของการทำาซ้ำ้า
แต่ละทำาซ้ำ้าไปเรื่อยๆ จนกว่า
เงื่อนไขจะเป็นเท็จ
รูปแบบคำาสั่ง while คือ
While (เงื่อนไข)
{
คำาสั่งหรือกลุ่มคำาสั่งที่ต้องการให้
ทำาซ้ำ้า
Copyright (c) 2006 by Sasalak Tongkaw6
COMPUTER PROGRAMMING AND ALGORITH
ตัวแปร Counter
เป็นตัวแปรที่ใช้สำาหรับการเพิ่มค่า
เพื่อกำาหนดการหยุดของวงวน
หากเป็นค่าสุดท้ายจะเรียกว่า ลิ
มิต (limit) หรือค่าเซ้นทิเนล
(sentinel)
Copyright (c) 2006 by Sasalak Tongkaw7
COMPUTER PROGRAMMING AND ALGORITH
ตัวอย่าง ขั้นตอนสำาคัญของวงวนหลัก
4 ขั้นตอน
Label-Counter
=100?
YES
NO
Main-Loop
Return
Read
Employees
Write
Label-Line,
In-Name
Add 1 To
Label-Counter
Label-Counter
= 0
1
5
432
Copyright (c) 2006 by Sasalak Tongkaw8
COMPUTER PROGRAMMING AND ALGORITH
ตัวอย่างโปรแกรม While
void main()
{
void housekeep(); // เรียกฟังก์ชั่นย่อย housekeep()
while(EOF!=null) { // ตรวจสอบว่าสิ้นสุดไฟล์หรือไม่
/* main-loop */
int Lable-Counter=0; // กำาหนดค่าเริ่มต้นให้ตัว
นับ
while(Lable-Counter<=100) { // ทำาในขณะที่ Label-
Counter // น้อยกว่าหรือเท่ากับ
100
printf(“Lable-Line”); // ถ้าไม่เงื่อนไขเป็นจริง จะทำา
ในลูป
printf(“In-name”);
Lable-Counter++; // เพิ่มค่าให้ตัวนับ
}
// Read Employees // อ่านระเบียนใหม่
}
Copyright (c) 2006 by Sasalak Tongkaw9
COMPUTER PROGRAMMING AND ALGORITH
while.c
#include<stdio.h>
Void main()
{
int count=1;
while(count<=10)
{
printf(“Hello %dn”,count);
count++;
}
}
จากตัวอย่างเรา
กำาหนดให้ count มี
ค่า เป็น 1 จากนั้นใช้
คำาสั่ง while ตรวจดู
ค่าของ count ว่ายัง
น้อยกว่าหรือเท่ากับ
10 หรือไม่ ถ้าใช่ก็ยัง
ทำาคำาสั่งภายใน{} ต่อ
ไป และเพิ่มค่า count
ทีละ 1 ไปเรื่อยๆ
จนกว่าค่า count จะ
มากกว่า 10 ทำาให้
เงื่อนไขเป็นเท็จก็จะ
แบบฝึกหัด 1 จงเขียนผลรันที่ได้จาก
การรันโปรแกรมนี้
แบบฝึกหัด 1 จงเขียนผลรันที่ได้จาก
การรันโปรแกรมนี้
Copyright (c) 2006 by Sasalak Tongkaw10
COMPUTER PROGRAMMING AND ALGORITH
dowhile.c
#include<stdio.h>
void main()
{
char out;
do
{
printf(“n Do you what to exit ?[Y]es or [N]o :”);
scanf(“%c”,&out);
}while(out!=‘y’);
}
• ก่อนเข้าสู่การตรวจสอบเงื่อนไข(out!=y) ครั้ง
แรกนั้นจะมีการทำาคำาสั่งใน {} ก่อน ดังนั้น
do..while จึงทำาคำาสั่งภายใน {} อย่างน้อย 1 ครั้ง
เสมอ และถ้าตรวจสอบแล้วเงื่อนไขยังจริงอยู่ก็จะ
วนมาทำาคำาสั่งภายใน {} อีกครั้ง
แบบฝึกหัด 2 จงเขียนผลรันที่ได้จาก
การรันโปรแกรมนี้
แบบฝึกหัด 2 จงเขียนผลรันที่ได้จาก
การรันโปรแกรมนี้
Copyright (c) 2006 by Sasalak Tongkaw11
COMPUTER PROGRAMMING AND ALGORITH
for
ใช้ในกรณีที่เราต้องการทำาซ้ำ้า
โดยทราบจำานวนครั้งที่แน่นอน
เช่น 20 ครั้ง 30 ครั้ง
การใช้งานจะกำาหนดลงไปเลยว่า
ต้องการให้ทำากี่ครั้ง และจะต้อง
สร้างตัวแปร ขึ้นมาเป็นตัวนับ
(counter) โดยมากจะกำาหนดให้
เป็นตัวแปรแบบจำานวนเต็ม
(integer)
ตัวนับจะเป็นตัวคอยบอกว่าครบ
ตามจำานวนที่ต้องการรึยัง ถ้ายัง
Copyright (c) 2006 by Sasalak Tongkaw12
COMPUTER PROGRAMMING AND ALGORITH
รูปแบบ ของ for
for(ค่าเริ่มต้นของตัวนับ เช่น 0;
เปรียบเทียบตัวนับว่ายังอยู่ใน
ช่วงนี้หรือไม่;
จำานวนนับเพิ่มทีละเท่าไร
หรือลดทีละเท่าไร)
{
คำาสั่งที่ต้องการให้ทำา
}
Copyright (c) 2006 by Sasalak Tongkaw13
COMPUTER PROGRAMMING AND ALGORITH
โปรแกรม for1.c
#include<stdio.h>
Void main()
{
int count;
printf(“Beginn”);
for(count=0;count<10;count++)
printf(“Hellon”);
printf(“Endn”);
}
เริ่มต้นให้ count=0
ทำำในขณะที่ count<10
เพิ่มค่ำ count ทีละ 1
count=count+1
Copyright (c) 2006 by Sasalak Tongkaw14
COMPUTER PROGRAMMING AND ALGORITH
ผลรันโปรแกรม
Begin
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
End
• คำำว่ำ Hello จะถูกแสดง
ทั้งหมด 10 ครั้ง โดยที่
ตัวแปร count คือตัวแปร
ที่ใช้เป็นตัวนับ เรำให้ค่ำ
เริ่มต้นเป็น 1 และจะเพิ่ม
ค่ำขึ้นทีละ 1 ไปเรื่อยๆ
ในขณะที่ตัวแปร count
ยังน้อยกว่ำ 10 แต่ถ้ำ
ตัวแปร count เท่ำกับ 10
เมื่อไร่ เงื่อนไขจะเป็น
เท็จ โปรแกรมก็จะหลุด
ออกจำกคำำสั่ง for ทันที
Copyright (c) 2006 by Sasalak Tongkaw15
COMPUTER PROGRAMMING AND ALGORITH
โปรแกรม สูตรคูณ
#include<stdio.h>
Void main()
{
int mother=6;
int count;
printf(“Beginn”);
for (count =1;count<=12;count++)
{
pintf(“%d x %d = %dn”,mother,count,mother *count);
}
printf(“Endn”);
}
แบบฝึกหัด 3 จงเขียนผลรันที่ได้จำก
กำรรันโปรแกรมนี้
แบบฝึกหัด 3 จงเขียนผลรันที่ได้จำก
กำรรันโปรแกรมนี้
END OF CHEPTER 7
ANY QUESTION ?

More Related Content

4121103 การเขียนโปรแกรมและอัลกอริทึ่ม SLIDE 7/7

  • 1. บทที่ 7 การทำาซ้ำ้า 7.1 การทำาซ้ำ้าโดยการใช้ While- do 7.2 การทำาซ้ำ้าโดยใช้ For 7.3 การทำาซ้ำ้าโดยการใช้ Do- Until
  • 2. Copyright (c) 2006 by Sasalak Tongkaw2 COMPUTER PROGRAMMING AND ALGORITH การทำาซ้ำ้า หมายถึง การทำาอะไรซ้ำ้าๆ หรือคำานวณซ้ำ้า โดย การใช้ วงวน (looping) การทำาซ้ำ้าจะเกิดขึ้น เรื่อยๆ จนกว่าจะครบกำาหนด การทำาซ้ำ้าเกิดขึ้นบ่อยๆ ในชีวิตประจำาวัน เช่น การวนรับรหัสผ่าน จนกว่าจะใส่รหัสผ่านถูกต้อง หรือไม่เกิน 3 ครั้ง, การวนรับรหัสบัตรเติมเงินของ บริการโทรศัพท์ ไม่เกิน 3 ครั้ง จนกว่าจะใส่รหัส บัตรเติมเงินถูกต้อง เป็นต้น
  • 3. Copyright (c) 2006 by Sasalak Tongkaw3 COMPUTER PROGRAMMING AND ALGORITH ตัวอย่าง ผังงานที่มีวงวน EOFEOF StartStart Yes HouseKeepHouseKeep StopStop No Main loopMain loop Finish upFinish up
  • 4. Copyright (c) 2006 by Sasalak Tongkaw4 COMPUTER PROGRAMMING AND ALGORITH ชนิดของการทำาซ้ำ้า การทำาซ้ำ้ามี 2 ลักษณะ คือ แบบใช้เงื่อนไขเป็นตัวตัดสินใจ ว่าจะทำาซ้ำ้าต่อไปหรือไม่ ต้องการ ให้โปรแกรมทำาไปเรื่อยๆ ในขณะ ที่เงื่อนไขยังเป็นจริง อยู่ เช่น ให้ รับรหัสผ่านไปเรื่อยๆ จนกว่าจะ ใส่ถูก ซ้ึ่งจะไม่มีจำานวนรอบที่ แน่นอนตายตัว ลักษณะนี้จะมี 2 คำาสั่งคือ do..while และ while.. . แบบมีจำานวนรอบที่แน่นอน เช่น
  • 5. Copyright (c) 2006 by Sasalak Tongkaw5 COMPUTER PROGRAMMING AND ALGORITH การทำาซ้ำ้าแบบ While-Do และ Do- While คำาสั่ง while และ do..while จะ ต่างจากคำาสั่ง forเล็กน้อยตรงที่ การทำาซ้ำ้าแบบนี้ ไม่จำาเป็นต้อง บอกถึงจำานวนรอบของการทำาซ้ำ้า แต่ละทำาซ้ำ้าไปเรื่อยๆ จนกว่า เงื่อนไขจะเป็นเท็จ รูปแบบคำาสั่ง while คือ While (เงื่อนไข) { คำาสั่งหรือกลุ่มคำาสั่งที่ต้องการให้ ทำาซ้ำ้า
  • 6. Copyright (c) 2006 by Sasalak Tongkaw6 COMPUTER PROGRAMMING AND ALGORITH ตัวแปร Counter เป็นตัวแปรที่ใช้สำาหรับการเพิ่มค่า เพื่อกำาหนดการหยุดของวงวน หากเป็นค่าสุดท้ายจะเรียกว่า ลิ มิต (limit) หรือค่าเซ้นทิเนล (sentinel)
  • 7. Copyright (c) 2006 by Sasalak Tongkaw7 COMPUTER PROGRAMMING AND ALGORITH ตัวอย่าง ขั้นตอนสำาคัญของวงวนหลัก 4 ขั้นตอน Label-Counter =100? YES NO Main-Loop Return Read Employees Write Label-Line, In-Name Add 1 To Label-Counter Label-Counter = 0 1 5 432
  • 8. Copyright (c) 2006 by Sasalak Tongkaw8 COMPUTER PROGRAMMING AND ALGORITH ตัวอย่างโปรแกรม While void main() { void housekeep(); // เรียกฟังก์ชั่นย่อย housekeep() while(EOF!=null) { // ตรวจสอบว่าสิ้นสุดไฟล์หรือไม่ /* main-loop */ int Lable-Counter=0; // กำาหนดค่าเริ่มต้นให้ตัว นับ while(Lable-Counter<=100) { // ทำาในขณะที่ Label- Counter // น้อยกว่าหรือเท่ากับ 100 printf(“Lable-Line”); // ถ้าไม่เงื่อนไขเป็นจริง จะทำา ในลูป printf(“In-name”); Lable-Counter++; // เพิ่มค่าให้ตัวนับ } // Read Employees // อ่านระเบียนใหม่ }
  • 9. Copyright (c) 2006 by Sasalak Tongkaw9 COMPUTER PROGRAMMING AND ALGORITH while.c #include<stdio.h> Void main() { int count=1; while(count<=10) { printf(“Hello %dn”,count); count++; } } จากตัวอย่างเรา กำาหนดให้ count มี ค่า เป็น 1 จากนั้นใช้ คำาสั่ง while ตรวจดู ค่าของ count ว่ายัง น้อยกว่าหรือเท่ากับ 10 หรือไม่ ถ้าใช่ก็ยัง ทำาคำาสั่งภายใน{} ต่อ ไป และเพิ่มค่า count ทีละ 1 ไปเรื่อยๆ จนกว่าค่า count จะ มากกว่า 10 ทำาให้ เงื่อนไขเป็นเท็จก็จะ แบบฝึกหัด 1 จงเขียนผลรันที่ได้จาก การรันโปรแกรมนี้ แบบฝึกหัด 1 จงเขียนผลรันที่ได้จาก การรันโปรแกรมนี้
  • 10. Copyright (c) 2006 by Sasalak Tongkaw10 COMPUTER PROGRAMMING AND ALGORITH dowhile.c #include<stdio.h> void main() { char out; do { printf(“n Do you what to exit ?[Y]es or [N]o :”); scanf(“%c”,&out); }while(out!=‘y’); } • ก่อนเข้าสู่การตรวจสอบเงื่อนไข(out!=y) ครั้ง แรกนั้นจะมีการทำาคำาสั่งใน {} ก่อน ดังนั้น do..while จึงทำาคำาสั่งภายใน {} อย่างน้อย 1 ครั้ง เสมอ และถ้าตรวจสอบแล้วเงื่อนไขยังจริงอยู่ก็จะ วนมาทำาคำาสั่งภายใน {} อีกครั้ง แบบฝึกหัด 2 จงเขียนผลรันที่ได้จาก การรันโปรแกรมนี้ แบบฝึกหัด 2 จงเขียนผลรันที่ได้จาก การรันโปรแกรมนี้
  • 11. Copyright (c) 2006 by Sasalak Tongkaw11 COMPUTER PROGRAMMING AND ALGORITH for ใช้ในกรณีที่เราต้องการทำาซ้ำ้า โดยทราบจำานวนครั้งที่แน่นอน เช่น 20 ครั้ง 30 ครั้ง การใช้งานจะกำาหนดลงไปเลยว่า ต้องการให้ทำากี่ครั้ง และจะต้อง สร้างตัวแปร ขึ้นมาเป็นตัวนับ (counter) โดยมากจะกำาหนดให้ เป็นตัวแปรแบบจำานวนเต็ม (integer) ตัวนับจะเป็นตัวคอยบอกว่าครบ ตามจำานวนที่ต้องการรึยัง ถ้ายัง
  • 12. Copyright (c) 2006 by Sasalak Tongkaw12 COMPUTER PROGRAMMING AND ALGORITH รูปแบบ ของ for for(ค่าเริ่มต้นของตัวนับ เช่น 0; เปรียบเทียบตัวนับว่ายังอยู่ใน ช่วงนี้หรือไม่; จำานวนนับเพิ่มทีละเท่าไร หรือลดทีละเท่าไร) { คำาสั่งที่ต้องการให้ทำา }
  • 13. Copyright (c) 2006 by Sasalak Tongkaw13 COMPUTER PROGRAMMING AND ALGORITH โปรแกรม for1.c #include<stdio.h> Void main() { int count; printf(“Beginn”); for(count=0;count<10;count++) printf(“Hellon”); printf(“Endn”); } เริ่มต้นให้ count=0 ทำำในขณะที่ count<10 เพิ่มค่ำ count ทีละ 1 count=count+1
  • 14. Copyright (c) 2006 by Sasalak Tongkaw14 COMPUTER PROGRAMMING AND ALGORITH ผลรันโปรแกรม Begin Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello End • คำำว่ำ Hello จะถูกแสดง ทั้งหมด 10 ครั้ง โดยที่ ตัวแปร count คือตัวแปร ที่ใช้เป็นตัวนับ เรำให้ค่ำ เริ่มต้นเป็น 1 และจะเพิ่ม ค่ำขึ้นทีละ 1 ไปเรื่อยๆ ในขณะที่ตัวแปร count ยังน้อยกว่ำ 10 แต่ถ้ำ ตัวแปร count เท่ำกับ 10 เมื่อไร่ เงื่อนไขจะเป็น เท็จ โปรแกรมก็จะหลุด ออกจำกคำำสั่ง for ทันที
  • 15. Copyright (c) 2006 by Sasalak Tongkaw15 COMPUTER PROGRAMMING AND ALGORITH โปรแกรม สูตรคูณ #include<stdio.h> Void main() { int mother=6; int count; printf(“Beginn”); for (count =1;count<=12;count++) { pintf(“%d x %d = %dn”,mother,count,mother *count); } printf(“Endn”); } แบบฝึกหัด 3 จงเขียนผลรันที่ได้จำก กำรรันโปรแกรมนี้ แบบฝึกหัด 3 จงเขียนผลรันที่ได้จำก กำรรันโปรแกรมนี้
  • 16. END OF CHEPTER 7 ANY QUESTION ?