Transcript while

BC322 ครัง้ ที่ 5
คำสงั่ while และ
คำสงั่ do..while
1
BC322 : Computer Programming (ครงที
ั้ ่ 5)
คำสงั่ while
้ อ
จะใชเมื
่ ...
• เมือ
่ ต ้องกำรให ้เกิดกำรทำงำนซ้ำ
• กำรทำงำนซ้ำ : รู ้จำนวนรอบหรือไม่รู ้จำนวนรอบ
กำรทำงำนก็ทำได ้
็ เงือ
• เชค
่ นไขก่อน
- ถ ้ำจริง ทำ
- ถ ้ำไม่จริง ไม่ทำ
้ ำงำนแทนคำสงั่ for ได ้
- ใชท
2
BC322 : Computer Programming (ครงที
ั้ ่ 5)
รูปแบบ คำสงั่ while
while (เงือ
่ นไข)
{
คำสง่ ั 1;
คำสง่ ั 2;
.....
}
3
BC322 : Computer Programming (ครงที
ั้ ่ 5)
กำรใช ้ while จะต ้องมี 3 สง่ิ คือ
1. ค่ำเริม
่ ต ้นกำรเข ้ำ loop (อำจรับค่ำหรือ
กำหนดค่ำ)
2. กำหนดเงือ
่ นไข (loop ทำเมือ
่ เงือ
่ นไขเป็ น
จริง)
3. มีกำรเปลีย
่ นแปลงค่ำตัวแปรก่อนวนกลับไป
ตรวจสอบเงือ
่ นไข
4
BC322 : Computer Programming (ครงที
ั้ ่ 5)
while

ค่ำเริม
่ ต้นของต ัวแปร
อำจร ับค่ำหรือ
กำหนดค่ำ
เริม
่ ต้นก่อนเข้ำ
loop

N
เงื่อนไข
Y
คำสง่ ั
...

