5.3 While loop
คำสั่งวนซ้ำโดยใช้ While loop
โครงสร้างการทำงานของคำสั่ง ประกอบด้วย
รูปแบบคำสั่งและการทำงาน โจทย์ตัวอย่างและผังงาน และชุดคำสั่งโปรแกรม
มีรายละเอียดดังต่อไปนี้
1.1 รูปแบบคำสั่ง การเขียนโปรแกรมเพื่อให้มีการทำงานซ้ำ ๆ ที่มีจำนวนรอบที่ไม่แน่นอน
มักจะใช้คำสั่ง While loop โดยมีรูปแบบคำสั่ง ดังนี้
<ststement2>
while
<condition>:
<statement1><ststement2>
1.2 การทำงานของคำสั่ง การเขียนคำสั่งเพื่อให้วนซ้ำโดยใช้ while
loop เหมาะสำหรับใช้กับการทำงานซ้ำแบบจำนวนวนรอบไม่แน่นอน ได้แก่
การคำนวณค่าผลลัพธ์ จากการสร้างสมการต่าง ๆ ที่ต้องการวนซ้ำจนกระทั่งครบตามจำนวนที่เงื่อนไขกำหนด
ซึ่งมีใช้ได้ยืดหยุ่นกว่า for loop แต่สำหรับการใช้ while
loop สามารถเขียนแทนการใช้ for loop ได้ ดังนี้
x
= 1
while
x <= 100:print x
x += 1
ผลการทำงานของโปรแกรมจะแสดงผลตัวเลขตั้งแต่เลข 1 ถึง 100 ผังงานของ While Loop เขียนได้
ดังภาพที่ 5.8
1.2 โจทย์ตัวอย่าง จง
เขียนโปรแกรมรับตัวเลขจำนวนเต็มจากแป้นพิมพ์จำนวนกี่ครั้งก็ได้
จนกว่าจะป้อนจำนวนเต็มที่น้อยกว่าศูนย์เข้าไปจึงจะหยุดทำ
แล้วให้แสดงจำนวนครั้งที่ป้อน แสดงผลรวมของตัวเลข
และค่าเฉลี่ยของตัวเลขที่ป้อนทั้งหมดโดยไม่รวมกับจำนวนตัวเลขที่น้อยกว่า
ศูนย์ออกทางจอภาพ
1.3 ผังงาน จากตัวอย่างที่
5.3 สามารถวิเคราะห์เขียนเป็นผังงานเพื่อแสดงวิธีการแก้ปัญหาดังภาพที่
5.9
ภาพที่ 5.10 แสดงคำสั่งของโปรแกรม
1.5 คำอธิบายโปรแกรม มีดังนี้
บรรทัดที่ 2-3
เป็นการกำหนดค่าให้กับตัวแปร sum = 0.0 และ count
= 0 เก็บไว้ในหน่วยความจำ
บรรทัดที่ 4
เป็นคำสั่งแสดงข้อความ Enter number : แล้วรับตัวเลขจำนวนเต็มจากแป้นพิมพ์ไปเก็บไว้ที่ตัวแปร
num เพื่อที่จะนำไปตรวจสอบเงื่อนไขของคำสั่ง while
บรรทัดที่ 5 เป็นฟังก์ชันเพื่อเปลี่ยนข้อมูลที่ป้อนให้เป็นตัวเลข
บรรทัดที่ 6 เป็นคำสั่ง while loop โดยจะมีการตรวจสอบเงื่อนไขก่อน
ๆ ที่จะเข้าไปทำคำสั่งใน while loop ถ้าเงื่อนไขเป็นจริงจะเข้าไปประมวลผลคำสั่งใน
loop แต่ถ้าเงื่อนไขเป็นเท็จจะไม่เข้าใน loop และจะไปทำคำสั่งต่อไปที่ถัดจาก
loop คือบรรทัดที่ 12 เงื่อนไขในโปรแกรมนี้ คือ
num > 0 จากตัวอย่างผลลัพธ์ของโปรแกรมด้านบนถ้า num
ที่รับเข้ามาครั้งแรก คือ 5 เมื่อนำมาเปรียบเทียบกับเงื่อนไขจะได้ผลลัพธ์เป็นจริง
คำสั่ง while loop จะให้ผ่านเข้าไปทำคำสั่งในตัวของ
loop
บรรทัดที่ 7 คำสั่งหาผลรวมของตัวเลขที่รับเข้าไปทั้งหมดคือ sum += num หรือ sum = sum + num จะเป็นการนำค่าที่เก็บไว้ในตัวแปร
sum ทางด้านขวา ไปบวกด้วยค่าที่เก็บไว้ในตัวแปร num แล้วนำผลบวกที่ได้ไปส่งค่าให้กับตัวแปร sum ทางด้านซ้าย
ในกรณีนี้คือ sum ทางด้านขวา
คือ 0 บวกด้วย num คือ 5 รวมกันจะได้เท่ากับ 5 แล้วนำค่าที่ได้ส่งไปให้กับ sum ทางด้านซ้ายมือ เพราะฉะนั้นจาก
sum ที่เก็บ 0 เอาไว้ในหน่วยความจำ ก็จะเปลี่ยนมาเป็น 5 ทันที
บรรทัดที่ 8 เป็นคำสั่งหาจำนวนครั้งที่รับตัวเลขจากแป้นพิมพ์ คือ count =
count + 1 จะเป็นการเพิ่มค่าตัวแปร
count ทางด้านซ้ายรอบละ 1 โดยในขณะนี้ในหน่วยความจำ ตัวแปร count ทางซ้ายเก็บค่า
1 อยู่ ถ้าบวกอีก 1 จะได้เท่ากับ 2
แล้วส่งค่าไปเก็บในตัวแปร count
ทางด้านซ้าย count ในขณะนี้จะเก็บค่า 2
ในหน่วยความจำทันที
บรรทัดที่ 9-10 เป็นคำสั่งแสดงข้อความ Enter number : แล้วรับตัวเลขจำนวนเต็มจากแป้นพิมพ์ไปเก็บไว้ที่ตัวแปร
num ไม่ว่าตัวแปรตัวนี้จะเก็บค่าอะไรอยู่ก็ตาม แต่เมื่อประมวลผลคำสั่งนี้และรับตัวเลขจำนวนเต็มจากแป้นพิมพ์เข้าไป
num จะเก็บค่าใหม่ทันที
หลังจากนั้น จะวนย้อนกลับไปประมวลผลที่ตัวคำสั่ง while loop ในบรรทัดที่ 6 ใหม่
บรรทัดที่ 12 เป็นการคำนวณหาค่าเฉลี่ยของตัวเลขที่รับเข้าไป โดยการนำผลรวมมาหารด้วยจำนวนครั้งที่รับเข้าไป
แล้วไปเก็บไว้ที่ตัวแปร avg
บรรทัดที่
13 เป็นคำสั่งแสดงค่าที่เก็บไว้ในตัวแปร count sum และ avg แสดงทางจอภาพ ในกรณีที่ต้องการแสดงผลในบรรทัดเดียวกันให้ใช้ฟังก์ชัน
str() เพื่อเปลี่ยนตัวเลขให้เป็นข้อความ
1.6 ผลลัพธ์ ได้จากคำสั่งของโปรแกรม เมื่อมีการ run โปรแกรมและทดลองป้อนข้อมูลจำนวน 5 จำนวน ผลที่ได้ดังภาพที่
5.11
ภาพที่ 5.11
แสดงผลการทำงานของโปรแกรม
ไม่มีความคิดเห็น:
แสดงความคิดเห็น