คำสั่ง while และ คำสั่ง do..while BC322 ครั้งที่ 5 คำสั่ง while และ คำสั่ง do..while BC322 : Computer Programming (ครั้งที่ 5)
คำสั่ง while จะใช้เมื่อ... เมื่อต้องการให้เกิดการทำงานซ้ำ การทำงานซ้ำ : รู้จำนวนรอบหรือไม่รู้จำนวนรอบการทำงานก็ทำได้ เช็คเงื่อนไขก่อน ถ้าจริง ทำ ถ้าไม่จริง ไม่ทำ ใช้ทำงานแทนคำสั่ง for ได้ BC322 : Computer Programming (ครั้งที่ 5)
รูปแบบ คำสั่งwhile while (เงื่อนไข) { คำสั่ง1; คำสั่ง2; ..... } BC322 : Computer Programming (ครั้งที่ 5)
การใช้ while จะต้องมี 3 สิ่งคือ ค่าเริ่มต้นการเข้า loop (อาจรับค่าหรือกำหนดค่า) กำหนดเงื่อนไข (loop ทำเมื่อเงื่อนไขเป็นจริง) มีการเปลี่ยนแปลงค่าตัวแปรก่อนวนกลับไปตรวจสอบเงื่อนไข BC322 : Computer Programming (ครั้งที่ 5)
เงื่อนไข N Y while คำสั่ง ... อาจรับค่าหรือกำหนดค่าเริ่มต้นก่อนเข้า loop ค่าเริ่มต้นของตัวแปร เงื่อนไข N Y คำสั่ง ... คำสั่งเพื่อเปลี่ยนค่าตัวแปร ก่อนตรวจสอบเงื่อนไข BC322 : Computer Programming (ครั้งที่ 5)
แบบที่ 1 กรณีที่รู้จำนวนรอบในการทำงาน BC322 : Computer Programming (ครั้งที่ 5)
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 BC322 : Computer Programming (ครั้งที่ 5)
Ex2 จงเขียนโปรแกรม เพื่อรับค่าน้ำหนักเพื่อน 20 คน แล้วหาค่าผลรวมของน้ำหนัก Input : ................................... Output : ............................... START ตัวอย่างผลรัน Enter weight : 45.7 Enter weight : 67.2 .... Sum of weight = 652.7 kg. BC322 : Computer Programming (ครั้งที่ 5)
Solution BC322 : Computer Programming (ครั้งที่ 5)
ตอบ........... Ex3 จงหาผลรวมของเลข 1-10 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 ตอบ........... 2 3 BC322 : Computer Programming (ครั้งที่ 5)
float score, total ............, average; /* Find the average of scores */ #include <stdio.h> void main() { int count; float score, total ............, average; .............................. while (.........................) printf( "Enter score: " ); scanf( ................................... ); total =total+ score; ........................................ } average = ...................................... printf( "The average is %6.2f\n", average ); Ex4 โปรแกรมคำนวณค่าเฉลี่ยของคะแนน 3 ค่า จงเติมคำสั่งที่ขาดหายไป BC322 : Computer Programming (ครั้งที่ 5)
แบบที่ 2 กรณีที่ไม่รู้จำนวนรอบในการทำงาน BC322 : Computer Programming (ครั้งที่ 5)
Ex5 โปรแกรมเพื่อรับค่าอายุเพื่อน แต่จะหยุดรับเมื่ออายุเป็นเลข 0 แล้วหาค่าผลรวมอายุ #include<stdio.h> void main() { int age,Sum=0; printf(“Enter Age (0 to stop) : “); scanf(“%d”,&age); while (age != 0) Sum=Sum+age; } printf(“Summary is %d”,Sum); 1 2 3 BC322 : Computer Programming (ครั้งที่ 5)
START Flowchart Ex5 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 Input : .......................... .......................... Output :......................... ........................... BC322 : Computer Programming (ครั้งที่ 5)
Solution Ex6 BC322 : Computer Programming (ครั้งที่ 5)
คำสั่ง do..while จะใช้เมื่อ ..... เมื่อต้องการให้เกิดการทำงานซ้ำ ไม่รู้ว่าจะต้องทำซ้ำกี่ครั้ง (รู้ก็ใช้ได้) รู้ว่าจะหยุดทำเมื่อไหร่ ในครั้งแรกของการทำงานจะไม่มีการทดสอบเงื่อนไข(ทำฟรี 1 รอบ) BC322 : Computer Programming (ครั้งที่ 5)
รูปแบบdo-while จะมีการตรวจสอบเงื่อนไข ภายหลังจากทำงานมาแล้ว 1 รอบ do { คำสั่ง1; คำสั่ง2; ... } while (เงื่อนไข); จะมีการตรวจสอบเงื่อนไข ภายหลังจากทำงานมาแล้ว 1 รอบ BC322 : Computer Programming (ครั้งที่ 5)
คำสั่ง เงื่อนไข Y N คำสั่ง flowchart do..while 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); } BC322 : Computer Programming (ครั้งที่ 5)
จากนั้นให้ขึ้นข้อความ Do you want to continue (‘Y/N’) ? 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 BC322 : Computer Programming (ครั้งที่ 5)
Solution Ex8 BC322 : Computer Programming (ครั้งที่ 5)
+++ข้อสรุป+++ for, do, do..while สามารถใช้แทนกันได้ คำสั่งที่ต้องการทำซ้ำ; กำหนดค่าเริ่มต้น; while(เงื่อนไขที่เป็นจริง) { คำสั่งที่ต้องการทำซ้ำ; การเปลี่ยนแปลงค่า; } กำหนดค่าเริ่มต้น; do { คำสั่งที่ต้องการทำซ้ำ; การเปลี่ยนแปลงค่า; }while(เงื่อนไขที่เป็นจริง); BC322 : Computer Programming (ครั้งที่ 5)
การใช้งาน loop ในกรณีที่รู้จำนวนรอบ for ,while,do..while 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; } BC322 : Computer Programming (ครั้งที่ 5)
Ex10 จงเขียนโปรแกรมเพื่อคำนวณอายุของเพื่อน 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 ใช้ while BC322 : Computer Programming (ครั้งที่ 5)
Solution Ex10 แบบ for BC322 : Computer Programming (ครั้งที่ 5)
Solution Ex10 แบบ while BC322 : Computer Programming (ครั้งที่ 5)
คราวหน้า Test เรื่อง while (ก่อนเรียน) BC322 : Computer Programming (ครั้งที่ 5)