การวนรอบซ้ำด้วยคำสั่ง For
คำสั่ง for นิยมใช้กับการทำซ้ำที่รู้จำนวนรอบของการทำซ้ำว่าต้องการทำซ้ำกี่รอบ คือตั้งแต่ค่าอะไร ถึง ค่าอะไร โดยมีรูปแบบคำสั่งดังนี้
รูปแบบคำสั่ง for
รูปแบบคำสั่ง for
รูปที่ 8.1 แสดงรูปแบบคำสั่ง for
คำสั่ง for ประกอบด้วยตัวตรวจสอบเงื่อนไข 3 ส่วน โดยแต่ละส่วนจะคั่นด้วยเครื่องหมาย ; (Semicolon) ดังนี้
- ส่วนกำหนดค่าเริ่มต้นให้กับตัวแปร ส่วนนี้จะเป็นการกำหนดค่าเริ่มต้นให้กับตัวแปรที่ต้องการใช้งานในลูป (Loop) โดยปกติเราจะใช้ตัวแปรนี้เป็นตัวควบคุมลูป เพื่อบอกให้ทราบว่า ลูป จะทำซ้ำตั้งแต่ค่าของตัวแปรนี้เป็นค่าอะไร
- ส่วนเงื่อนไขที่ต้องการตรวจสอบ เป็นนิพจน์ตรรกะที่ใช้เป็นเงื่อนไขในการทำซ้ำของลูป โดยหากเงื่อนไขนี้เป็นจริงก็ยังคงทำงานในลูปต่อไป แต่ถ้าหากเงื่อนไขนี้เป็นเท็จ ก็จะออกจากการทำงานของลูป ไปทำคำสั่งที่อยู่นอกลูปต่อไป
- ส่วนของการปรับค่าของตัวแปร เป็นส่วนที่ปรับเปลี่ยนค่าของตัวแปรที่ใช้ในลูป โดยอาจจะเป็นการเพิ่มค่า หรือลดค่าของตัวแปรก็ได้ ซึ่งส่วนนี้จะเป็นส่วนที่สำคัญมาก กล่าวคือ การเพิ่มหรือลดค่าของตัวแปรต้องส่งผลให้เงื่อนไขที่ทำการตรวจสอบในส่วนที่ 2 มีโอกาสเป็นเท็จด้วย ไม่เช่นนั้นอาจออกจากการทำงานของลูปไม่ได้ หรือเรียกว่าเป็นการทำงานของลูปที่ไม่รู้จบ (Infinite loop)การทำงานของ for จะเริ่มจากการทำส่วนแรก คือ กำหนดค่าเริ่มต้นให้กับตัวแปรก่อน จากนั้นจะไปตรวจสอบเงื่อนไขในส่วนที่ 2 ว่าเป็นจริงหรือไม ่ถ้าเป็นจริง ก็จะเข้าสู่การทำงานของลูป และเมื่อทำงานตามคำสั่งทั้งหมดที่อยู่ในลูปแล้ว ก็จะไปทำงานในส่วนที่ 3 ของคำสั่ง for เพื่อปรับค่าของตัวแปร และทำการตรวจสอบเงื่อนไขใหม่อีกครั้ง ซึ่งถ้าเงื่อนไขเป็นจริงก็ยังวนรอบทำงานอยู่ในลูปต่อไป แต่ถ้าเป็นเท็จ ก็จะไปทำคำสั่งที่อยู่นอกลูป (คือคำสั่งถัดไป ที่อยู่นอกเครื่องหมายวงเล็บปีกกาปิด } ) ซึ่งสามารถเขียนเป็นผังงานแสดงการวนรอบทำซ้ำได้ดังนี้
ผังงานแสดงการวนซ้ำของคำสั่ง for
ตัวอย่างที่ 8.4
โปรแกรมรับเลขจำนวนจริง (เลขทศนิยม) จากแป้นพิมพ์ 10 จำนวน แล้วให้หาผลบวกของเลขทั้ง 10 จำนวน แล้วแสดงผลรวมทางจอภาพ
ผังงานแสดงการแก้ปัญหาโจทย์
โปรแกรมรับเลขจำนวนจริง (เลขทศนิยม) จากแป้นพิมพ์ 10 จำนวน แล้วให้หาผลบวกของเลขทั้ง 10 จำนวน แล้วแสดงผลรวมทางจอภาพ
ผังงานแสดงการแก้ปัญหาโจทย์
จากผังงานนำมาเขียนเป็นโค้ดได้ดังนี้
Source code
#include <conio.h>
int main() { int a; float num,sum=0.0; for (a=1;a<=10;a++) { printf("\nEnter a number : "); scanf("%f",&num); sum=sum+num; } system("cls"); printf("\n\n\n"); printf("Summary = %8.2f",sum); getch(); return 0; } |
คำอธิบายโปรแกรม
// เริ่ม block ของฟังก์ชัน main
// ประกาศตัวแปร a เป็นชนิด จำนวนเต็ม // ประกาศตัวแปร num และ sum เป็นชนิด จำนวนจริง // ทำซ้ำเมื่อค่า a = 1 จนกระทั่ง i<=10 เป็นจริง // เริ่ม block ของคำสั่ง for //ขึ้นบรรทัดใหม่แล้ว แสดงข้อความ Enter a number : // รอรับเลขจากแป้นพิมพ์เข้ามา เก็บไว้ที่ตัวแปร num // เอาค่า sum เดิมบวกกับ num แล้วไปเก็บที่ตัวแปร sum ตัวทางซ้ายสุด // จบ block ของคำสั่ง for // ลบจอภาพ // เว้นบรรทัดว่าง 3 บรรทัด // แสดงผลรวม ด้วยความกว้าง 8 ตัวโดยมีทศนิยม 2 ตำแหน่ง // รอการกดแป้นใด ๆ // โปรแกรมทำงานถูกต้องสมบูรณ์ // จบ block ของฟังก์ชัน main |
ผลที่ได้จากการ Run