SlideShare a Scribd company logo
1 of 7
Download to read offline
ใบความรู้ที่ 10
เรื่อง โครงสร้างควบคุมแบบวนซ้า
********************
การเขียนโปรแกรมควบคุมทิศทางแบบวนซ้า (Loop) หมายถึง การท้าค้าสั่งซ้าๆกันหลายครังตามเงื่อนไข
ที่ก้าหนดไว้ ในการตรวจสอบเงื่อนไข จะมีรูปแบบของการตรวจสอบเงื่อนไขอยู่ 2 แบบ
1. ตรวจสอบก่อนการวนซ้า รูปแบบนีจะตรวจสอบเงื่อนไขว่าเป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะไป
ท้างานตามค้าสั่งที่ก้าหนดไว้ และเมื่อท้างานเสร็จก็จะกลับมาท้าการตรวจสอบเงื่อนไขอีกครัง ท้า
เช่นนีไปเรื่อยๆจนกระทั่งเงื่อนไขได้ค่าเป็นเท็จ ก็จบการวนซ้า
2. ตรวจสอบหลังการวนซ้า รูปแบบนีจะท้าค้าสั่งก่อน ท้าค้าสั่งเสร็จแล้วจึงค่อยมาตรวจสอบเงื่อนไขว่า
เป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะกลับไปท้าค้าสั่งเดิมอีกครัง ท้าเช่นนีไปเรื่อยๆ จนกว่าเงื่อนไขที่ได้
เป็นเท็จ
การควบคุมการวนซ้า เพื่อป้องการวนซ้าแบบไม่สินสุด โปรแกรมจ้าเป็นต้องควบคุมดังต่อไปนี
1. การก้าหนดตัวแปรควบคุมการวนซ้า ก่อนการเริ่มวนซ้าต้องจะต้องมีการก้าหนดตัวแปรขึนมาเพื่อใช้
ในการตรวจสอบให้สามารถจบการท้างานได้
2. การปรับตัวแปรควบคุมการวนซ้า หลังจากท้างานค้าสั่งไปแล้ว จ้าเป็นต้องปรับตัวแปรควบคุมการวน
ซ้าทุกครัง เพื่อป้องกันไม่ได้วนซ้าแบบไม่สินสุด
1.ค้าสั่ง while
while เป็นแบบตรวจสอบก่อนการวนซ้า มีการตรวจสอบเงื่อนไข
ก่อนการวนซ้า ถ้าเป็นจริงจึงจะเข้าไปท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้า
เป็นเท็จก็จะจบการวนซ้า มีรูปแบบดังต่อไปนี
จากรูปแบบข้อความสั่ง while สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี
รูปที่ 1 ผังงานข้อความสั่ง while
condition
statement
จริง
เท็จ
while ( condition )
statement ;
ข้อสังเกต เช่นเดียวกับค้าสั่ง if พบว่า Statement ของ while มีได้เพียงค้าสั่งเดียว นั่นหมายความว่าถ้า
ต้องการเขียนมากกว่า 1 Statement ต้องใช้เครื่องหมาย { }
ตัวอย่างที่ 1
โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10
เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี
ตัวอย่างที่ 2
โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ด ถ้าคะแนนมากกว่าหรือเท่ากับ 50 ซึ่งท้าให้เงื่อนไขของ
ข้อความสั่ง if เป็นจริง จะแสดงข้อความ Pass ปรากฏออกทางจอภาพ
โปรแกรมสามารถวนซ้าท้างานไปเรื่อยๆ ได้จนกว่าผู้ใช้ป้อนคะแนนเท่ากับ 0 จึงจะจบการวนซ้า
#include <stdio.h>
void main()
{
int number = 1;
while (number <= 10)
{
printf(“%dn”, number);
number++;
}
}
1
2
3
4
5
6
7
8
9
10
เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี
ข้อความสั่ง while จะตรวจสอบเงื่อนไขก่อนการวนซ้า ดังนันโปรแกรมจึงจ้าเป็นต้องเขียนค้าสั่งรับค่า
คะแนน (score) ก่อนเข้าสู่ข้อความสั่ง while ถ้าเป็นจริง ก็จะท้างาน
ขันตอนสุดท้ายคือการรับค่าคะแนน (score) ก่อนกลับเข้าสู่การตรวจสอบเงื่อนไขของ while อีกครัง
#include <stdio.h>
void main()
{
int score;
printf(“Enter your score : ”);
scanf(“%d”, &score);
while (score != 0)
{
if (score >= 50)
printf(“Passn”);
else
printf(“Failn”);
printf(“Enter your score : ”);
scanf(“%d”, &score);
}
}
Enter your score : 36
Fail
Enter your score : 60
Pass
Enter your score : 70
Pass
Enter your score : 0
1
1
2
2
2.ค้าสั่ง do-while
do-while เป็นแบบตรวจสอบหลังการวนซ้า เมื่อท้างานเสร็จจึงจะตรวจสอบเงื่อนไข ถ้าเป็นจริงจะกลับ
เข้าไปท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้าเป็นเท็จก็จะจบการวนซ้า มีรูปแบบดังต่อไปนี
จากรูปแบบข้อความสั่งdo-while สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี
รูปที่ 2 ผังงานข้อความสั่ง do while
ตัวอย่างที่ 1
โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10
condition
statement
จริง
เท็จ
do
statement ;
while ( condition )
#include <stdio.h>
void main()
{
int number = 1;
do{
printf(“%dn”, number);
number++;
}while (number <= 10);
}
โปรแกรมนีคล้ายกับโปรแกรมที่เขียนด้วยข้อความสั่ง while ต่างกันตรงที่ย้ายเงื่อนไขมาไว้ข้างล่าง และไม่
ว่าอย่างไรก็ตามโปรแกรมนีจะแสดงค่าตัวเลขออกทางจอภาพอย่างน้อยที่สุด 1 ค่าเสมอ
ตัวอย่างที่ 2
โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ด ถ้าคะแนนมากกว่าหรือเท่ากับ 50 ซึ่งท้าให้เงื่อนไขของ
ข้อความสั่ง if เป็นจริง จะแสดงข้อความ Pass ปรากฏออกทางจอภาพ
โปรแกรมสามารถวนซ้าท้างานไปเรื่อยๆ ได้จนกว่าผู้ใช้ป้อนคะแนนเท่ากับ 0 จึงจะจบการวนซ้า
ข้อแตกต่างกับโปรแกรมที่เขียนด้วยข้อความสั่ง while คือ ถึงแม้ว่าจะป้อน 0 เพื่อจบการท้างานแล้วก็
ตาม โปรแกรมก็ท้างานด้วยการคิดเกรดของค่าที่เท่ากับ 0 ก่อนจึงจะออกจากการวนซ้า
3.ค้าสั่ง for
for เป็นแบบตรวจสอบก่อนการวนซ้า มีการ
ตรวจสอบเงื่อนไขก่อนการวนซ้า ถ้าเป็นจริงจึงจะเข้าไป
ท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้าเป็นเท็จก็จะจบการ
วนซ้า มีรูปแบบดังต่อไปนี
expression1 หมายถึง การก้าหนดตัวแปรควบคุมการวนซ้า
expression2 หมายถึง การตรวจสอบเงื่อนไขการวนซ้า
expression3 หมายถึง การปรับตัวแปรควบคุมการวนซ้า
#include <stdio.h>
void main()
{
int score;
do{
printf(“Enter your score : ”);
scanf(“%d”, &score);
if (score >= 50)
printf(“Passn”);
else
printf(“Failn”);
} while (score != 0);
}
1
1
for (expression1; expression2; expression3)
statement ;
จากรูปแบบข้อความสั่ง for สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี
รูปที่ 1 ผังงานข้อความสั่ง for
ตัวอย่างที่ 1
โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10
เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี
โปรแกรมมีลักษณะคล้ายกับที่เขียนข้อความสั่ง while หรือ do-while ที่เขียนไปก่อนหน้านี ส่วนที่
แตกต่างกันก็คือ ต้าแหน่งของการเขียน ซึ่งพบว่าได้น้ามาเขียนในวงเล็บของ for นั่นเอง และอีกอย่างหนึ่ง
ก็คือ โปรแกรมรู้ว่าจะต้องวนท้าซ้า 4 รอบ เป็นเหตุให้ควรเขียนโปรแกรมส่วนนีโดยใช้ข้อความสั่ง for
expression2
จริง
เท็จ
expression1
statement
expression3
#include <stdio.h>
void main()
{
for (int number = 1; number <= 4; number++)
{
printf(“%dn”, number);
}
}
1
2
3
4
1
1
ตัวอย่างที่ 2
โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ดจ้านวนทังหมด 15 คะแนน เมื่อรับคะแนนครบ 15 คะแนน
ให้ค้านวณหาค่าเฉลี่ย
คะแนนมีจ้านวนทังหมด 15 คะแนนซึ่งเป็นจ้านวนคงที่ ดังนันจึงเหมาะที่จะใช้ข้อความสั่ง for วนซ้ารับ
คะแนนเข้ามา
รับคะแนนแต่ละรอบแล้ว
น้าคะแนนที่ได้ไปเก็บสะสมไว้ที่ตัวแปรชื่อ total และทังหมดนีเขียนในเครื่องหมาย { } เพื่อระบุว่าเป็น
Statement ของ for
หาค่าเฉลี่ย โดยการน้า total มาหารด้วยค่าคงที่เท่ากับ 15 ผลที่ได้เก็บที่ตัวแปรชื่อ average แล้วจึง
แสดงค่าเฉลี่ยออกทางจอภาพ
ที่มา :
ธีรวัฒน์ ประกอบผล. (2552). คู่มือการเขียนโปรแกรม ภาษา C. กรุงเทพฯ : ซัคเซส มีเดีย.
สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี กระทรวงศึกษาธิการ. (2553). หนังสือเรียนรายวิชา
เพิ่มเติม เทคโนโลยีสารสนเทศและการสื่อสาร ภาษาซี ชันมัธยมศึกษาปีที่ 4-6. กรุงเทพฯ: โรง
พิมพ์ สกสค.
#include <stdio.h>
void main()
{
int score = 0;
float total = 0, average = 0;
for (int i = 1; i <= 15 ; i++)
{
printf(“Enter your score No. %d : ”, i);
scanf(“%d”, &score);
total = total + score;
}
average = total / 15;
printf("Average = %f : ”, average);
}
1
1
2
3
2
3
4
4

More Related Content

What's hot

คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุมumaraporn
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Pornpimon Aom
 
แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3kruvisart
 
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงาน
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงานโครงสร้างควบคุมการทำงานแบบควบคุมการทำงาน
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงานSaim Technology College
 
การเขียนผังงานแบบทางเลือก (050753)
การเขียนผังงานแบบทางเลือก  (050753)การเขียนผังงานแบบทางเลือก  (050753)
การเขียนผังงานแบบทางเลือก (050753)ธงชัย พาศรี
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมบทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมView Nudchanad
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)View Nudchanad
 
