การเขียนโปรแกรมเป็นการสั่งงานให้หน่วยประมวลผลกระทำตามคำสั่งที่ได้รับ โดย ณ เวลาหนึ่งจะมีคำสั่งเข้าประมวลผล 1 ชุด (กรณีที่ไม่ใช่การประมวลผลแบบคู่ขนาน) และเมื่อคำสั่งประมวลผลเสร็จสิ้นจะบันทึกผลการดำเนินคำสั่งเก็บในเรจิสเตอร์สถานะการทำงานแล้วเตรียมประมวลผคำสั่งถัดไป ทำให้การทำงานเป็นการทำทีละคำสั่งจากคำสั่งแรกไปยังคำสั่งถัด ๆ ไป และผู้เขียนโปรแกรมสามารถวางการทำงานให้กระทำตามเงื่อนไขเพื่อแยกการประมวลผล เช่น เมื่อเงื่อนไขใดเป็นจริงให้กระทำ หรือเงินไขใดไม่เป็นจริงไม่ต้องกระทำหรือกระทำสิ่งใด เป็นต้น และสุดท้ายการทำงานของโปรแกรมสามารถให้ทำซ้ำได้โดยอาศัยเงื่อนไขของการกระทำซ้ำ ด้วยเหตุนี้ หลักการเขียนโปรแกรมเบื้องต้นจึงประกอบไปด้วยการทำงาน 3 ลักษณะ คือ
- กระทำครั้งละคำสั่งจากบนลงล่าง
- สามารถเพิ่มเติมให้เกิดเงื่อนไขของการประมวลผลคำสั่ง
- สามารถให้เกิดการทำซ้ำคำสั่งที่ต้องการ
การทำซ้ำ
หลักของการทำซ้ำของภาษา C++ หรือภาษาไพธอนใช้การตรวจสอบเงื่อนไขเพื่อใช้ตัดสินใจการทำซ้ำในกลุ่มของคำสั่งที่กำหนดไว้ ซึ่งพวกเราเลือกใช้คำสั่ง while และ do/while มาเป็นคำสั่งที่มาอธิบายในกลุ่มของการทำซ้ำ เนื่องจากเป็นรูปแบบพื้นฐานของการเขียนโปรแกรมในภาษาต่าง ๆ
การทำซ้ำเมื่อเป็นจริง
กรณีที่ต้องการทำซ้ำในส่วนของคำสั่งไปเรื่อย ๆ ตราบที่เงื่อนไขของการทำงานยังคงเป็นจริง ต้องใช้รูปแบบคำสั่ง while ดังนี้
while ( เงื่อนไข ) {
สิ่งที่ทำซ้ำเมื่อเงื่อนไขเป็นจริง
}
ตัวอย่างการเขียนโปรแกรมเพื่อวนรอบเพื่อหาผลรวมของเลขจำนวนเต็มในช่วง 1 ถึง 100 เขียนได้ดังนี้
// repetition: demo while
void setup() {
word sum=0;
word counter=0;
word endNumber = 100;
Serial.begin(115200);
Serial.println("---------- Begin of program ------------");
Serial.print("Before: sum = ");
Serial.println(sum);
while (counter <= endNumber) {
sum += counter;
counter += 1;
}
Serial.print("After: sum = ");
Serial.println(sum);
Serial.println("---------- End of Program ------------");
}
void loop() {
}
ผลของการทำงานเป็นดังนี้
การทำซ้ำโดยทำก่อน 1 ครั้ง
กรณีที่ต้องการทำงานก่อนหนึ่งรอบแล้วค่อยตรวจสอบเงื่อนไขของการทำซ้ำ ถ้าเงื่อนไขเป็นจริงจะกลับไปทำคำสั่งที่ทำมาก่อนหน้านี้อีกครั้ง มีรูปแบบของคำสั่งดังนี้
do {
สิ่งที่ทำซ้ำ
} while (เงื่อนไข);
ตัวอย่างการเขียนโปรแกรมเพื่อวนรอบเพื่อหาผลรวมของเลขจำนวนเต็มในช่วง 1 ถึง 100 ด้วย do/while เป็นดังนี้
// repetition: demo do/while
void setup() {
word sum=0;
word counter=0;
word endNumber = 100;
Serial.begin(115200);
Serial.println("---------- Begin of program ------------");
Serial.print("Before: sum = ");
Serial.println(sum);
do {
sum += counter;
counter += 1;
} while (counter <= endNumber);
Serial.print("After: sum = ");
Serial.println(sum);
Serial.println("---------- End of Program ------------");
}
void loop() {
}
สรุป
จากบทความนี้ ผู้อ่านได้รู้จักรูปแบบของคำสั่งทำซ้ำด้วย while และ do/while ซึ่งเป็นรูปแบบการสั่งงานแบบสุดท้ายของการเขียนโปรแกรมแบบโครงสร้าง คือ ทำงานเรียงตามลำดับจากก่อนไปหลัง สามารถให้เลือกกระทำได้ และสามารถทำซ้ำได้ ซึ่งเป็นโครงสร้างการเขียนโปรแกรมแบบพื้นฐานที่มีแนวคิดเหมือนกันกับภาษาอื่น ๆ ทางทีมงานจึงหวังว่าคงเป็นประโยชน์ต่อการนำไปประยุกต์ใช้หรืออ่านโค้ดโปรแกรมตัวอย่างต่าง ๆ ได้ดึขึ้นต่อไปในอนาคต สุดท้ายขอให้สนุกกับการเขียนโปรแกรมครับ และบทความคำสั่งพื้นฐานของภาษา C++ ที่ใช้กันบ่อย ๆ ใน Arduino ก็มีประมาณนี้ครับ
(C) 2020-2021, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2021-06-08, 2021-09-25