คำสง่ ั เพือ
่ เปลีย
่ นค่ำต ัวแปร
ก่อนตรวจสอบเงือ
่ นไข
BC322 : Computer Programming (ครงที
ั้ ่ 5)
5
แบบที่ 1 กรณีทรี่ ู ้จำนวนรอบในกำร
ทำงำน
6
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex1 จงเขียนโปรแกรมแสดงค่ำ 1 – 10 ออกทำงจอภำพ
#include<stdio.h>
void main()
1
{
int i = 1;
while (i <= 10)
{
printf(“i = %d”,i);
i=i+1;
3
}
getch();
}
2
7
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex2 จงเขียนโปรแกรม เพือ
่ รับค่ำน้ ำหนั ก
เพือ
่ น 20 คน แล ้วหำค่ำผลรวมของน้ ำหนั ก
Input : ...................................
Output : ...............................
START
ตัวอย่ำงผลรัน
Enter weight : 45.7
Enter weight : 67.2
....
Sum of weight = 652.7 kg.
8
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Solution
9
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex3 จงหำผลรวมของเลข 1-10
#include <stdio.h>
#include <conio.h>
void main()
{
int num, sum;
1
clrscr();
num = 1;
sum = 0;
while (num <= 10)
{
sum =sum+ num;
num=num+1;
}
printf( "%d\n", sum );
BC322
ั้ ่ 5)
} : Computer Programming (ครงที
2
ตอบ...........
3
10
/* Find the average of scores */
#include <stdio.h>
void main()
{
}
Ex4 โปรแกรมคำนวณ
ค่ำเฉลีย
่ ของคะแนน 3 ค่ำ
จงเติมคำสง่ ั ทีข
่ ำดหำยไป
int count;
float score, total ............, average;
..............................
while (.........................)
{
printf( "Enter score: " );
scanf( ................................... );
total =total+ score;
........................................
}
average = ......................................
printf( "The average is %6.2f\n", average );11
BC322 : Computer Programming (ครงที
ั้ ่ 5)
แบบที่ 2 กรณีทไี่ ม่รู ้จำนวนรอบในกำร
ทำงำน
12
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex5 โปรแกรมเพือ
่ รับค่ำอำยุเพือ
่ น แต่จะหยุดรับเมือ
่
อำยุเป็ นเลข 0 แล ้วหำค่ำผลรวมอำยุ
#include<stdio.h>
void main()
{
int age,Sum=0;
printf(“Enter Age (0 to stop) : “);
scanf(“%d”,&age);
1
while (age != 0)
2
{
Sum=Sum+age;
printf(“Enter Age (0 to stop) : “);
scanf(“%d”,&age);
3
}
printf(“Summary is %d”,Sum);
BC322 : Computer Programming (ครงที
ั้ ่ 5)
13
START
Flowchart
Ex5
14
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex6 ร ้ำนขำยของแห่งหนึง่ ต ้องกำรเขียนโปรแกรม
เพือ
่ คำนวณหำยอดเงินทีล
่ ก
ู ค ้ำจะต ้องชำระภำยหลัง
ื้ สน
ิ ค ้ำ โดยจะหยุดกำรทำงำนเมือ
จำกกำรซอ
่ จำนวน
ิ ค ้ำเป็ น 0
สน
ต ัวอย่ำงกำรร ับค่ำและแสดงผล
Enter amount : 2
Enter price : 20
You must pay 40 baht
******************
Enter amount : 8
Enter price : 60
You must pay 480 baht
******************
Enter amount : 0
******************
Thank you
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Input : ..........................
..........................
Output :.........................
...........................
15
Solution
Ex6
16
BC322 : Computer Programming (ครงที
ั้ ่ 5)
คำสงั่ do..while
จะใช้เมื่อ .....
• เมือ
่ ต ้องกำรให ้เกิดกำรทำงำนซำ้
้ ้)
• ไม่รู ้ว่ำจะต ้องทำซำ้ กีค
่ รัง้ (รู ้ก็ใชได
• รู ้ว่ำจะหยุดทำเมือ
่ ไหร่
• ในครัง้ แรกของกำรทำงำนจะไม่มก
ี ำร
ทดสอบเงือ
่ นไข(ทำฟรี 1 รอบ)
17
BC322 : Computer Programming (ครงที
ั้ ่ 5)
รูปแบบdo-while
do
{
คำสง่ ั 1;
คำสง่ ั 2;
...
} while (เงือ
่ นไข);
จะมีกำรตรวจสอบเงือ
่ นไข ภำยหลังจำกทำงำน
มำแล ้ว 1 รอบ
18
BC322 : Computer Programming (ครงที
ั้ ่ 5)
flowchart
do..while
คำสั่ ง
เงื่อนไข
Y
N
คำสั่ ง
19
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex7 จงเขียนโปรแกรมแสดงค่ำ 1 – 10 ออกทำงจอภำพ
#include<stdio.h>
void main()
{
int i = 1;
do
{
printf(“i = %d”,i);
i=i+1;
} while (i <= 10);
}
20
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex 8 จงเขียนโปรแกรมเพือ
่ รับค่ำตัวเลข 1 จำนวนเพือ
่
ตรวจสอบว่ำเป็ นเลขคู(่ Even number) หรือเป็ นเลขคี(่ Odd
Number)
จำกนัน
้ ให ้ขึน
้ ข ้อควำม Do you want to continue (‘Y/N’) ?
เพือ
่ ถำมว่ำต ้องกำรจะรับค่ำตัวเลขตัวถัดไปหรือไม่
้
ถ ้ำผู ้ใชกดปุ่
ม Y จะให ้มีกำรรับค่ำตัวเลขถัดไป
้
ถ ้ำผู ้ใชกดปุ่
ม N โปรแกรมจะจบกำรทำงำน
ต ัวอย่ำงกำรร ับค่ำและแสดงผล
Enter Number : 20
20 is even number
Do you want to continue(Y/N) : Y
******************
Enter amount : 15
15 is odd number
Do you want to continue(Y/N) : N
* * * * *Programming
* * * * * * *(คร
* งที
*ั้ *่ 5)* * *
BC322 : Computer
21
Solution
Ex8
22
BC322 : Computer Programming (ครงที
ั้ ่ 5)
+++ข ้อสรุป+++
้
for, do, do..while สำมำรถใชแทนกั
นได ้
for(กำหนดค่ำเริม
่ ต ้น;เงือ
่ นไขทีเ่ ป็ นจริง;กำรเปลีย
่ นแปลงค่ำ)
คำสงั่ ทีต
่ ้องกำรทำซำ้ ;
กำหนดค่ำเริม
่ ต ้น;
while(เงือ
่ นไขทีเ่ ป็ นจริง)
{
คำสงั่ ทีต
่ ้องกำรทำซำ้ ;
กำรเปลีย
่ นแปลงค่ำ;
}
กำหนดค่ำเริม
่ ต ้น;
do
{
คำสงั่ ทีต
่ ้องกำรทำซำ้ ;
กำรเปลีย
่ นแปลงค่ำ;
}while(เงือ
่ นไขทีเ่ ป็ นจริง);
23
BC322 : Computer Programming (ครงที
ั้ ่ 5)
้
กำรใชงำน
loop
•
•
•
•
ในกรณีทรี่ ู ้จำนวนรอบ  for ,while,do..while
ในกรณีทไี่ ม่รู ้จำนวนรอบ while, do..while
ตรวจสอบเงือ
่ นไขก่อนทำ  while
ทำก่อน 1 รอบแล ้วค่อยตรวจสอบเงือ
่ นไข
do..while
24
BC322 : Computer Programming (ครงที
ั้ ่ 5)
ตัวอย่ำง เปรียบเทียบ for, while
Ex9 โปรแกรมแสดงคำว่ำ Hello 5 ครัง้
#include<stdio.h>
void main()
{
for(i=1;i<=5;i++)
{
printf(“Hello\n”);
printf(“*******\n”);
}
}
#include<stdio.h>
void main()
{
i=1;
while(i<=5)
{
printf(“Hello\n”);
printf(“*******\n”);
i=i+1;
}
}
25
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Ex10 จงเขียนโปรแกรมเพือ
่ คำนวณอำยุของเพือ
่ น
10 คน โดยจะต ้องรับปี พ.ศ.เกิดของเพือ
่ น
ตัวอย่ำงกำรรับค่ำและแสดงผลทำงหน ้ำจอ
Enter Year1 : 2530
Student1 is 20 year’s old.
********************
Enter Year2 : 2532
Student1 is 18 year’s old.
********************
....
เขียนโปรแกรม 2 ข ้อ
1. ใช ้ for
2. ใช ้ while
Enter Year10 : 2528
Student1 is 22 year’s old.
********************
26
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Solution Ex10
แบบ for
27
BC322 : Computer Programming (ครงที
ั้ ่ 5)
Solution Ex10
แบบ while
28
BC322 : Computer Programming (ครงที
ั้ ่ 5)
ครำวหน ้ำ Test เรือ
่ ง while
(ก่อนเรียน)
29
BC322 : Computer Programming (ครงที
ั้ ่ 5)