หน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามหน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามkruthanyaporn
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกWorapod Khomkham
 
Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆJaemjan Sriarunrasmee
 
คำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมคำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมJK133
 
Capture Javascript & Python
Capture Javascript & PythonCapture Javascript & Python
Capture Javascript & PythonBoo' Noypeng
 

What's hot (18)

คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุม
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Chapter 05 Loop
Chapter 05 LoopChapter 05 Loop
Chapter 05 Loop
 
Lesson3
Lesson3Lesson3
Lesson3
 
แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3
 
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงาน
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงานโครงสร้างควบคุมการทำงานแบบควบคุมการทำงาน
โครงสร้างควบคุมการทำงานแบบควบคุมการทำงาน
 
การเขียนผังงานแบบทางเลือก (050753)
การเขียนผังงานแบบทางเลือก  (050753)การเขียนผังงานแบบทางเลือก  (050753)
การเขียนผังงานแบบทางเลือก (050753)
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมบทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)
 
หน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามหน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถาม
 
ฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือกฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือก
 
Control structure
Control structureControl structure
Control structure
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆ
 
คำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรมคำสั่งควบคุมโปรแกรม
คำสั่งควบคุมโปรแกรม
 
3.5 การแสดงผลและการรับข้อมูล
3.5 การแสดงผลและการรับข้อมูล3.5 การแสดงผลและการรับข้อมูล
3.5 การแสดงผลและการรับข้อมูล
 
