16
บทที7 การทำาำ้า 7.1 การทำาำ้าโดยการใชWhile- do 7.2 การทำาำ้าโดยใชFor 7.3 การทำาำ้าโดยการใชDo- Until

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

Embed Size (px)

Citation preview

บทที่ 7 การทำาซ้ำ้า

7.1 การทำาซ้ำ้าโดยการใช้ While-do7.2 การทำาซ้ำ้าโดยใช้ For7.3 การทำาซ้ำ้าโดยการใช้ Do-Until

Copyright (c) 2006 by Sasalak Tongkaw2

COMPUTER PROGRAMMING AND ALGORITHM

การทำาซ้ำ้า

หมายถึง การทำาอะไรซ้ำ้าๆ หรือคำานวณซ้ำ้า โดยการใช้ วงวน (looping) การทำาซ้ำ้าจะเกิดข้ึนเรื่อยๆ จนกว่าจะครบกำาหนดการทำาซ้ำ้าเกิดข้ึนบ่อยๆ ในชีวิตประจำาวัน เช่น การวนรับรหัสผ่าน จนกว่าจะใส่รหสัผ่านถูกต้อง หรือไมเ่กิน 3 ครั้ง, การวนรับรหสับัตรเติมเงินของบริการโทรศัพท ์ไมเ่กิน 3 ครั้ง จนกว่าจะใสร่หสับัตรเติมเงินถกูต้อง เป็นต้น

Copyright (c) 2006 by Sasalak Tongkaw3

COMPUTER PROGRAMMING AND ALGORITHM

ตัวอยา่ง ผังงานที่มีวงวน

EOFEOF

StartStart

Yes

HouseKeepHouseKeep

StopStop

No

Main loopMain loop

Finish upFinish up

Copyright (c) 2006 by Sasalak Tongkaw4

COMPUTER PROGRAMMING AND ALGORITHM

ชนิดของการทำาซ้ำ้า

การทำาซ้ำ้าม ี2 ลักษณะ คือแบบใช้เงื่อนไขเป็นตัวตัดสินใจว่าจะทำาซ้ำ้าต่อไปหรือไม่ ต้องการให้โปรแกรมทำาไปเรื่อยๆ ในขณะที่เงื่อนไขยงัเป็นจริง อยู ่เช่น ให้รับรหสัผ่านไปเรื่อยๆ จนกว่าจะใส่ถูก ซ้ึ่งจะไมม่จีำานวนรอบที่แน่นอนตายตัว ลักษณะนีจ้ะม ี2 คำาสั่งคือ do..while และ while...แบบมจีำานวนรอบทีแ่นน่อน เช่น ต้องการให้พมิพ์ตัวอักษร a จำานวน 1000 ครั้งข้ึนบนหนา้จอ แบบนีจ้ะใช้ คำาสั่ง for

Copyright (c) 2006 by Sasalak Tongkaw5

COMPUTER PROGRAMMING AND ALGORITHM

การทำาซ้ำ้าแบบ While-Do และ Do-While

คำาสั่ง while และ do..while จะต่างจากคำาสัง่ forเล็กนอ้ยตรงที่การทำาซ้ำ้าแบบนี ้ไมจ่ำาเป็นต้องบอกถึงจำานวนรอบของการทำาซ้ำ้า แต่ละทำาซ้ำ้าไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเทจ็

รูปแบบคำาสั่ง while คือWhile (เงื่อนไข){

คำาสั่งหรือกลุ่มคำาสั่งทีต่้องการให้ทำาซ้ำ้า

}

Copyright (c) 2006 by Sasalak Tongkaw6

COMPUTER PROGRAMMING AND ALGORITHM

ตัวแปร Counter

เป็นตัวแปรทีใ่ช้สำาหรับการเพิม่ค่าเพื่อกำาหนดการหยุดของวงวน หากเป็นค่าสุดทา้ยจะเรียกว่า ลิมติ (limit) หรือค่าเซ้นทเินล (sentinel)

Copyright (c) 2006 by Sasalak Tongkaw7

COMPUTER PROGRAMMING AND ALGORITHM

ตัวอยา่ง ขั้นตอนสำาคญัของวงวนหลัก 4 ขั้นตอน

Label-Counter=100?

YES

NO

Main-Loop

Return

ReadEmployees

WriteLabel-Line,In-Name

Add 1 ToLabel-Counter

Label-Counter= 0

1

5

432

Copyright (c) 2006 by Sasalak Tongkaw8

COMPUTER PROGRAMMING AND ALGORITHM

