SlideShare a Scribd company logo
Chapter 4
การเขียนโปรแกรมควบคุมทิศทางการไหล
แบบวนซ้า
Loop Programming
Mr.Chaisiri Sanitphonklang
Computer Science and Artificial Intelligence
Faculty of Science, Chandrkasem Rajabhat University (CRU)
semester 1/2022
objective
2
หลังจากศึกษาบทที่ 4 แล้วนักศึกษามีความสามารถดังต่อไปนี้
1. ผู้เรียนสามารถอภิปรายถึงทิศทางการไหลแบบวนซ้าได้
2. ผู้เรียนสามารถวิเคราะห์งานหรือปัญหาที่ต้องการแก้ไขให้อยู่ในทิศทางการไหลแบบวนซ้าของโปรแกรมได้อย่างเหมาะสม
3. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย for loop ได้
4. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย for loop กับ else ได้
5. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย while loop ได้
6. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย while loop กับ else ได้
7. ผู้เรียนสามารถประยุกต์ใช ้งานการเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าที่มีการผสมผสานแต่ละรูปแบบที่สามารถ
เข้ามาช่วยแก้ปัญหาได้
content
3
1. ชุดคาสั่ง for loop
2. ชุดคาสั่ง for loop กับ else
3. ชุดคาสั่ง while loop
4. ชุดคาสั่ง while loop กับ else
5. ชุดคาสั่ง Nested loop
6. ชุดคาสั่ง break และ continue
7. ชุดคาสั่ง pass
Introduction
4
• นิพจน์ทดสอบหรือเรียกอีกอย่างว่า “เงื่อนไข” ยังเป็ นหัวใจสาคัญของการเขียน
โปรแกรมควบคุมทิศทางการไหลแบบวนซ้า
• ลักษณะงานแบบวนซ้า คือการกลับมาทางานเดิมหรือสิ่งเดิมซ้า โดยมีเงื่อนไขเข้ามา
ตรวจสอบว่าจะให้ทาซ้า
• เช่น การป้อนรหัส เอ ที เอ็ม (ATM) ถ้าป้อนรหัสผิดระบบจะวนกลับมาให้ป้อนใหม่
• ชุดคาสั่งสาหรับดาเนินการแบบวนซ้ามีด้วยกัน 2 รูปแบบ คือ for loop และ while
loop
1. ชุดคาสั่ง for loop
5
• ชุดคาสั่ง for loop ถูกนามาใช้กับชุดข้อมูลแบบลาดับและมีจานวนที่แน่นอน เช่น
List, Tuple, String เป็ นต้น
• การวนซ้าลาดับเรียกว่า การข้ามผ่าน (traversal)
6
1. ชุดคาสั่ง for loop
1.1 ไวยากรณ์ for loop
for val in sequence:
loop body
for คือ คาสาคัญที่ระบุเพื่อให้คอมไพเลอร ์ทราบว่าเป็ นงานวนซ้า
val คือ ตัวแปรที่สร ้างขึ้นมาหยิบค่าจาก sequence แล้วนาไปใช ้งาน
in คือ คาสาคัญที่แสดงการเป็ นสมาชิกของออบเจกต์ sequence
loop body คือ ชุดคาสั่งงานที่ต้องดาเนินการภายใต้ for loop
7
1.2 ผังงานชุดคาสั่ง for loop
1. ชุดคาสั่ง for loop
รายการสุดท้าย ?
จริง
เท็จ
บอดี้ของ for
ออกจากลูป
รายการใน sequence
Password == true
true
false
Select menu
password
It’s wrong
ภาพที่ 2 ตัวอย่างผังงานป้ อนรหัส ATM
ภาพที่ 1 ผังงานการวนซ้าแบบ for loop
8
1. ชุดคาสั่ง for loop
1.3 ตัวอย่างชุดคาสั่ง for loop ของการหาผลรวมตัวเลขในรายการข้อมูล
1
2
3
4
5
6
7
8
# List of numbers
numbers = [6, 5, 3, 8, 4, 2, 5, 4,
11]
# variable to store the sum
sum = 0
# iterate over the list
for val in numbers:
sum = sum+val
print( “The sum is”, sum)
The sum is 48
ผลลัพธ์
9
1. ชุดคาสั่ง for loop
1.4 ฟังก์ชัน range ( )
• ฟังก์ชัน range คือฟังก์ชันสาหรับสร ้างรายการลาดับตัวเลขแบบอัตโนมัติ โดยกาหนดค่าเริ่มต้น ค่าสิ้นสุด และขนาดอนุกรม
ตัวเลข มีรูปแบบการใช ้งานดังนี้
range (10) หมายถึง ให้สร ้างรายการลาดับตัวเลข 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range (2 , 5) หมายถึง ให้สร ้างรายการลาดับตัวเลข 2, 3, 4
range (2 , 10, 2) หมายถึง ให้สร ้างรายการลาดับตัวเลข 2, 4, 6, 8
แต่ฟังก์ชัน range ( ) เป็ นฟังก์ชันที่ไม่รองรับการทางานแบบวนซ้าได้จึงต้องทางานร่วมกับฟังก์ชัน list ( ) ซึ่งเป็ น
ฟังก์ชันแปลงข้อมูลให้อยู่ในรูปแบบข้อมูลลิสต์
10
1. ชุดคาสั่ง for loop
1.4 ฟังก์ชัน range ( )
1
2
3
4
print(range(10))
print(list(range(10)))
print(list(range(2, 8)))
print(list(range(2, 20,
3)))
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8,
9]
[2, 3, 4, 5, 6, 7]
[2, 5, 8, 11, 14, 17]
ผลลัพธ์
11
1. ชุดคาสั่ง for loop
นอกจากฟังก์ชัน list ( ) ที่สามารถใช ้งานร่วมกับฟังก์ชัน rang ( ) แล้วยังมีอีกฟังก์ชันคือฟังก์ชัน len ( ) ซึ่งเป็ นฟังก์ชัน
สร ้าง index ให้กับรายการข้อมูล ดังนี้
1
2
3
4
5
# Program to iterate through a list using indexing
genre = ['pop', 'rock', 'jazz']
# iterate over the list using index
for i in range(len(genre)):
print( “I like” , genre[i])
I like pop
I like rock
I like jazz
ผลลัพธ ์
12
1. ชุดคาสั่ง for loop
1.5 ขั้นตอนการเขียนโปรแกรมด้วย for loop
System Development Lift Cycle
SDLC
ทาความเข้าใจกับปัญหา (Understance Business)
1
วิเคราะห์ระบบ (System Analysis)
2
ออกแบบระบบ (System Design)
3
พัฒนาระบบ (System Development)
4
ทดสอบระบบ (Testing)
5
13
1. ชุดคาสั่ง for loop
โจทย์ปัญหา จงเขียนโปรแกรมด้วยชุดคาสั่ง for loop เพื่อนาค่าเลขคู่จาก 1-
10 แสดงผลออกทางจอภาพ
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
1) ทาความเข้าใจปัญหา
ปัญหา คือ การค้นหาเลขคู่จากเลขจานวนเต็ม 1 ถึง 10 โดยใช ้การมอดุโล
(modulo) หรือเรียกอีกอย่างว่าหารเก็บเศษด้วย 2 ถ้าเศษจากการหารได้ 0
แสดงว่าจานวนเต็มนั้นเป็ นเลขคู่แน่นอน
14
1. ชุดคาสั่ง for loop
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
2) วิเคราะห์ระบบ
2.1 ) วิเคราะห์ส่วนงานที่สอดคล้องกับหน่วยทางานของคอมพิวเตอร ์4 หน่วย
หน่วยนาเข้า : list (ที่จัดเก็บรายการ 1-10)
หน่วยประมวลผล : sum = item % 2
หน่วยตัดสินใจ : list == Empty
หน่วยแสดงผล : จานวนเลขคู่
15
1. ชุดคาสั่ง for loop
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
2.2) วิเคราะห์ขั้นตอนงาน ด้วยอัลกอริทึมและผังงาน
อัลกอริทึม
1. สร ้าง list เก็บรายการเลขจานวนเต็ม 1-10
2. สร ้างตัวแปร var สาหรับรอรับค่าจาก list คราวละ 1 รายการ พร้อมตรวจสอบ list
== Empty ให้หยุด
3. ถ้ามีรายการตัวเลขให้นามาทาการหารเก็บเศษด้วย sum= item % 2
4. ถ้าผลหารเก็บเศษได้เท่ากับ 0 เป็ นจริง แสดงรายการนั้นออกทางจอภาพ แล้ววน
กลับไปเริ่มต้นใหม่อีกรอบ
5. ถ้า list == Empty หยุดการวนซ้าไปทางานเดิม
6. จบการทางาน
16
1. ชุดคาสั่ง for loop
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
Start
number =
[1,2,3,4,5,6,7,…10]
number !=
Empty
sum = number [ i ] % 2
Sto
p
sum == 0
True
Tru
e
Fal
se
False
number [
i ]
17
3) ออกแบบ (ส่วนติดต่อกับผู้ใช ้)
1. ชุดคาสั่ง for loop
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
รายการ [ 1,2,3,4,5,6,7,8,9,10]
---------------------------------------------------
รายการเลขคู่มีดังนี้
2,4,6,8,10
18
1. ชุดคาสั่ง for loop
ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop
4) พัฒนาระบบ หรือเขียนโปรแกรม
1
2
3
4
5
6
7
8
number =[1,2,3,4,5,6,7,8,9,10]
print ("รายการ :",number)
print ("------------------------------------")
print ("รายการเลขคู่n")
for var in number:
sum=var%2
if sum==0:
print(var, end=' ')
2. ชุดคาสั่ง for loop กับ else
19
• for loop กับ else คือ ในลูป for สามารถมีบอดี้ else ได้ โดย else เป็ นส่วนที่ถูก
ประมวลผลเมื่อ for loop ดาเนินการกับข้อมูลในรายการครบถ้วนแล้ว
• เพื่อเป็ นการแจ้งเตือนให้ทราบว่าข้อมูลหมดแล้ว และถือว่า else เป็ นส่วนหนึ่ง for
loop
20
1
2
3
4
5
digits = [0, 1, 5]
for i in digits:
print(i)
else:
print(“No items left.” )
2. ชุดคาสั่ง for loop กับ else
ตัวอย่างการใช้ for ร่วมกับ else
0
1
5
No items left.
ผลลัพธ์
21
ตัวอย่างการใช้ for ร่วมกับ break
1
2
3
4
5
6
7
8
9
# program to display student's marks from record
student_name = 'chaisiri'
marks = {'Somchai': 90, 'Somsak': 55, 'Somchai': 77}
for student in marks:
if student == student_name:
print(marks[student])
break
else:
print('No entry with that name found.')
2. ชุดคาสั่ง for loop กับ else
No entry with that name found.
ผลลัพธ์
3. ชุดคาสั่ง while loop
22
• while loop ในไพทอนถูกใช้เพื่อวนซ้าทางานเดิมจนกว่าผลของนิพจน์ทดสอบ
เป็ นเท็จ และนิยมใช้กับการวนซ้างานเดิมที่ไม่ทราบจานวนรอบที่แน่นอนในการวน
ซ้า
23
3. ชุดคาสั่ง while loop
3.1 ไวยากรณ์ชุดคาสั่ง while loop
while test_expression:
Body of while
while คือ คาสาคัญที่กาหนดมาให้แจ้งคอมไพเลอร ์ทราบว่าเป็ นการวนซ้า
test_expression คือ นิพจน์ทดสอบถ้าผลของนิพจน์เป็ นจริงให้ทางานในลูป
colon ( : ) คือ สัญลักษณ์สิ้นสุดส่วนหัวของ while
Body of while คือ ส่วนของชุดคาสั่งที่ดาเนินการภายใน while loop
24
3.2 ผังงานชุดคาสั่ง while loop
3. ชุดคาสั่ง while loop
นิพจน์
ทดสอบ
บอดี้ของ while
เท็จ
จริ
ง
ออกจาก loop
นาเข้า while
loop
25
3. ชุดคาสั่ง while loop
3.2 ตัวอย่างการเขียนชุดคาสั่ง while loop
หาผลรวมจากเลขจานวนนับธรรมชาติจากผู้ที่ป้ อนผ่านเข้ามาทางแป้ นพิมพ์
1
2
3
4
5
6
7
ผลลัพธ์
n = int(input( "Enter n: ” ))
sum = 0
i = 1
while i <= n:
sum = sum + i
i = i+1 # update counter
print( “The sum is” , sum)
Enter n: 10
The sum is 55
26
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
โจทย์ปัญหา จงเขียนโปรแกรมค้นหาผลรวมของจานวน 34, 56, 43, 23, 59, 70 และหลังจากนั้นทาการหา
ค่าเฉลี่ยแล้วแสดงผลลัพธ์ออกทางจอภาพ ด้วยชุดคาสั่ง while loop
1) ทาความเข้าใจปัญหา
บวก (+) แล้วนาไปหาค่าเฉลี่ย โดยการนาผลรวมหารด้วยจานวนสมาชิกทั้งหมด
ปัญหาคือ หาผลรวมของจานวน 1 ชุดแล้วนาผลรวมมาหาค่าเฉลี่ยพร ้อมแสดงผล
27
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
2) วิเคราะห์
2.1) วิเคราะห์ส่วนงานที่สอดคล้องกับหน่วยทางานของคอมพิวเตอร ์4 หน่วย
หน่วยนาเข้า :
หน่วยประมวลผล :
:
หน่วยตัดสินใจ :
หน่วยแสดงผล :
ชุดข้อมูลเลขจานวนเต็ม
ผลรวม = ผลรวม + ข้อมูลตาแหน่งที่ i
ค่าเฉลี่ย = ผลรวม / จานวนทั้งหมด
ตาแหน่งข้อมูล < ขนาดข้อมูล
ค่าเฉลี่ย
28
2.2) วิเคราะห์ขั้นตอนงาน ด้วยอัลกอริทึมและผังงาน
อัลกอริทึม
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
1. เริ่มต้น
2. สร ้าง List เก็บจานวน 34,56,43,23,59,70
3. กาหนดตัวแปร i = 0 เพื่อใช ้อ้างอิงตาแหน่งข้อมูลใน List
4. กาหนดตัวแปร total = 0 ไว้ใช ้เก็บผลรวม
5. วนซ้าตรวจตาแหน่งที่อ้างอิงข้อมูลต้องน้อยกว่าขนาดข้อมูล
5.1 ถ้าเงื่อนไขเป็ นจริงให้ทา ผลรวม = ผลรวม + ข้อมูลตาแหน่งที่ i
5.2เพิ่มค่า i อีก 1
6. เมื่อหาผลรวมข้อมูลครบแล้ว
6.1 หาค่าเฉลี่ยจาก ค่าเฉลี่ย = ผลรวม / จานวนข้อมูลทั้งหมด
7. แสดงผลค่าเฉลี่ยออกทางจอภาพ
8. จบการทางาน
29
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
เขียนผังงาน
Sta
rt
score = [ 34,56,43,23,59,70]
i =0
total =0
1
1
i <
len(score)
i = i + 1
average = total /
len(score)
False
Sto
p
average
True
total = total + score[ i
]
1
30
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
3) ออกแบบ (ส่วนติดต่อผู้ใช ้)
ข้อมูล 34,56,43,23,59,70
-----------------------------------------
ผลรวม : 285
คะแนนเฉลี่ย : 47.5
31
3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop
3. ชุดคาสั่ง while loop
4) เขียนโปรแกรม 1
2
3
4
5
6
7
8
9
10
11
Sta
rt
score = [ 34,56,43,23,59,70]
i =0
total =0
1
1
score = [34,56,43,23,59,70]
i=0
total=0
print (“ข้อมูล : ”,score)
while i<len(score):
total=total+score[i]
i=i+1
else:
average = total/(len(score))
print (“ผลรวม : ” total)
print ("คะแนนเฉลี่ย : ",average)
i <
len(score)
i = i + 1
average = total /
len(score)
False
Sto
p
average
True
total = total + score[ i
]
1
32
4. ชุดคาสั่ง while loop กับ else
• การใช ้else กับ while loop นั้น ส่วนของ else ถูกดาเนินการเมื่อเงื่อนไขในการ
ดาเนินการ while loop เป็นเท็จ
• โดยปกติแล้วการหยุด while loop สามารถใช ้ชุดคาสั่ง break แต่ในบางกรณี
ต้องการให้ทาอะไรบางอย่างหลังจากวนลูปทางานครบตามเงื่อนไข ดังนั้นต้องอาศัย
ชุดคาสั่ง else มาร่วมทางาน
33
4. ชุดคาสั่ง while loop กับ else
1
2
3
4
5
6
ตัวอย่างชุดคาสั่ง else ร่วมกับ while
ผลลัพธ์
counter = 0
while counter < 3 :
print( “Inside loop” )
counter = counter + 1
else:
print( “Inside else” )
Inside loop
Inside loop
Inside loop
Inside else
34
5. ชุดคาสั่ง Nested loop
• Nested loop คือชุดคาสั่ง loop ชุดหนึ่งซ ้อนอยู่ภายใต้ชุดคาสั่ง loop อีกชุดหนึ่ง
• สามารถใช ้ได้กับทั้ง while และ for อาจจะเป็ น for ถูกซ ้อนภายใต้ while หรือ while
ซ ้อนภายใต้ for หรือ while ซ ้อนภายใต้ while หรือ for ซ ้อนภายใต้ for
ตัวอย่าง เช่น การแสดงสูตรคูณแม่ 2 – 5
Loop นอก คือ การวนซ้าดาเนินการหาผลคูณของแม่สูตรคูณแม่ 2 , 3, 4, และแม่ 5
ส่วน Loop ใน คือ การหาผลลัพธ์ของผลคูณจาก 1 – 12 ของแต่ละแม่สูตรคูณ
35
5. ชุดคาสั่ง Nested loop
สูตรคูณแม่ 2
1 x 2 = 2
2 x 2 = 4
3 x 2 = 6
4 x 2 = 8
5 x 2 = 10
6 x 2 = 12
7 x 2 = 14
8 x 2 = 16
9 x 2 = 18
10 x 2 = 20
11 x 2 = 22
12 x 2 = 24
สูตรคูณแม่ 3
1 x 3 = 3
2 x 3 = 6
3 x 3 = 9
4 x 3 = 12
5 x 3 = 15
6 x 3 = 18
7 x 3 = 21
8 x 3 = 24
9 x 3 = 27
10 x 3 = 30
11 x 3 = 33
12 x 3 = 36
สูตรคูณแม่ 4
1 x 4 = 4
2 x 4 = 8
3 x 4 = 12
4 x 4 = 16
5 x 4 = 20
6 x 4 = 24
7 x 4 = 28
8 x 4 = 32
9 x 4 = 36
10 x 4 = 40
11 x 4 = 44
12 x 4 = 48
สูตรคูณแม่ 5
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
11 x 5 = 55
12 x 5 = 60
36
5.1 ไวยากรณ์ชุดคาสั่ง Nested loop
5. ชุดคาสั่ง Nested loop
while test_expression:
while test_expression:
Body of inside while
while test_expression:
for val in sequence:
loop body of for
หรือ
37
5.2 ตัวอย่างโปรแกรมการแสดงชุดคาสั่ง nested loop
5. ชุดคาสั่ง Nested loop
แบบ for ซ ้อนภายใต้ while ของงานแสดงแม่สูตรคูณ
1
2
3
4
5
6
7
8
9
10
11
n=int(input("ป้ อนจานวนแม่สูตรที่ต้องการดาเนินการ :” ))
i=2
while i<= n:
for m in range(1,13):
sum = m*i
print("%d X %d = %d"%(m,i,sum))
else:
print( "จบการคูณแม่ %d” %i )
i=i+1
else:
print( "การคูณดาเนินการสาเร็จ” )
38
5.3 การใช้งานคาสาคัญ True และ False ในนิพจน์ทดสอบ
5. ชุดคาสั่ง Nested loop
• คือ ผลดาเนินการของนิพจน์ทดสอบจะได้เป็ น True หรือ False อย่างใดอย่างหนึ่งแน่นอน
• นิพจน์ทดสอบได้ใช ้เครื่องหมายเปรียบเทียบและเครื่องหมายตรรกะทางคณิตศาสตร ์เข้ามาช่วย
ดาเนินการ ซึ่งเครื่องหมายทั้งสองนั้นมีผลดาเนินการเป็ น True หรือ False อย่างใดอย่างหนึ่ง
แน่นอน
• สามารถกาหนดคาสาคัญ True หรือ False โดยตรงแทนค่านิพจน์ทดสอบใน while loop ได้
39
ตัวอย่างปัญหา โปรแกรมการคานวณเลข 2 จานวน โดยมีเมนูให้ผู้ใช ้เลือกดาเนินการ 3
รายการประกอบด้วย 1 หาผลรวม 2 หาผลต่าง และ 3 ออกจากระบบ ถ้าผู้ใช ้เลือก เมนูที่ 1 หรือ 2 ลาดับ
ถัดไปต้องป้ อนตัวเลข 2 จานวนลงไปในระบบ แล้วระบบนาข้อมูลตัวเลขทั้งสองไปดาเนินการหาผลรวม
สาหรับเมนูที่ 1 และดาเนินการหาผลต่างสาหรับเมนูที่ 2 ส่วนเมนูที่ 3 คือออกจากระบบเพื่อสิ้นสุดการ
ทางาน
5.3 การใช้งานคาสาคัญ True และ False ในนิพจน์ทดสอบ
5. ชุดคาสั่ง Nested loop
40
1
2
3
4
5
6
7
8
9
choice = True
while choice:
print( “กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ” )
re=int(input( "ป้ อนตัวเลือก : ” ))
if re == 1:
num1 = int(input( "ตัวตั้ง :” ))
num2 = int(input( "ตัวบวก :” ))
sum = num1 + num2
print( "ผลบวก %d + %d = %d” %(num1,num2,sum))
41
10
11
12
13
14
15
16
17
elif re == 2:
num1 = int(input( "ตัวตั้ง :” ))
num2 = int(input( "ตัวลบ :” ))
sum = num1 - num2
print( "ผลบวก %d - %d = %d” %(num1,num2,sum))
else:
print( "ออกจากระบบ” )
choice = False
42
กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ
ป้อนตัวเลือก : 1
ตัวตั้ง : 5
ตัวบวก : 6
ผลบวก 5 + 6 = 11
กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ
ป้อนตัวเลือก : 2
ตัวตั้ง : 6
ตัวลบ : 3
ผลบวก 6 - 3 = 3
กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ
ป้อนตัวเลือก : 3
ออกจากระบบ
ผลลัพธ์
43
6. ชุดคาสั่ง break และ continue
• การวนซ้าของชุดคาสั่ง while หรือ for จะดาเนินการจนกว่านิพจน์ทดสอบเป็ นเท็จถึงหยุดกา
รวนซ้า แต่ในบางครั้งต้องการยุติการวนซ้าโดยไม่ต้องตรวจสอบนิพจน์ทดสอบ กรณีเช่นนี้ต้องใช ้
คาสั่ง break และ continue
1. ชุดคาสั่ง break ทาหน้าที่ยุติการวนซ้าที่มีอยู่ การควบคุมโปรแกรมจะไหลไปยังคาสั่งอื่นที่
อยู่หลังการวนซ้าทันที หากคาสั่ง break อยู่ในลูปที่ซ ้อนกัน (ลูปภายในลูปอื่น) คาสั่ง break จะ
ยุติลูปในสุด
2. ไวยากรณ์ชุดคาสั่ง break
break
44
3. ผังงานชุดคาสั่ง break
6. ชุดคาสั่ง break และ continue
นิพจน์ทดสอบ
break
คาสั่งที่เหลืออยู่
จริง
ใช่
ไม่ใช่
ออกจากลูป
45
การทางานของชุดคาสั่ง break ใน for loop และ while loop
6. ชุดคาสั่ง break และ continue
for var in sequence :
# ชุดคำสั่งใน for loop
If condition :
break
#ชุดคำสั่งใน for loop
# ชุดคำสั่งนอก for loop
while test expression :
# ชุดคำสั่งใน while
loop
If condition :
break
#ชุดคำสั่งใน while loop
# ชุดคำสั่งนอก while loop
46
6. ชุดคาสั่ง break และ continue
4. ตัวอย่างการใช้ชุดคาสั่ง break ในงานแสดงตัวอักษรจากชุดตัวอักษรออกทางจอภาพทุกตัวยกเว้นอักษร i จาก
ข้อความ “chaisiri”
1
2
3
4
5
6
# กำรใช ้คำสั่ง break ใน for loop
for var in "chaisiri":
if var == "i":
break
print(var)
print("The end")
c
h
a
The end
ผลลัพธ์
47
5. ชุดคาสั่ง continue ใช ้สาหรับข้ามผ่านชุดคาสั่งที่เหลือภายในลูปสาหรับการวนซ้าปัจจุบันเท่านั้น
โดยการวนซ้านั้นยังไม่จบลูปแต่ให้ดาเนินการวนซ้ารอบต่อไปได้
6. ชุดคาสั่ง break และ continue
6. ไวยากรณ์ชุดคาสั่ง continue
continue
7. ผังงานชุดคาสั่ง continue
นิพจน์
ทดสอบ
Continu
e ?
คาสั่งที่เหลืออยู่
เท็จ
จริง
ใ
ช่
ไม่
ใช่
ออกจาก
ลูป
48
การทางานของชุดคาสั่ง continue ใน for loop และ while loop
6. ชุดคาสั่ง break และ continue
for var in sequence :
# ชุดคำสั่งใน for loop
If condition :
continue
#ชุดคำสั่งใน for loop
# ชุดคำสั่งนอก for loop
while test expression :
# ชุดคำสั่งใน while
loop
If condition :
continue
#ชุดคำสั่งใน while loop
# ชุดคำสั่งนอก while loop
49
8. ตัวอย่างการใช้ชุดคาสั่ง continue ในงานแสดงตัวอักษรจากชุดตัวอักษรออกทางจอภาพทุกตัว
ยกเว้นอักษร i จากข้อความ “chaisiri”
6. ชุดคาสั่ง break และ continue
1
2
3
4
5
6
# กำรใช ้คำสั่ง break ใน for loop
for var in "chaisiri":
if var == "i":
continue
print(var)
print("The end")
c
h
a
s
r
The end
ผลลัพธ์
50
7. ชุดคาสั่ง pass
• ชุดคาสั่ง pass ใช ้สาหรับยึดครองตาแหน่งการสร ้างฟังก์ชัน ลูป ที่ต้องใช ้ในอนาคต
• โดย pass คือชุดคาสั่งที่มีค่าว่างเปล่าคล้าย comment แต่แตกต่างกันที่ comment ถูก
มองข้ามจากคอมไพเลอร ์แต่ pass ไม่ใช่
• ไม่มีอะไรเกิดขึ้นเมื่อดาเนินการกับ pass เหมาะกับเหตุการณ์ที่สร ้างฟังก์ชันหรือลูปขึ้นมาแล้ว
ยังไม่มีบอดี้แต่ต้องทาการประมวลผล
1. ไวยากรณ์ชุดคาสั่ง pass
pass
51
7. ชุดคาสั่ง pass
เปรียบเทียบการทางานระหว่างใช ้คาสั่ง pass และไม่ใช ้ของฟังก์ชัน
1
2
3
4
5
'''pass เป็นเพียงตัวยึดครองตำแหน่งของ
ฟังก์ชัน
ที่จะเกิดขึ้นในอนำคตเท่ำนั้น.'''
sequence = {'p', 'a', 's', 's'}
for val in sequence:
pass
ผลลัพธ์
1
2
3
4
5
'''pass เป็นเพียงตัวยึดครองตำแหน่งของ
ฟังก์ชัน
ที่จะเกิดขึ้นในอนำคตเท่ำนั้น.'''
sequence = {'p', 'a', 's', 's'}
for val in sequence:
IndentationError: expected an indented
block after 'for' statement on line 5
ผลลัพธ์
52
บทสรุป
การเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้านั้น มีทิศทางการไหลของงานในลักษณะวนกลับไปเริ่มต้น
งานเดิมใหม่ตราบใดที่นิพจน์ทดสอบเป็ นจริง โดยจะหลุดออกจากวงจรงานเดิมเมื่อนิพจน์ทดสอบเป็ นเท็จ เช่น การป้ อน
รหัสบัตร เอ ที เอ็ม (ATM) ถ้าป้ อนรหัสผิดระบบจะวนกลับมาให้ป้ อนรหัสใหม่จนกว่ารหัสถูกต้อง เป็ นต้น ในไพทอนได้
จัดเตรียมชุดคาสั่งสาหรับจัดการวนซ้าไว้ 2 รูปแบบ คือ 1) ชุดคาสั่ง for loop เหมาะกับงานที่มีจานวนรอบดาเนินการ
ที่แน่นนอน ดังนั้นจึงนิยมใช ้กับชุดข้อมูลที่ถูกจัดเก็บไว้ใน ลิสต์ทูเปิล หรือสตริง เป็ นต้น 2) ชุดคาสั่ง while loop เหมาะ
กับงานที่ไม่ทราบจานวนวนซ้าที่แน่นอน ก่อนดาเนินงานต้องทาการตรวจสอบนิพจน์ทดสอบก่อนค่อยดาเนินงาน และใน
บางกรณีเมื่อทาการวนซ้าทางานจบแล้วแต่อยากให้หลังการวนซ้าทางานบางอย่างต่อเนื่องทันทีสามารถใช ้ชุดคาสั่ง else
ร่วมกับ for loop และ while loop ได้ กรณีที่มีการวนซ้าอยู่นั้นสามารถหยุดการทางานของการวนซ้าด้วยชุดคาสั่ง
break และในทางกลับกันถ้าต้องการให้โปรแกรมทางานต่อเนื่องต้องใช ้ชุดคาสั่ง continue
53
Q&A

More Related Content

Similar to Loop Programming for Python Language programming (20)

บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
View Nudchanad
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์
Oraphan4
 
Programming
Programming
sa
 
RTAF_Basic_Python_2022_Cyber_Operation_Contest.pptx
RTAF_Basic_Python_2022_Cyber_Operation_Contest.pptx
nkrafacyberclub
 
ทบทวนภาษา C(1)
ทบทวนภาษา C(1)
Krissanachai Sararam
 
Pbl2 นะแนนxปิ้น
Pbl2 นะแนนxปิ้น
Dararat Worasut
 
03 โครงสร้างและผังงานโปรแกรม
03 โครงสร้างและผังงานโปรแกรม
pirapongaru
 
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
Itslvle Parin
 
น.ส.ศิริวิภา กาญจนาวิล-59170116-sec-1
น.ส.ศิริวิภา กาญจนาวิล-59170116-sec-1
หน่อย หน่อย
 
Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and Applications
Wongyos Keardsri
 
นางสาวอรอนงค์ เกตุดาว รหัสนิสิต 59170038 กลุ่ม 1
นางสาวอรอนงค์ เกตุดาว รหัสนิสิต 59170038 กลุ่ม 1
Phitsinee Mymintz
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
View Nudchanad
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์
Oraphan4
 
Programming
Programming
sa
 
RTAF_Basic_Python_2022_Cyber_Operation_Contest.pptx
RTAF_Basic_Python_2022_Cyber_Operation_Contest.pptx
nkrafacyberclub
 
Pbl2 นะแนนxปิ้น
Pbl2 นะแนนxปิ้น
Dararat Worasut
 
03 โครงสร้างและผังงานโปรแกรม
03 โครงสร้างและผังงานโปรแกรม
pirapongaru
 
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
Itslvle Parin
 
น.ส.ศิริวิภา กาญจนาวิล-59170116-sec-1
น.ส.ศิริวิภา กาญจนาวิล-59170116-sec-1
หน่อย หน่อย
 
Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and Applications
Wongyos Keardsri
 
นางสาวอรอนงค์ เกตุดาว รหัสนิสิต 59170038 กลุ่ม 1
นางสาวอรอนงค์ เกตุดาว รหัสนิสิต 59170038 กลุ่ม 1
Phitsinee Mymintz
 

Recently uploaded (6)

ขั้นตอนการให้บริการแผนกผู้ป่วยนอก (หน่วย.pdf
ขั้นตอนการให้บริการแผนกผู้ป่วยนอก (หน่วย.pdf
AkradechBamrungnam
 
ไฟล์งานการวิเคราะห์ผลจากโปรแกรม SPSS ของ
ไฟล์งานการวิเคราะห์ผลจากโปรแกรม SPSS ของ
AkradechBamrungnam
 
ระบบประสาทนร..............................................
ระบบประสาทนร..............................................
Tanachai Junsuk
 
เฉลย_แบบฝึกหัดวิชาคณิตศาสตร์ระดับมัธยมศึกษาปีที่6_ความน่าจะเป็น(ตัวแปรสุ่ม)
เฉลย_แบบฝึกหัดวิชาคณิตศาสตร์ระดับมัธยมศึกษาปีที่6_ความน่าจะเป็น(ตัวแปรสุ่ม)
Thanuphong Ngoapm
 
ต่อมไร้ท่อ...............................................
ต่อมไร้ท่อ...............................................
Tanachai Junsuk
 
ขั้นตอนการแทงเข็มพอร์ต A Cath ในผู้ป่วยมะเร็งที่ได้รับยาเคมีบำบัด
ขั้นตอนการแทงเข็มพอร์ต A Cath ในผู้ป่วยมะเร็งที่ได้รับยาเคมีบำบัด
AkradechBamrungnam
 
ขั้นตอนการให้บริการแผนกผู้ป่วยนอก (หน่วย.pdf
ขั้นตอนการให้บริการแผนกผู้ป่วยนอก (หน่วย.pdf
AkradechBamrungnam
 
ไฟล์งานการวิเคราะห์ผลจากโปรแกรม SPSS ของ
ไฟล์งานการวิเคราะห์ผลจากโปรแกรม SPSS ของ
AkradechBamrungnam
 
ระบบประสาทนร..............................................
ระบบประสาทนร..............................................
Tanachai Junsuk
 
เฉลย_แบบฝึกหัดวิชาคณิตศาสตร์ระดับมัธยมศึกษาปีที่6_ความน่าจะเป็น(ตัวแปรสุ่ม)
เฉลย_แบบฝึกหัดวิชาคณิตศาสตร์ระดับมัธยมศึกษาปีที่6_ความน่าจะเป็น(ตัวแปรสุ่ม)
Thanuphong Ngoapm
 
ต่อมไร้ท่อ...............................................
ต่อมไร้ท่อ...............................................
Tanachai Junsuk
 
ขั้นตอนการแทงเข็มพอร์ต A Cath ในผู้ป่วยมะเร็งที่ได้รับยาเคมีบำบัด
ขั้นตอนการแทงเข็มพอร์ต A Cath ในผู้ป่วยมะเร็งที่ได้รับยาเคมีบำบัด
AkradechBamrungnam
 
Ad

Loop Programming for Python Language programming

  • 1. Chapter 4 การเขียนโปรแกรมควบคุมทิศทางการไหล แบบวนซ้า Loop Programming Mr.Chaisiri Sanitphonklang Computer Science and Artificial Intelligence Faculty of Science, Chandrkasem Rajabhat University (CRU) semester 1/2022
  • 2. objective 2 หลังจากศึกษาบทที่ 4 แล้วนักศึกษามีความสามารถดังต่อไปนี้ 1. ผู้เรียนสามารถอภิปรายถึงทิศทางการไหลแบบวนซ้าได้ 2. ผู้เรียนสามารถวิเคราะห์งานหรือปัญหาที่ต้องการแก้ไขให้อยู่ในทิศทางการไหลแบบวนซ้าของโปรแกรมได้อย่างเหมาะสม 3. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย for loop ได้ 4. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย for loop กับ else ได้ 5. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย while loop ได้ 6. ผู้เรียนสามารถเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าด้วย while loop กับ else ได้ 7. ผู้เรียนสามารถประยุกต์ใช ้งานการเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้าที่มีการผสมผสานแต่ละรูปแบบที่สามารถ เข้ามาช่วยแก้ปัญหาได้
  • 3. content 3 1. ชุดคาสั่ง for loop 2. ชุดคาสั่ง for loop กับ else 3. ชุดคาสั่ง while loop 4. ชุดคาสั่ง while loop กับ else 5. ชุดคาสั่ง Nested loop 6. ชุดคาสั่ง break และ continue 7. ชุดคาสั่ง pass
  • 4. Introduction 4 • นิพจน์ทดสอบหรือเรียกอีกอย่างว่า “เงื่อนไข” ยังเป็ นหัวใจสาคัญของการเขียน โปรแกรมควบคุมทิศทางการไหลแบบวนซ้า • ลักษณะงานแบบวนซ้า คือการกลับมาทางานเดิมหรือสิ่งเดิมซ้า โดยมีเงื่อนไขเข้ามา ตรวจสอบว่าจะให้ทาซ้า • เช่น การป้อนรหัส เอ ที เอ็ม (ATM) ถ้าป้อนรหัสผิดระบบจะวนกลับมาให้ป้อนใหม่ • ชุดคาสั่งสาหรับดาเนินการแบบวนซ้ามีด้วยกัน 2 รูปแบบ คือ for loop และ while loop
  • 5. 1. ชุดคาสั่ง for loop 5 • ชุดคาสั่ง for loop ถูกนามาใช้กับชุดข้อมูลแบบลาดับและมีจานวนที่แน่นอน เช่น List, Tuple, String เป็ นต้น • การวนซ้าลาดับเรียกว่า การข้ามผ่าน (traversal)
  • 6. 6 1. ชุดคาสั่ง for loop 1.1 ไวยากรณ์ for loop for val in sequence: loop body for คือ คาสาคัญที่ระบุเพื่อให้คอมไพเลอร ์ทราบว่าเป็ นงานวนซ้า val คือ ตัวแปรที่สร ้างขึ้นมาหยิบค่าจาก sequence แล้วนาไปใช ้งาน in คือ คาสาคัญที่แสดงการเป็ นสมาชิกของออบเจกต์ sequence loop body คือ ชุดคาสั่งงานที่ต้องดาเนินการภายใต้ for loop
  • 7. 7 1.2 ผังงานชุดคาสั่ง for loop 1. ชุดคาสั่ง for loop รายการสุดท้าย ? จริง เท็จ บอดี้ของ for ออกจากลูป รายการใน sequence Password == true true false Select menu password It’s wrong ภาพที่ 2 ตัวอย่างผังงานป้ อนรหัส ATM ภาพที่ 1 ผังงานการวนซ้าแบบ for loop
  • 8. 8 1. ชุดคาสั่ง for loop 1.3 ตัวอย่างชุดคาสั่ง for loop ของการหาผลรวมตัวเลขในรายการข้อมูล 1 2 3 4 5 6 7 8 # List of numbers numbers = [6, 5, 3, 8, 4, 2, 5, 4, 11] # variable to store the sum sum = 0 # iterate over the list for val in numbers: sum = sum+val print( “The sum is”, sum) The sum is 48 ผลลัพธ์
  • 9. 9 1. ชุดคาสั่ง for loop 1.4 ฟังก์ชัน range ( ) • ฟังก์ชัน range คือฟังก์ชันสาหรับสร ้างรายการลาดับตัวเลขแบบอัตโนมัติ โดยกาหนดค่าเริ่มต้น ค่าสิ้นสุด และขนาดอนุกรม ตัวเลข มีรูปแบบการใช ้งานดังนี้ range (10) หมายถึง ให้สร ้างรายการลาดับตัวเลข 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 range (2 , 5) หมายถึง ให้สร ้างรายการลาดับตัวเลข 2, 3, 4 range (2 , 10, 2) หมายถึง ให้สร ้างรายการลาดับตัวเลข 2, 4, 6, 8 แต่ฟังก์ชัน range ( ) เป็ นฟังก์ชันที่ไม่รองรับการทางานแบบวนซ้าได้จึงต้องทางานร่วมกับฟังก์ชัน list ( ) ซึ่งเป็ น ฟังก์ชันแปลงข้อมูลให้อยู่ในรูปแบบข้อมูลลิสต์
  • 10. 10 1. ชุดคาสั่ง for loop 1.4 ฟังก์ชัน range ( ) 1 2 3 4 print(range(10)) print(list(range(10))) print(list(range(2, 8))) print(list(range(2, 20, 3))) range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6, 7] [2, 5, 8, 11, 14, 17] ผลลัพธ์
  • 11. 11 1. ชุดคาสั่ง for loop นอกจากฟังก์ชัน list ( ) ที่สามารถใช ้งานร่วมกับฟังก์ชัน rang ( ) แล้วยังมีอีกฟังก์ชันคือฟังก์ชัน len ( ) ซึ่งเป็ นฟังก์ชัน สร ้าง index ให้กับรายการข้อมูล ดังนี้ 1 2 3 4 5 # Program to iterate through a list using indexing genre = ['pop', 'rock', 'jazz'] # iterate over the list using index for i in range(len(genre)): print( “I like” , genre[i]) I like pop I like rock I like jazz ผลลัพธ ์
  • 12. 12 1. ชุดคาสั่ง for loop 1.5 ขั้นตอนการเขียนโปรแกรมด้วย for loop System Development Lift Cycle SDLC ทาความเข้าใจกับปัญหา (Understance Business) 1 วิเคราะห์ระบบ (System Analysis) 2 ออกแบบระบบ (System Design) 3 พัฒนาระบบ (System Development) 4 ทดสอบระบบ (Testing) 5
  • 13. 13 1. ชุดคาสั่ง for loop โจทย์ปัญหา จงเขียนโปรแกรมด้วยชุดคาสั่ง for loop เพื่อนาค่าเลขคู่จาก 1- 10 แสดงผลออกทางจอภาพ ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop 1) ทาความเข้าใจปัญหา ปัญหา คือ การค้นหาเลขคู่จากเลขจานวนเต็ม 1 ถึง 10 โดยใช ้การมอดุโล (modulo) หรือเรียกอีกอย่างว่าหารเก็บเศษด้วย 2 ถ้าเศษจากการหารได้ 0 แสดงว่าจานวนเต็มนั้นเป็ นเลขคู่แน่นอน
  • 14. 14 1. ชุดคาสั่ง for loop ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop 2) วิเคราะห์ระบบ 2.1 ) วิเคราะห์ส่วนงานที่สอดคล้องกับหน่วยทางานของคอมพิวเตอร ์4 หน่วย หน่วยนาเข้า : list (ที่จัดเก็บรายการ 1-10) หน่วยประมวลผล : sum = item % 2 หน่วยตัดสินใจ : list == Empty หน่วยแสดงผล : จานวนเลขคู่
  • 15. 15 1. ชุดคาสั่ง for loop ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop 2.2) วิเคราะห์ขั้นตอนงาน ด้วยอัลกอริทึมและผังงาน อัลกอริทึม 1. สร ้าง list เก็บรายการเลขจานวนเต็ม 1-10 2. สร ้างตัวแปร var สาหรับรอรับค่าจาก list คราวละ 1 รายการ พร้อมตรวจสอบ list == Empty ให้หยุด 3. ถ้ามีรายการตัวเลขให้นามาทาการหารเก็บเศษด้วย sum= item % 2 4. ถ้าผลหารเก็บเศษได้เท่ากับ 0 เป็ นจริง แสดงรายการนั้นออกทางจอภาพ แล้ววน กลับไปเริ่มต้นใหม่อีกรอบ 5. ถ้า list == Empty หยุดการวนซ้าไปทางานเดิม 6. จบการทางาน
  • 16. 16 1. ชุดคาสั่ง for loop ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop Start number = [1,2,3,4,5,6,7,…10] number != Empty sum = number [ i ] % 2 Sto p sum == 0 True Tru e Fal se False number [ i ]
  • 17. 17 3) ออกแบบ (ส่วนติดต่อกับผู้ใช ้) 1. ชุดคาสั่ง for loop ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop รายการ [ 1,2,3,4,5,6,7,8,9,10] --------------------------------------------------- รายการเลขคู่มีดังนี้ 2,4,6,8,10
  • 18. 18 1. ชุดคาสั่ง for loop ตัวอย่างเขียนโปรแกรมด้วยคาสั่ง for loop 4) พัฒนาระบบ หรือเขียนโปรแกรม 1 2 3 4 5 6 7 8 number =[1,2,3,4,5,6,7,8,9,10] print ("รายการ :",number) print ("------------------------------------") print ("รายการเลขคู่n") for var in number: sum=var%2 if sum==0: print(var, end=' ')
  • 19. 2. ชุดคาสั่ง for loop กับ else 19 • for loop กับ else คือ ในลูป for สามารถมีบอดี้ else ได้ โดย else เป็ นส่วนที่ถูก ประมวลผลเมื่อ for loop ดาเนินการกับข้อมูลในรายการครบถ้วนแล้ว • เพื่อเป็ นการแจ้งเตือนให้ทราบว่าข้อมูลหมดแล้ว และถือว่า else เป็ นส่วนหนึ่ง for loop
  • 20. 20 1 2 3 4 5 digits = [0, 1, 5] for i in digits: print(i) else: print(“No items left.” ) 2. ชุดคาสั่ง for loop กับ else ตัวอย่างการใช้ for ร่วมกับ else 0 1 5 No items left. ผลลัพธ์
  • 21. 21 ตัวอย่างการใช้ for ร่วมกับ break 1 2 3 4 5 6 7 8 9 # program to display student's marks from record student_name = 'chaisiri' marks = {'Somchai': 90, 'Somsak': 55, 'Somchai': 77} for student in marks: if student == student_name: print(marks[student]) break else: print('No entry with that name found.') 2. ชุดคาสั่ง for loop กับ else No entry with that name found. ผลลัพธ์
  • 22. 3. ชุดคาสั่ง while loop 22 • while loop ในไพทอนถูกใช้เพื่อวนซ้าทางานเดิมจนกว่าผลของนิพจน์ทดสอบ เป็ นเท็จ และนิยมใช้กับการวนซ้างานเดิมที่ไม่ทราบจานวนรอบที่แน่นอนในการวน ซ้า
  • 23. 23 3. ชุดคาสั่ง while loop 3.1 ไวยากรณ์ชุดคาสั่ง while loop while test_expression: Body of while while คือ คาสาคัญที่กาหนดมาให้แจ้งคอมไพเลอร ์ทราบว่าเป็ นการวนซ้า test_expression คือ นิพจน์ทดสอบถ้าผลของนิพจน์เป็ นจริงให้ทางานในลูป colon ( : ) คือ สัญลักษณ์สิ้นสุดส่วนหัวของ while Body of while คือ ส่วนของชุดคาสั่งที่ดาเนินการภายใน while loop
  • 24. 24 3.2 ผังงานชุดคาสั่ง while loop 3. ชุดคาสั่ง while loop นิพจน์ ทดสอบ บอดี้ของ while เท็จ จริ ง ออกจาก loop นาเข้า while loop
  • 25. 25 3. ชุดคาสั่ง while loop 3.2 ตัวอย่างการเขียนชุดคาสั่ง while loop หาผลรวมจากเลขจานวนนับธรรมชาติจากผู้ที่ป้ อนผ่านเข้ามาทางแป้ นพิมพ์ 1 2 3 4 5 6 7 ผลลัพธ์ n = int(input( "Enter n: ” )) sum = 0 i = 1 while i <= n: sum = sum + i i = i+1 # update counter print( “The sum is” , sum) Enter n: 10 The sum is 55
  • 26. 26 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop โจทย์ปัญหา จงเขียนโปรแกรมค้นหาผลรวมของจานวน 34, 56, 43, 23, 59, 70 และหลังจากนั้นทาการหา ค่าเฉลี่ยแล้วแสดงผลลัพธ์ออกทางจอภาพ ด้วยชุดคาสั่ง while loop 1) ทาความเข้าใจปัญหา บวก (+) แล้วนาไปหาค่าเฉลี่ย โดยการนาผลรวมหารด้วยจานวนสมาชิกทั้งหมด ปัญหาคือ หาผลรวมของจานวน 1 ชุดแล้วนาผลรวมมาหาค่าเฉลี่ยพร ้อมแสดงผล
  • 27. 27 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop 2) วิเคราะห์ 2.1) วิเคราะห์ส่วนงานที่สอดคล้องกับหน่วยทางานของคอมพิวเตอร ์4 หน่วย หน่วยนาเข้า : หน่วยประมวลผล : : หน่วยตัดสินใจ : หน่วยแสดงผล : ชุดข้อมูลเลขจานวนเต็ม ผลรวม = ผลรวม + ข้อมูลตาแหน่งที่ i ค่าเฉลี่ย = ผลรวม / จานวนทั้งหมด ตาแหน่งข้อมูล < ขนาดข้อมูล ค่าเฉลี่ย
  • 28. 28 2.2) วิเคราะห์ขั้นตอนงาน ด้วยอัลกอริทึมและผังงาน อัลกอริทึม 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop 1. เริ่มต้น 2. สร ้าง List เก็บจานวน 34,56,43,23,59,70 3. กาหนดตัวแปร i = 0 เพื่อใช ้อ้างอิงตาแหน่งข้อมูลใน List 4. กาหนดตัวแปร total = 0 ไว้ใช ้เก็บผลรวม 5. วนซ้าตรวจตาแหน่งที่อ้างอิงข้อมูลต้องน้อยกว่าขนาดข้อมูล 5.1 ถ้าเงื่อนไขเป็ นจริงให้ทา ผลรวม = ผลรวม + ข้อมูลตาแหน่งที่ i 5.2เพิ่มค่า i อีก 1 6. เมื่อหาผลรวมข้อมูลครบแล้ว 6.1 หาค่าเฉลี่ยจาก ค่าเฉลี่ย = ผลรวม / จานวนข้อมูลทั้งหมด 7. แสดงผลค่าเฉลี่ยออกทางจอภาพ 8. จบการทางาน
  • 29. 29 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop เขียนผังงาน Sta rt score = [ 34,56,43,23,59,70] i =0 total =0 1 1 i < len(score) i = i + 1 average = total / len(score) False Sto p average True total = total + score[ i ] 1
  • 30. 30 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop 3) ออกแบบ (ส่วนติดต่อผู้ใช ้) ข้อมูล 34,56,43,23,59,70 ----------------------------------------- ผลรวม : 285 คะแนนเฉลี่ย : 47.5
  • 31. 31 3.4 ขั้นตอนการเขียนโปรแกรมด้วย while loop 3. ชุดคาสั่ง while loop 4) เขียนโปรแกรม 1 2 3 4 5 6 7 8 9 10 11 Sta rt score = [ 34,56,43,23,59,70] i =0 total =0 1 1 score = [34,56,43,23,59,70] i=0 total=0 print (“ข้อมูล : ”,score) while i<len(score): total=total+score[i] i=i+1 else: average = total/(len(score)) print (“ผลรวม : ” total) print ("คะแนนเฉลี่ย : ",average) i < len(score) i = i + 1 average = total / len(score) False Sto p average True total = total + score[ i ] 1
  • 32. 32 4. ชุดคาสั่ง while loop กับ else • การใช ้else กับ while loop นั้น ส่วนของ else ถูกดาเนินการเมื่อเงื่อนไขในการ ดาเนินการ while loop เป็นเท็จ • โดยปกติแล้วการหยุด while loop สามารถใช ้ชุดคาสั่ง break แต่ในบางกรณี ต้องการให้ทาอะไรบางอย่างหลังจากวนลูปทางานครบตามเงื่อนไข ดังนั้นต้องอาศัย ชุดคาสั่ง else มาร่วมทางาน
  • 33. 33 4. ชุดคาสั่ง while loop กับ else 1 2 3 4 5 6 ตัวอย่างชุดคาสั่ง else ร่วมกับ while ผลลัพธ์ counter = 0 while counter < 3 : print( “Inside loop” ) counter = counter + 1 else: print( “Inside else” ) Inside loop Inside loop Inside loop Inside else
  • 34. 34 5. ชุดคาสั่ง Nested loop • Nested loop คือชุดคาสั่ง loop ชุดหนึ่งซ ้อนอยู่ภายใต้ชุดคาสั่ง loop อีกชุดหนึ่ง • สามารถใช ้ได้กับทั้ง while และ for อาจจะเป็ น for ถูกซ ้อนภายใต้ while หรือ while ซ ้อนภายใต้ for หรือ while ซ ้อนภายใต้ while หรือ for ซ ้อนภายใต้ for ตัวอย่าง เช่น การแสดงสูตรคูณแม่ 2 – 5 Loop นอก คือ การวนซ้าดาเนินการหาผลคูณของแม่สูตรคูณแม่ 2 , 3, 4, และแม่ 5 ส่วน Loop ใน คือ การหาผลลัพธ์ของผลคูณจาก 1 – 12 ของแต่ละแม่สูตรคูณ
  • 35. 35 5. ชุดคาสั่ง Nested loop สูตรคูณแม่ 2 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 10 x 2 = 20 11 x 2 = 22 12 x 2 = 24 สูตรคูณแม่ 3 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15 6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27 10 x 3 = 30 11 x 3 = 33 12 x 3 = 36 สูตรคูณแม่ 4 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36 10 x 4 = 40 11 x 4 = 44 12 x 4 = 48 สูตรคูณแม่ 5 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45 10 x 5 = 50 11 x 5 = 55 12 x 5 = 60
  • 36. 36 5.1 ไวยากรณ์ชุดคาสั่ง Nested loop 5. ชุดคาสั่ง Nested loop while test_expression: while test_expression: Body of inside while while test_expression: for val in sequence: loop body of for หรือ
  • 37. 37 5.2 ตัวอย่างโปรแกรมการแสดงชุดคาสั่ง nested loop 5. ชุดคาสั่ง Nested loop แบบ for ซ ้อนภายใต้ while ของงานแสดงแม่สูตรคูณ 1 2 3 4 5 6 7 8 9 10 11 n=int(input("ป้ อนจานวนแม่สูตรที่ต้องการดาเนินการ :” )) i=2 while i<= n: for m in range(1,13): sum = m*i print("%d X %d = %d"%(m,i,sum)) else: print( "จบการคูณแม่ %d” %i ) i=i+1 else: print( "การคูณดาเนินการสาเร็จ” )
  • 38. 38 5.3 การใช้งานคาสาคัญ True และ False ในนิพจน์ทดสอบ 5. ชุดคาสั่ง Nested loop • คือ ผลดาเนินการของนิพจน์ทดสอบจะได้เป็ น True หรือ False อย่างใดอย่างหนึ่งแน่นอน • นิพจน์ทดสอบได้ใช ้เครื่องหมายเปรียบเทียบและเครื่องหมายตรรกะทางคณิตศาสตร ์เข้ามาช่วย ดาเนินการ ซึ่งเครื่องหมายทั้งสองนั้นมีผลดาเนินการเป็ น True หรือ False อย่างใดอย่างหนึ่ง แน่นอน • สามารถกาหนดคาสาคัญ True หรือ False โดยตรงแทนค่านิพจน์ทดสอบใน while loop ได้
  • 39. 39 ตัวอย่างปัญหา โปรแกรมการคานวณเลข 2 จานวน โดยมีเมนูให้ผู้ใช ้เลือกดาเนินการ 3 รายการประกอบด้วย 1 หาผลรวม 2 หาผลต่าง และ 3 ออกจากระบบ ถ้าผู้ใช ้เลือก เมนูที่ 1 หรือ 2 ลาดับ ถัดไปต้องป้ อนตัวเลข 2 จานวนลงไปในระบบ แล้วระบบนาข้อมูลตัวเลขทั้งสองไปดาเนินการหาผลรวม สาหรับเมนูที่ 1 และดาเนินการหาผลต่างสาหรับเมนูที่ 2 ส่วนเมนูที่ 3 คือออกจากระบบเพื่อสิ้นสุดการ ทางาน 5.3 การใช้งานคาสาคัญ True และ False ในนิพจน์ทดสอบ 5. ชุดคาสั่ง Nested loop
  • 40. 40 1 2 3 4 5 6 7 8 9 choice = True while choice: print( “กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ” ) re=int(input( "ป้ อนตัวเลือก : ” )) if re == 1: num1 = int(input( "ตัวตั้ง :” )) num2 = int(input( "ตัวบวก :” )) sum = num1 + num2 print( "ผลบวก %d + %d = %d” %(num1,num2,sum))
  • 41. 41 10 11 12 13 14 15 16 17 elif re == 2: num1 = int(input( "ตัวตั้ง :” )) num2 = int(input( "ตัวลบ :” )) sum = num1 - num2 print( "ผลบวก %d - %d = %d” %(num1,num2,sum)) else: print( "ออกจากระบบ” ) choice = False
  • 42. 42 กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ ป้อนตัวเลือก : 1 ตัวตั้ง : 5 ตัวบวก : 6 ผลบวก 5 + 6 = 11 กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ ป้อนตัวเลือก : 2 ตัวตั้ง : 6 ตัวลบ : 3 ผลบวก 6 - 3 = 3 กด 1 หาผลรวม กด 2 หาผลต่าง กด 3 ออกจากระบบ ป้อนตัวเลือก : 3 ออกจากระบบ ผลลัพธ์
  • 43. 43 6. ชุดคาสั่ง break และ continue • การวนซ้าของชุดคาสั่ง while หรือ for จะดาเนินการจนกว่านิพจน์ทดสอบเป็ นเท็จถึงหยุดกา รวนซ้า แต่ในบางครั้งต้องการยุติการวนซ้าโดยไม่ต้องตรวจสอบนิพจน์ทดสอบ กรณีเช่นนี้ต้องใช ้ คาสั่ง break และ continue 1. ชุดคาสั่ง break ทาหน้าที่ยุติการวนซ้าที่มีอยู่ การควบคุมโปรแกรมจะไหลไปยังคาสั่งอื่นที่ อยู่หลังการวนซ้าทันที หากคาสั่ง break อยู่ในลูปที่ซ ้อนกัน (ลูปภายในลูปอื่น) คาสั่ง break จะ ยุติลูปในสุด 2. ไวยากรณ์ชุดคาสั่ง break break
  • 44. 44 3. ผังงานชุดคาสั่ง break 6. ชุดคาสั่ง break และ continue นิพจน์ทดสอบ break คาสั่งที่เหลืออยู่ จริง ใช่ ไม่ใช่ ออกจากลูป
  • 45. 45 การทางานของชุดคาสั่ง break ใน for loop และ while loop 6. ชุดคาสั่ง break และ continue for var in sequence : # ชุดคำสั่งใน for loop If condition : break #ชุดคำสั่งใน for loop # ชุดคำสั่งนอก for loop while test expression : # ชุดคำสั่งใน while loop If condition : break #ชุดคำสั่งใน while loop # ชุดคำสั่งนอก while loop
  • 46. 46 6. ชุดคาสั่ง break และ continue 4. ตัวอย่างการใช้ชุดคาสั่ง break ในงานแสดงตัวอักษรจากชุดตัวอักษรออกทางจอภาพทุกตัวยกเว้นอักษร i จาก ข้อความ “chaisiri” 1 2 3 4 5 6 # กำรใช ้คำสั่ง break ใน for loop for var in "chaisiri": if var == "i": break print(var) print("The end") c h a The end ผลลัพธ์
  • 47. 47 5. ชุดคาสั่ง continue ใช ้สาหรับข้ามผ่านชุดคาสั่งที่เหลือภายในลูปสาหรับการวนซ้าปัจจุบันเท่านั้น โดยการวนซ้านั้นยังไม่จบลูปแต่ให้ดาเนินการวนซ้ารอบต่อไปได้ 6. ชุดคาสั่ง break และ continue 6. ไวยากรณ์ชุดคาสั่ง continue continue 7. ผังงานชุดคาสั่ง continue นิพจน์ ทดสอบ Continu e ? คาสั่งที่เหลืออยู่ เท็จ จริง ใ ช่ ไม่ ใช่ ออกจาก ลูป
  • 48. 48 การทางานของชุดคาสั่ง continue ใน for loop และ while loop 6. ชุดคาสั่ง break และ continue for var in sequence : # ชุดคำสั่งใน for loop If condition : continue #ชุดคำสั่งใน for loop # ชุดคำสั่งนอก for loop while test expression : # ชุดคำสั่งใน while loop If condition : continue #ชุดคำสั่งใน while loop # ชุดคำสั่งนอก while loop
  • 49. 49 8. ตัวอย่างการใช้ชุดคาสั่ง continue ในงานแสดงตัวอักษรจากชุดตัวอักษรออกทางจอภาพทุกตัว ยกเว้นอักษร i จากข้อความ “chaisiri” 6. ชุดคาสั่ง break และ continue 1 2 3 4 5 6 # กำรใช ้คำสั่ง break ใน for loop for var in "chaisiri": if var == "i": continue print(var) print("The end") c h a s r The end ผลลัพธ์
  • 50. 50 7. ชุดคาสั่ง pass • ชุดคาสั่ง pass ใช ้สาหรับยึดครองตาแหน่งการสร ้างฟังก์ชัน ลูป ที่ต้องใช ้ในอนาคต • โดย pass คือชุดคาสั่งที่มีค่าว่างเปล่าคล้าย comment แต่แตกต่างกันที่ comment ถูก มองข้ามจากคอมไพเลอร ์แต่ pass ไม่ใช่ • ไม่มีอะไรเกิดขึ้นเมื่อดาเนินการกับ pass เหมาะกับเหตุการณ์ที่สร ้างฟังก์ชันหรือลูปขึ้นมาแล้ว ยังไม่มีบอดี้แต่ต้องทาการประมวลผล 1. ไวยากรณ์ชุดคาสั่ง pass pass
  • 51. 51 7. ชุดคาสั่ง pass เปรียบเทียบการทางานระหว่างใช ้คาสั่ง pass และไม่ใช ้ของฟังก์ชัน 1 2 3 4 5 '''pass เป็นเพียงตัวยึดครองตำแหน่งของ ฟังก์ชัน ที่จะเกิดขึ้นในอนำคตเท่ำนั้น.''' sequence = {'p', 'a', 's', 's'} for val in sequence: pass ผลลัพธ์ 1 2 3 4 5 '''pass เป็นเพียงตัวยึดครองตำแหน่งของ ฟังก์ชัน ที่จะเกิดขึ้นในอนำคตเท่ำนั้น.''' sequence = {'p', 'a', 's', 's'} for val in sequence: IndentationError: expected an indented block after 'for' statement on line 5 ผลลัพธ์
  • 52. 52 บทสรุป การเขียนโปรแกรมควบคุมทิศทางการไหลแบบวนซ้านั้น มีทิศทางการไหลของงานในลักษณะวนกลับไปเริ่มต้น งานเดิมใหม่ตราบใดที่นิพจน์ทดสอบเป็ นจริง โดยจะหลุดออกจากวงจรงานเดิมเมื่อนิพจน์ทดสอบเป็ นเท็จ เช่น การป้ อน รหัสบัตร เอ ที เอ็ม (ATM) ถ้าป้ อนรหัสผิดระบบจะวนกลับมาให้ป้ อนรหัสใหม่จนกว่ารหัสถูกต้อง เป็ นต้น ในไพทอนได้ จัดเตรียมชุดคาสั่งสาหรับจัดการวนซ้าไว้ 2 รูปแบบ คือ 1) ชุดคาสั่ง for loop เหมาะกับงานที่มีจานวนรอบดาเนินการ ที่แน่นนอน ดังนั้นจึงนิยมใช ้กับชุดข้อมูลที่ถูกจัดเก็บไว้ใน ลิสต์ทูเปิล หรือสตริง เป็ นต้น 2) ชุดคาสั่ง while loop เหมาะ กับงานที่ไม่ทราบจานวนวนซ้าที่แน่นอน ก่อนดาเนินงานต้องทาการตรวจสอบนิพจน์ทดสอบก่อนค่อยดาเนินงาน และใน บางกรณีเมื่อทาการวนซ้าทางานจบแล้วแต่อยากให้หลังการวนซ้าทางานบางอย่างต่อเนื่องทันทีสามารถใช ้ชุดคาสั่ง else ร่วมกับ for loop และ while loop ได้ กรณีที่มีการวนซ้าอยู่นั้นสามารถหยุดการทางานของการวนซ้าด้วยชุดคาสั่ง break และในทางกลับกันถ้าต้องการให้โปรแกรมทางานต่อเนื่องต้องใช ้ชุดคาสั่ง continue