Capture Javascript & Python
Capture Javascript & PythonCapture Javascript & Python
Capture Javascript & Python
 
Presentation2
Presentation2Presentation2
Presentation2
 

Similar to Know010

การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำGatesiree G'ate
 
การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำToey Sunisa
 
คำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรมคำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรมParn Nichakorn
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์Oraphan4
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำจูน นะค่ะ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำจูน นะค่ะ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำจูน นะค่ะ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำจูน นะค่ะ
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมkorn27122540
 
คำสั่งและเงื่อนไข [Web-Programming]
คำสั่งและเงื่อนไข [Web-Programming]คำสั่งและเงื่อนไข [Web-Programming]
คำสั่งและเงื่อนไข [Web-Programming]Khon Kaen University
 

Similar to Know010 (13)

การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำ
 
4 การเขียนคำสั่งแบบวนซ้ำ
4 การเขียนคำสั่งแบบวนซ้ำ 4 การเขียนคำสั่งแบบวนซ้ำ
4 การเขียนคำสั่งแบบวนซ้ำ
 
Chapter 05 Loop
Chapter 05 LoopChapter 05 Loop
Chapter 05 Loop
 
การเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำการเขียนคำสั่งควบคุมแบบวนซ้ำ
การเขียนคำสั่งควบคุมแบบวนซ้ำ
 
คำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรมคำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรม
 
ฟังก์ชั่น do_while
ฟังก์ชั่น do_whileฟังก์ชั่น do_while
ฟังก์ชั่น do_while
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
 
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำหน่วยที่ 10 การทำงานแบบมีทำซ้ำ
หน่วยที่ 10 การทำงานแบบมีทำซ้ำ
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรม
 
คำสั่งและเงื่อนไข [Web-Programming]
คำสั่งและเงื่อนไข [Web-Programming]คำสั่งและเงื่อนไข [Web-Programming]
คำสั่งและเงื่อนไข [Web-Programming]
 

Know010

  • 1. ใบความรู้ที่ 10 เรื่อง โครงสร้างควบคุมแบบวนซ้า ******************** การเขียนโปรแกรมควบคุมทิศทางแบบวนซ้า (Loop) หมายถึง การท้าค้าสั่งซ้าๆกันหลายครังตามเงื่อนไข ที่ก้าหนดไว้ ในการตรวจสอบเงื่อนไข จะมีรูปแบบของการตรวจสอบเงื่อนไขอยู่ 2 แบบ 1. ตรวจสอบก่อนการวนซ้า รูปแบบนีจะตรวจสอบเงื่อนไขว่าเป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะไป ท้างานตามค้าสั่งที่ก้าหนดไว้ และเมื่อท้างานเสร็จก็จะกลับมาท้าการตรวจสอบเงื่อนไขอีกครัง ท้า เช่นนีไปเรื่อยๆจนกระทั่งเงื่อนไขได้ค่าเป็นเท็จ ก็จบการวนซ้า 2. ตรวจสอบหลังการวนซ้า รูปแบบนีจะท้าค้าสั่งก่อน ท้าค้าสั่งเสร็จแล้วจึงค่อยมาตรวจสอบเงื่อนไขว่า เป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะกลับไปท้าค้าสั่งเดิมอีกครัง ท้าเช่นนีไปเรื่อยๆ จนกว่าเงื่อนไขที่ได้ เป็นเท็จ การควบคุมการวนซ้า เพื่อป้องการวนซ้าแบบไม่สินสุด โปรแกรมจ้าเป็นต้องควบคุมดังต่อไปนี 1. การก้าหนดตัวแปรควบคุมการวนซ้า ก่อนการเริ่มวนซ้าต้องจะต้องมีการก้าหนดตัวแปรขึนมาเพื่อใช้ ในการตรวจสอบให้สามารถจบการท้างานได้ 2. การปรับตัวแปรควบคุมการวนซ้า หลังจากท้างานค้าสั่งไปแล้ว จ้าเป็นต้องปรับตัวแปรควบคุมการวน ซ้าทุกครัง เพื่อป้องกันไม่ได้วนซ้าแบบไม่สินสุด 1.ค้าสั่ง while while เป็นแบบตรวจสอบก่อนการวนซ้า มีการตรวจสอบเงื่อนไข ก่อนการวนซ้า ถ้าเป็นจริงจึงจะเข้าไปท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้า เป็นเท็จก็จะจบการวนซ้า มีรูปแบบดังต่อไปนี จากรูปแบบข้อความสั่ง while สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี รูปที่ 1 ผังงานข้อความสั่ง while condition statement จริง เท็จ while ( condition ) statement ;
  • 2. ข้อสังเกต เช่นเดียวกับค้าสั่ง if พบว่า Statement ของ while มีได้เพียงค้าสั่งเดียว นั่นหมายความว่าถ้า ต้องการเขียนมากกว่า 1 Statement ต้องใช้เครื่องหมาย { } ตัวอย่างที่ 1 โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10 เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี ตัวอย่างที่ 2 โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ด ถ้าคะแนนมากกว่าหรือเท่ากับ 50 ซึ่งท้าให้เงื่อนไขของ ข้อความสั่ง if เป็นจริง จะแสดงข้อความ Pass ปรากฏออกทางจอภาพ โปรแกรมสามารถวนซ้าท้างานไปเรื่อยๆ ได้จนกว่าผู้ใช้ป้อนคะแนนเท่ากับ 0 จึงจะจบการวนซ้า #include <stdio.h> void main() { int number = 1; while (number <= 10) { printf(“%dn”, number); number++; } } 1 2 3 4 5 6 7 8 9 10
  • 3. เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี ข้อความสั่ง while จะตรวจสอบเงื่อนไขก่อนการวนซ้า ดังนันโปรแกรมจึงจ้าเป็นต้องเขียนค้าสั่งรับค่า คะแนน (score) ก่อนเข้าสู่ข้อความสั่ง while ถ้าเป็นจริง ก็จะท้างาน ขันตอนสุดท้ายคือการรับค่าคะแนน (score) ก่อนกลับเข้าสู่การตรวจสอบเงื่อนไขของ while อีกครัง #include <stdio.h> void main() { int score; printf(“Enter your score : ”); scanf(“%d”, &score); while (score != 0) { if (score >= 50) printf(“Passn”); else printf(“Failn”); printf(“Enter your score : ”); scanf(“%d”, &score); } } Enter your score : 36 Fail Enter your score : 60 Pass Enter your score : 70 Pass Enter your score : 0 1 1 2 2
  • 4. 2.ค้าสั่ง do-while do-while เป็นแบบตรวจสอบหลังการวนซ้า เมื่อท้างานเสร็จจึงจะตรวจสอบเงื่อนไข ถ้าเป็นจริงจะกลับ เข้าไปท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้าเป็นเท็จก็จะจบการวนซ้า มีรูปแบบดังต่อไปนี จากรูปแบบข้อความสั่งdo-while สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี รูปที่ 2 ผังงานข้อความสั่ง do while ตัวอย่างที่ 1 โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10 condition statement จริง เท็จ do statement ; while ( condition ) #include <stdio.h> void main() { int number = 1; do{ printf(“%dn”, number); number++; }while (number <= 10); }
  • 5. โปรแกรมนีคล้ายกับโปรแกรมที่เขียนด้วยข้อความสั่ง while ต่างกันตรงที่ย้ายเงื่อนไขมาไว้ข้างล่าง และไม่ ว่าอย่างไรก็ตามโปรแกรมนีจะแสดงค่าตัวเลขออกทางจอภาพอย่างน้อยที่สุด 1 ค่าเสมอ ตัวอย่างที่ 2 โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ด ถ้าคะแนนมากกว่าหรือเท่ากับ 50 ซึ่งท้าให้เงื่อนไขของ ข้อความสั่ง if เป็นจริง จะแสดงข้อความ Pass ปรากฏออกทางจอภาพ โปรแกรมสามารถวนซ้าท้างานไปเรื่อยๆ ได้จนกว่าผู้ใช้ป้อนคะแนนเท่ากับ 0 จึงจะจบการวนซ้า ข้อแตกต่างกับโปรแกรมที่เขียนด้วยข้อความสั่ง while คือ ถึงแม้ว่าจะป้อน 0 เพื่อจบการท้างานแล้วก็ ตาม โปรแกรมก็ท้างานด้วยการคิดเกรดของค่าที่เท่ากับ 0 ก่อนจึงจะออกจากการวนซ้า 3.ค้าสั่ง for for เป็นแบบตรวจสอบก่อนการวนซ้า มีการ ตรวจสอบเงื่อนไขก่อนการวนซ้า ถ้าเป็นจริงจึงจะเข้าไป ท้างานตามค้าสั่งที่ก้าหนดไว้ แต่ถ้าเป็นเท็จก็จะจบการ วนซ้า มีรูปแบบดังต่อไปนี expression1 หมายถึง การก้าหนดตัวแปรควบคุมการวนซ้า expression2 หมายถึง การตรวจสอบเงื่อนไขการวนซ้า expression3 หมายถึง การปรับตัวแปรควบคุมการวนซ้า #include <stdio.h> void main() { int score; do{ printf(“Enter your score : ”); scanf(“%d”, &score); if (score >= 50) printf(“Passn”); else printf(“Failn”); } while (score != 0); } 1 1 for (expression1; expression2; expression3) statement ;
  • 6. จากรูปแบบข้อความสั่ง for สามารถเขียนเป็นผังงานได้ตามภาพต่อไปนี รูปที่ 1 ผังงานข้อความสั่ง for ตัวอย่างที่ 1 โปรแกรมแสดงตัวเลขตังแต่ 1 ถึง 10 เมื่อสั่งรันโปรแกรมจะปรากฏหน้าจอดังนี โปรแกรมมีลักษณะคล้ายกับที่เขียนข้อความสั่ง while หรือ do-while ที่เขียนไปก่อนหน้านี ส่วนที่ แตกต่างกันก็คือ ต้าแหน่งของการเขียน ซึ่งพบว่าได้น้ามาเขียนในวงเล็บของ for นั่นเอง และอีกอย่างหนึ่ง ก็คือ โปรแกรมรู้ว่าจะต้องวนท้าซ้า 4 รอบ เป็นเหตุให้ควรเขียนโปรแกรมส่วนนีโดยใช้ข้อความสั่ง for expression2 จริง เท็จ expression1 statement expression3 #include <stdio.h> void main() { for (int number = 1; number <= 4; number++) { printf(“%dn”, number); } } 1 2 3 4 1 1
  • 7. ตัวอย่างที่ 2 โปรแกรมรับคะแนนที่ป้อนเข้ามาจากคีย์บอร์ดจ้านวนทังหมด 15 คะแนน เมื่อรับคะแนนครบ 15 คะแนน ให้ค้านวณหาค่าเฉลี่ย คะแนนมีจ้านวนทังหมด 15 คะแนนซึ่งเป็นจ้านวนคงที่ ดังนันจึงเหมาะที่จะใช้ข้อความสั่ง for วนซ้ารับ คะแนนเข้ามา รับคะแนนแต่ละรอบแล้ว น้าคะแนนที่ได้ไปเก็บสะสมไว้ที่ตัวแปรชื่อ total และทังหมดนีเขียนในเครื่องหมาย { } เพื่อระบุว่าเป็น Statement ของ for หาค่าเฉลี่ย โดยการน้า total มาหารด้วยค่าคงที่เท่ากับ 15 ผลที่ได้เก็บที่ตัวแปรชื่อ average แล้วจึง แสดงค่าเฉลี่ยออกทางจอภาพ ที่มา : ธีรวัฒน์ ประกอบผล. (2552). คู่มือการเขียนโปรแกรม ภาษา C. กรุงเทพฯ : ซัคเซส มีเดีย. สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี กระทรวงศึกษาธิการ. (2553). หนังสือเรียนรายวิชา เพิ่มเติม เทคโนโลยีสารสนเทศและการสื่อสาร ภาษาซี ชันมัธยมศึกษาปีที่ 4-6. กรุงเทพฯ: โรง พิมพ์ สกสค. #include <stdio.h> void main() { int score = 0; float total = 0, average = 0; for (int i = 1; i <= 15 ; i++) { printf(“Enter your score No. %d : ”, i); scanf(“%d”, &score); total = total + score; } average = total / 15; printf("Average = %f : ”, average); } 1 1 2 3 2 3 4 4