Control Statement for while do-while
คำสั่ง for
คำสั่ง for เมื่อต้องการให้เกิดการทำงานซ้ำ ใช้เมื่อไหร่ เมื่อต้องการให้เกิดการทำงานซ้ำ เมื่อรู้ว่าจะต้องทำซ้ำกี่ครั้ง ถ้าไม่รู้ว่าทำซ้ำกี่รอบอย่าใช้
รูปแบบคำสั่ง for for(initialization;condition;increment) statement; statement : คำสั่งที่ทำงานใน loop ถ้ามีมากกว่า 1 คำสั่ง ต้องเป็น compound statements อยู่ในเครื่องหมาย { }
คำสั่ง for (for Statement) (ต่อ) for ( initialization; condition; increment ) statement; กำหนดค่าเริ่มต้นให้ตัวแปร เงื่อนไข Y คำสั่ง.... เพิ่มค่าตัวแปร N
Ex1 จงเขียนโปรแกรมแสดงการพิมพ์ค่า 1 – 100 ออกทางหน้าจอโดยใช้คำสั่ง for #include<stdio.h> void main() { int i; for(i=1;i <= 100;i++) printf(“%d\n”,i); } เงื่อนไขในการวนรอบ ถ้ายังไม่ถึง 100 ให้ทำต่อ ให้ค่าเริ่มต้น เพิ่มค่าทีละ 1
กฎการใช้คำสั่ง for 1.การเพิ่มค่าในแต่ละรอบจะเป็นเท่าไรก็ได้ เช่น for(x = 0;x<=100;x+= 5) printf(“%d\n”,x); 2.ในส่วนของการเปลี่ยนค่า นอกจากการเพิ่มค่า (increment) สามารถกำหนดให้มีการลดค่าของตัวแปรที่ใช้ในการวนรอบได้ for(x = 100;x>0;x--)
กฎการใช้คำสั่ง (ต่อ) 3.ตัวแปรที่ใช้ในการวนรอบอาจกำหนดให้เป็นชนิด char ได้ for(ch = ‘a’;ch<=‘z’;ch++) printf(“character = %c\n”,ch); 4.ตัวแปรที่ใช้ในการวนรอบ(ควบคุมการทำงาน)มีได้มากกว่า 1 ตัว for(x = 0,y=0;x+y<100;x++,y++) printf(“%d\n”,x+y);
กฎการใช้คำสั่ง (ต่อ) 5. ถ้าไม่มีในส่วนของการเปลี่ยนค่าอาจทำให้เกิดเป็น loop ที่ไม่จบสิ้น for(x = 1;x <= 10;) printf(“%d\n”,x); 6. ถ้าไม่มีส่วนใดเลยในคำสั่ง for จะเกิด loop ไม่จบสิ้นเช่นกัน for(;;) // ถึงแม้ไม่มีส่วนใดเลย ก็ยังต้องมีเครื่องหมาย ; printf(“Hello BC322\n”);
Ex2 จากโปรแกรม จะได้ผลลัพธ์เป็นอย่างไร #include <stdio.h> #include <conio.h> void main() { int count; clrscr(); for ( count = 1; count <=5; count++ ) printf( "%d\n", count ); getch(); } ตอบ 1 2 3 4 5
Flowchart START count=1 N count<=5 Y STOP Write count Count=Count+1
Ex3 จากโปรแกรม จะได้ผลลัพธ์เป็นอย่างไร #include <stdio.h> #include <conio.h> void main() { int count; clrscr(); for (count = 10; count >= 0; count -= 2) printf( "%2d\n",count ); getch(); } ตอบ 10 ^8 ^6 ^4 ^2 ^0
คำสั่ง while และ คำสั่ง do..while 13
คำสั่ง while ใช้เมื่อไหร่ เมื่อต้องการให้เกิดการทำงานซ้ำ ไม่รู้ว่าจะต้องทำซ้ำกี่ครั้ง (รู้ก็ใช้ได้) รู้ว่าทำซ้ำเมื่อไหร่ จะทำงานเมื่อเงื่อนไขเป็นจริง 14
รูปแบบ while - เงื่อนไข ใช้สำหรับการเปรียบเทียบ เช็คเงื่อนไขก่อน { คำสั่ง; // ถ้ามีมากกว่า 1 คำสั่งต้องมี {} } - เงื่อนไข ใช้สำหรับการเปรียบเทียบ เช็คเงื่อนไขก่อน ถ้าจริง ทำ ถ้าไม่จริง ไม่ทำ ใช้ทำงานแทนคำสั่ง for ได้ 15
การใช้ while จะต้องมี 3 สิ่งคือ ค่าเริ่มต้นการเข้า loop (อาจรับค่าหรือกำหนดค่า) กำหนดเงื่อนไข (loop ทำเมื่อเงื่อนไขเป็นจริง) มีการเปลี่ยนแปลงค่าตัวแปรก่อนวนกลับไปตรวจสอบเงื่อนไข 16
เงื่อนไข N Y คำสั่ง while ค่าเริ่มต้นของตัวแปร อาจรับค่าหรือกำหนดค่าเริ่มต้นก่อนเข้า loop ค่าเริ่มต้นของตัวแปร เงื่อนไข N Y คำสั่ง คำสั่งเพื่อเปลี่ยนค่าตัวแปร ก่อนตรวจสอบเงื่อนไข 17
Ex1 จงเขียนโปรแกรมแสดงค่า 1 – 10 ออกทางจอภาพ #include<stdio.h> void main() { int i = 1; while (i <= 10) printf(“i = %d”,i); i=i+1; } getch(); 1 2 3 18
Ex2 จงเขียนโปรแกรม เพื่อรับค่าน้ำหนักเพื่อน 10 คน แล้วหาค่าผลรวมของน้ำหนัก #include<stdio.h> void main() { int i = 1; float weight,Sum=0; while (i <= 10) printf(“Enter weight : “) scanf(“%f”,&weight); Sum=Sum+weight; i=i+1; } printf(“Sum of weights = %.f”,Sum); getch(); 1 2 3 19
Ex3 จงหาผลรวมของเลข 1-10 ตอบ 55 1 2 3 #include <stdio.h> #include <conio.h> void main() { int num, sum; clrscr(); num = 1; sum = 0; while (num <= 10) sum =sum+ num; num=num+1; } printf( "%d\n", sum ); 1 ตอบ 55 2 3 20
Ex4 โปรแกรมคำนวณค่าเฉลี่ยของคะแนน 3 ค่า /* Find the average of scores */ #include <stdio.h> #include <conio.h> void main() { int count; float score, total = 0, average; clrscr(); count = 1; while (count <= 3) printf( "Enter score: " ); scanf( "%f", &score ); total =total+ score; count=count+1; } average = total / count; printf( "The average is %.2f\n", average ); Ex4 โปรแกรมคำนวณค่าเฉลี่ยของคะแนน 3 ค่า Enter score: 82.50 Enter score: 84.00 Enter score: 78.50 The average is 81.67 1 2 3 21
คำสั่ง do..while ใช้เมื่อไหร่ เมื่อต้องการให้เกิดการทำงานซ้ำ ไม่รู้ว่าจะต้องทำซ้ำกี่ครั้ง (รู้ก็ใช้ได้) รู้ว่าจะหยุดทำเมื่อไหร่ ในครั้งแรกของการทำงานจะไม่มีการทดสอบเงื่อนไข 22
รูปแบบdo-while do { คำสั่ง; // ถ้ามีมากกว่า 1 คำสั่งต้องมี {} คำสั่ง; // ถ้ามีมากกว่า 1 คำสั่งต้องมี {} } while (เงื่อนไข); จะมีการตรวจสอบเงื่อนไข ภายหลังจากทำงานมาแล้ว 1 รอบ 23
do..while คำสั่ง เงื่อนไข Y N คำสั่ง 24
Ex จงเขียนโปรแกรมแสดงค่า 1 – 10 ออกทางจอภาพ #include<stdio.h> void main() { int i = 1; do printf(“i = %d”,i); i=i+1; } while (i <= 10); } 25
ข้อสรุป for, while, do..while สามารถใช้แทนกันได้ คำสั่งที่ต้องการทำซ้ำ; กำหนดค่าเริ่มต้น; while(เงื่อนไข) { คำสั่งที่ต้องการทำซ้ำ; การเปลี่ยนแปลงค่า; } กำหนดค่าเริ่มต้น; do { คำสั่งที่ต้องการทำซ้ำ; การเปลี่ยนแปลงค่า; }while(เงื่อนไข); 03/04/60 26
การใช้งาน loop ในกรณีที่รู้จำนวนรอบ for ,while,do..while 27
Ex จงเขียนโปรแกรมเพื่อคำนวณอายุของเพื่อน 10 คน โดยจะต้องรับปี พ. ศ ตัวอย่างการรับค่าและแสดงผลทางหน้าจอ Enter Year1 : 2530 Student1 is 20 year’s old. * * * * * * * * * * * * * * * * * * * * Enter Year2 : 2532 Student1 is 18 year’s old. .... Enter Year10 : 2528 Student1 is 22 year’s old. เขียนโปรแกรม 2 ข้อ ใช้ for ใช้ Do while 28
แบบ for #include <stdio.h> #include <conio.h> void main() { int Year,Age,i; clrscr(); for(i=1;i<=10;i++) printf(“Enter Year%d : “,i); scanf(“%d”,&Year); Age=2553-Year; printf(“Student%d is %d year\’s old\n”,i,Age); } getch(); 29
แบบ while #include <stdio.h> #include <conio.h> void main() { int Year,Age,i; i=1; while (i<=10) printf(“Enter Year%d : “,i); scanf(“%d”,&Year); Age=2553-Year; printf(“Student%d is %d year\’s old\n”,i,Age); i=i+1; } getch(); แบบ while 30