ตัวอยา่งโปรแกรม Whilevoid 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 // อ่านระเบียนใหม่} void finishedup(); // เรียกฟังก์ชั่นยอ่ย finishedup()

Copyright (c) 2006 by Sasalak Tongkaw9

COMPUTER PROGRAMMING AND ALGORITHM

while.c

#include<stdio.h>Void main(){

int count=1;while(count<=10){

printf(“Hello %d\n”,count);count++;

}}

จากตัวอย่างเรากำาหนดให้ count มีค่า เป็น 1 จากน้ันใช้คำาสั่ง while ตรวจดูค่าของ count ว่ายังน้อยกว่าหรือเท่ากับ 10 หรือไม่ ถ้าใช่กย็ังทำาคำาสั่งภายใน{} ต่อไป และเพิ่มค่า count ทีละ 1 ไปเรื่อยๆ จนกว่าค่า count จะมากกว่า 10 ทำาให้เงื่อนไขเป็นเท็จก็จะหลดุจากลูป while

แบบฝึกหัด 1 จงเขียนผลรันทีไ่ด้จากการรันโปรแกรมนี้

แบบฝึกหัด 1 จงเขียนผลรันทีไ่ด้จากการรันโปรแกรมนี้

Copyright (c) 2006 by Sasalak Tongkaw10

COMPUTER PROGRAMMING AND ALGORITHM

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 ALGORITHM

for

ใช้ในกรณีทีเ่ราต้องการทำาซ้ำ้าโดยทราบจำานวนครั้งทีแ่นน่อน เช่น 20 ครั้ง 30 ครั้ง การใช้งานจะกำาหนดลงไปเลยว่าต้องการให้ทำากี่ครั้ง และจะต้องสร้างตัวแปร ข้ึนมาเป็นตัวนบั (counter) โดยมากจะกำาหนดให้เป็นตัวแปรแบบจำานวนเต็ม (integer) ตัวนบัจะเป็นตัวคอยบอกว่าครบตามจำานวนทีต่้องการรึยงั ถ้ายงัไม่ครบก็จะวนไปเรื่อยๆ จนกว่าจะครบ

Copyright (c) 2006 by Sasalak Tongkaw12

COMPUTER PROGRAMMING AND ALGORITHM

รูปแบบ ของ for

for( คา่เร ิ่มต ้นของต ัวนบั เชน่ 0;เปร ียบเท ียบต ัวนบัว ่าย ังอย ู่ในชว่งน ีห้ร ือไม ่;

จ ำานวนนับเพ ิ่มท ีละเท ่าไรหร ือลดทีละเท ่าไร)

{คำาส ัง่ท ี่ต ้องการให้ท ำา

}

Copyright (c) 2006 by Sasalak Tongkaw13

COMPUTER PROGRAMMING AND ALGORITHM

โปรแกรม for1.c#include<stdio.h>Void main(){

int count;printf(“Begin\n”);

for(count=0;count<10;count++)printf(“Hello\n”);

printf(“End\n”);}

เร ิ่มต ้นให้ count=0

ทำำในขณะที่ count<10

เพ ิ่มค ่ำ count ทีละ 1count=count+1

Copyright (c) 2006 by Sasalak Tongkaw14

COMPUTER PROGRAMMING AND ALGORITHM

ผลรันโปรแกรมBeginHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloEnd

• คำำว่ำ Hello จะถกูแสดงท้ังหมด 10 ครั้ง โดยท่ีตวัแปร count คือตวัแปรท่ีใช้เป็นตัวนับ เรำให้ค่ำเริ่มตน้เป็น 1 และจะเพิ่มค่ำขึ้นทีละ 1 ไปเรื่อยๆ ในขณะท่ีตวัแปร count ยังน้อยกว่ำ 10 แตถ่้ำตวัแปร count เท่ำกับ 10 เมื่อไร ่เงื่อนไขจะเป็นเท็จ โปรแกรมก็จะหลุดออกจำกคำำสัง่ for ทันที

Copyright (c) 2006 by Sasalak Tongkaw15

COMPUTER PROGRAMMING AND ALGORITHM

โปรแกรม สตูรคณู#include<stdio.h>Void main(){

int mother=6;int count;printf(“Begin\n”);for (count =1;count<=12;count++){

pintf(“%d x %d = %d\n”,mother,count,mother *count);}printf(“End\n”);

}

แบบฝึกหดั 3 จงเขียนผลรันที่ได้จำกกำรรันโปรแกรมนี้

แบบฝึกหดั 3 จงเขียนผลรันทีไ่ด้จำกกำรรันโปรแกรมนี้

END OF CHEPTER 7

ANY QUESTION ?