SlideShare a Scribd company logo
1 of 55
บทที่ 6 เงื่อนไข การตัดสินใจ การควบคุมทิศทาง และการทาซ้า
(Conditions, Decisions, Control flows and Loop)
สมาชิกกลุ่ม
• 1. นางสาวสมหญิง งามเลิศศุภร เลขที่ 12
• 2. นางสาวนัชชา ห้วยหงส์ทอง เลขที่ 15
• 3. นางสาวคันธรส ใคร่ในธรรม เลขที่ 21
• 4. นางสาวรวิสรา คชายุทธ เลขที่ 23
• 5. นางสาวธิดาพร แก้วตา เลขที่ 30
• 6. นางสาวณัฐริกานต์ ธรรมโชติ เลขที่ 33
• 7. นางสาวนุชนาฏ สุดประเสริฐ เลขที่ 34
• 8. นางสาวกานติรัตน์ มนูเดชาวัชร เลขที่ 35
• 9. นางสาวศุภสุตา อินทรภักดี เลขที่ 36
Python
เมื่อกล่าวถึงปัญหาไม่ว่าจะเป็นปัญหาเกี่ยวกับมนุษย์หรือคอมพิวเตอร์ก็ตามสิ่งที่หลีกเลี่ยง
ไม่ได้ก็คือ จะต้องพบเจอกับเงื่อนไข(Conditions) และต้องทาการตัดสินใจ(Decisions) อยู่เสมอๆ
ยกตัวอย่างเช่น เมื่อต้องการเดินทางไปที่แห่งหนึ่งระหว่างการเดินทางพบทางแยกซ้าย(สมมติให้เป็น
ตัวแปร A) และขวา (ตัวแปร B) ผู้อ่านจะเลือกไปทางไหนดี? คาตอบนั้นจะขึ้นอยู่กับว่าเงื่อนไขทางใด
ดีกว่ากัน สมมติตั้งเงื่อนไขไว้ว่าพิจารณาจากระยะทางดังนั้นเงื่อนไขที่ใช้ตัดสินใจคือ
เมื่อ เส้นทางซ้าย (A) น้อยว่า เส้นทางขวา (B) แล้ว เลือกไปทางซ้าย
ถ้าไม่เช่นนั้น เลือกไปทางขวา
เมื่อทาการแปลงคาพูดที่กล่าวมานี้เป็นPseudo code ได้ดังนี้
IF A < B THEN
Go to left way
ELSE
Go to right way
• สาหรับการควบคุมทิศทาง (Control flows) คือ คาสั่งหรือกฎเกณฑ์ที่ใช้สาหรับควบคุมทิศทางการทางานเพื่อให้บรรลุเป้าหมาย(ในตัวอย่างคือ
สั่งให้ไปทางซ้ายหรือขวา) แต่การจะบรรลุเป้าหมายให้ได้นั้น อาจจะทาไม่สาเร็จในครั้งเดียวจาเป็นต้องทาซ้าหลายๆ ครั้ง (Loop)
• สังเกตเห็นว่าเงื่อนไข การตัดสินใจ การควบคุมทิศทางและการทาซ้าเป็นสิ่งที่อยู่ใกล้ตัวเราและพบเจอในชีวิตประจาวันเสมอๆไม่ว่าจะอยู่ที่ใดก็ตาม การ
เขียนโปรแกรมก็เช่นเดียวกัน พยายามที่จะจาลองปัญหาต่างๆในชีวิตประจาวันมาประมวลผลกับคอมพิวเตอร์เพราะคอมพิวเตอร์สามารถทางานที่มี
ความซับซ้อนได้เร็วกว่ามนุษย์มาก
• ในภาษาไพธอนแบ่งลักษณะการควบคุมการทางานของโปรแกรมออกเป็น 2 ประเภทหลักๆ คือการควบคุมทิศทางแบบเลือกทาและควบคุมทิศทางแบบ
วนรอบหรือทาซ้า
Python
1. การควบคุมทิศทางแบบเลือกทา
(Decisions, Choice, Selection)
การควบคุมทิศทางแบบเลือกทาคือ การเขียนโปรแกรมให้มีการตัดสินใจ สามารถเลือกได้ว่าจะทาหรือไม่ทาตามคาสั่ง ขึ้นอยู่กับเงื่อนไขที่
กาหนดขึ้นมา โดยคาสั่งสาหรับการควบคุมทิศทางแบบเลือกทาในภาษาไพธอนมีเพียงคาสั่งเดียวคือ if โดยแบ่งออกเป็น 3 ชนิดคือ if, if...else และ
nested ifดังต่อไปนี้
• Note: ภาษาไพธอนไม่สนันสนุนการควบคุมทิศทางแบบ switch…case
การควบคุมทิศทางแบบ if
ค าสั่ง if ใช้ในกรณีที่มีทางเลือกให้ทางานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้ว
เป็นจริงจึงจะทางานตามคาสั่ง รูปแบบการเรียกใช้คาสั่ง if แสดงได้ดังนี้
• condition คือ เงื่อนไขที่กาหนดขึ้น เพื่อใช้ตัดสินว่าจะทาหรือไม่ทาตามคาสั่ง โดยเงื่อนไขจะเขียนไว้ภายในเครื่องหมาย ( ) หรือไม่ก็ได้ซึ่งเงื่อนไข
อาจจะอยู่ในรูปของนิพจน์ การคานวณเปรียบเทียบ หรือเป็นค่าของตัวแปรก็ได้และตามด้วยเครื่องหมาย
• statement(s) คือ คาสั่งหรือชุดของคาสั่งที่จะให้ทางาน เมื่อผลการตรวจสอบเงื่อนไขเป็นจริง ในภาษาไพธอนไม่จาเป็นต้องเขียนคาสั่ง
(statement) ไว้ภายใน { } เหมือนภาษาซีหรือจาวา แต่ไพธอนใช้การย่อหน้าเพื่อแสดงขอบเขตของคาสั่งหรือชุดคาสั่งแทน เช่น
if condition:
statement(s)
การควบคุมทิศทางแบบ if
• คาสั่งแบบมีเงื่อนไข if เป็นคาสั่งแบบเลือกทาโดยการเปรียบเทียบเงื่อนไขนิพจน์ทาง ตรรกศาสตร์ ผลลัพธ์ที่ได้จะมีค่าจริงกับเท็จเท่านั้น ถ้าเงื่อนไขเป็น
จริงแล้วโปรแกรมจะเลือกทาคาสั่ง ที่อยู่หลังเครื่องหมาย : ทันที แต่ถ้าเป็นเท็จจะไม่มีการประมวลผลใดๆ เกิดขึ้น เมื่อเปรียบเทียบกับ แผนผังจาลองกา
รท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม
if condition: statement 1
statement 2 … statement n
Caution! หลังคาสั่ง if, else, for, while และ function อย่าลืมเครื่องหมาย : เป็นอันขาด
การควบคุมทิศทางแบบ if
Note: ในภาษาไพธอนถือว่า ค่าที่ไม่ใช่ศูนย์ (0) และค่าที่ไม่ใช่ null เป็นค่าจริง และถ้าข้อมูล เป็นศูนย์ หรือ null จะอนุมานว่าเป็นเท็จทันที
ตัวอย่างโปรแกรม
• Program Example 6.1: if
# If command testing
2 var1 = 100;
3 if var1: #This condition is True
4 print ("1 - Got a true expression value")
5 print (var1)
6 var2 = 0;
7 if var2: #This condition is False
8 print ("2 - Got a true expression value")
9 print (var2)
10 print("Good bye!")
ตัวอย่างโปรแกรม
• จากตัวอย่างโปรแกรมเริ่มต้นบรรทัดที่ 2 เป็นกาหนดค่าเริ่มต้นให้กับตัวแปร var1 = 100บรรทัดที่ 3 ทาการตรวจสอบด้วยคาสั่ง if ว่า var1 เป็น
จริงหรือไม่ (ไพธอนตีความหมายว่า null และ 0เท่านั้นที่เป็นเท็จ) ผลจากการเปรียบเทียบปรากฎว่าเป็นจริง ดังนั้นโปรแกรมจึงเลื่อนไปทาคาสั่งหลัง
ifในบรรทัดที่ 4 และ 5 โดยพิมพ์ข้อความ "1 - Got a true expression value" และ 100 (ค่าที่เก็บอยู่ในตัวแปร var1) ต่อจากนั้น
โปรแกรมจึงเลื่อนมาท างานต่อไปในบรรทัดที่ 6 โดยกาหนดตัวแปร var2 มีค่าเท่ากับ 0 ในบรรทัดที่ 7 ท าการตรวจสอบเงื่อนไขว่า var2 เป็นจริง
หรือไม่ ผลที่ได้คือ เป็นเท็จ จึงทาให้โปรแกรมไม่เข้าไปประมวลผลคาสั่งหลัง if (ชุดของคาสั่งหลัง if มีสองคาสั่งคือ print โดยสังเกตจากการย่อ
หน้าว่าทั้งสองคาสั่งย่อหน้าตรงกัน) แต่จะข้ามไปทางานบรรทัดที่ 10 โดยสั่งพิมพ์ข้อความว่า "Goodbye!" แทน พร้อมกับจบการทางานของ
โปรแกรม
การควบคุมทิศทางแบบ if…else
คาสั่ง if-else จะใช้ในกรณีที่มีทางเลือกให้ทางาน2 ทางเลือกขึ้นไป โดยการทางานของคาสั่ง ifelse
จะเริ่มจากการตรวจสอบเงื่อนไข ถ้าผลออกมาเป็นจริงจะทางานตามคาสั่งที่อยู่หลังif แต่ถ้าผล
ของการตรวจสอบเงื่อนไขเป็นเท็จให้ทางานตามคาสั่งที่อยู่หลังelse แทน รูปแบบคาสั่ง if-else แสดง
ได้ดังนี้
if condition: statement(s)
else: statement(s)
การควบคุม if elif
ตัวอย่างโปรแกรมการควบคุม if…else
• 1 var1 = 100
2 if var1: #This condition is True
3 print ("1 - Got a true expression value")
4 print (var1)
5 else:
6 print ("1 - Got a false expression value")
7 print (var1)
8 var2 = 0
9 if var2: #This condition is False
10 print ("2 - Got a true expression value")
11 print (var2)
• 12 else:
13 print ("2 - Got a false expression value")
14 print (var2)
15 print ("Good bye!")
• จากตัวอย่างโปรแกรมที่ 6.3 บรรทัดที่ 1 กาหนดค่าให้ตัวแปร var1 เท่ากับ 100 เมื่อทดสอบเงื่อนไขด้วยคาสั่ง if ในบรรทัดที่ 2 ให้ผลลัพธ์เป็นจริง
เพราะ var1 ไม่เท่ากับ 0 หรือ null ดังนั้นโปรแกรมจะพิมพ์ข้อความว่า "1 - Got a true expression value" (บรรทัดที่ 3) และพิมพ์ค่า
ของ Var1 เท่ากับ 100(บรรทัดที่ 4) ออกทางจอภาพ จากนั้นโปรแกรมจะเลื่อนมาท าคาสั่งในบรรทัดที่ 8 คือกาหนดค่าตัวแปรvar2 เท่ากับ 0 และ
เลื่อนมาเปรียบเทียบในเงื่อนไขด้วยคาสั่ง if อีกครั้งในบรรทัดที่ 9 ผลปรากฎว่าเงื่อนไขเป็นเท็จ เพราะ var2 เป็นเท็จ (var2 = 0) ส่งผลให้
โปรแกรมข้ามไปทางานบรรทัดที่ 13 และ 14หลังคาสั่ง else โดยพิมพ์ข้อความ "2 - Got a false expression value" และ var2 เท่ากับ
0 ออกทางจอภาพ ในบรรทัดสุดท้ายของโปรแกรมจะสั่งพิมพ์ Good bye เสมอ เพราะคาสั่งดังกล่าวไม่ได้อยู่ภายในขอบเขตของคาสั่ง if…else
(สังเกตได้จากการย่อหน้าของโปรแกรม)
การควบคุมทิศทางแบบ if…elif
โครงสร้างการทางานแบบif…elif มีรูปแบบคาสั่งดังนี้
if condition 1:
statement(s)
elif condition 2:
statement(s)
…
elif condition n:
statement(s)
else:
statement(s)
การควบคุมทิศทางแบบ if…elif
คาสั่งรูปแบบ if..elif นี้ เป็นคาสั่งเปรียบเทียบเงื่อนไขซ้อนเงื่อนไข โดยเริ่มต้นเปรียบเทียบ
เงื่อนไขที่ 1 (condition 1) ถ้าเป็นเท็จ จะเลื่อนไปเปรียบเทียบกับเงื่อนไขที่ 2 (condition 2) ถ้าผลลัพธ์
การเปรียบเทียบกับเงื่อนไขที่ 2 เป็นเท็จ จึงเลื่อนไปเปรียบเทียบเงื่อนไขที่ 3 (condition 3) ต่อไปเรื่อยๆ
จนกว่าจะหมดคาสั่งการเปรียบเทียบ (condition n) แต่ถ้าผลการเปรียบเทียบเงื่อนไขใดๆ แล้วผลลัพธ์
เป็นจริง จะประมวลผลคาสั่งหรือกลุ่มของคาสั่งหลังเครื่องหมาย: ของเงื่อนไขนั้นๆ เมื่อเสร็จสิ้นการ
ประมวลผลคาสั่งแล้วถือว่าสิ้นสุดการเปรียบเทียบเงื่อนไขในกลุ่มนั้นและจบการทางานแผนผังจาลอง
การท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม
การควบคุมทิศทางแบบ if…elif
ตัวอย่างโปรแกรม
• 1 var = 100
2 if var == 200:
3 print ("1 - Got a true expression value")
4 print (var)
5 elif var == 150:
6 print ("2 - Got a true expression value")
7 print (var)
8 elif var == 100:
9 print ("3 - Got a true expression value")
10 print (var)
11 else:
12 print ("4 - Got a false expression value")
• 13 print (var)
14 print ("Good bye!")
การควบคุมทิศทางแบบ if…elif
จากตัวอย่างโปรแกรมบรรทัดที่ 1 กาหนดค่าให้ตัวแปร var เท่ากับ 100 ต่อจากนั้นโปรแกรมเลื่อนมาทางานบรรทัดที่ 2 เพื่อเปรียบเทียบเงื่อนไขว่า var
เท่ากับ 200 จริงหรือไม่ ผลลัพธ์ที่ได้เป็นเท็จจึงเลื่อนมาเปรียบเทียบในบรรทัดที่ 5 ผลที่ได้มีค่าเป็นเท็จ (ตัวแปร var มีค่าไม่เท่า 150) โปรแกรมจึงเลื่อนมา
เปรียบเทียบเงื่อนไขต่อในบรรทัดที่ 8 ซึ่ง var มีค่าเท่ากับ 100 เป็นจริง โปรแกรมจึงทาคาสั่ง
หลัง : ในบรรทัดที่ 9 และ 10 โดยการพิมพ์ข้อความว่า "3 - Got a true expression value" และ 100ออกทางจอภาพ ต่อจากนั้นโปรแกรมจะ
กระโดดข้ามไปพิมพ์ข้อความว่า "Good bye!" ในบรรทัดที่ 14แล้วจบการทางาน
การควบคุมทิศทางแบบ nested if
• โครงสร้างการทางานแบบnested if มีรูปแบบคาสั่งดังนี้
if condition (1):
if condition (1.1):
if condition (1.1.1):
statement(s)
elif (1.1.1) condition
(1.1.2): statement(s)
else (1.1.1): statement(s) else
(1.1): statement(s) else (1):
statement(s)
การควบคุมทิศทางแบบ nested if
การทางานของ nested if นั้นจะมีลักษณะเงื่อนไงซ้อนเงื่อนไขไปเรื่อยๆ ขึ้นอยู่กับความซับซ้อนของโจทย์ปัญหา จากโครงสร้างการท างานของ
nested if ข้างบน เริ่มต้นจากการเปรียบเทียบเงื่อนไขแรก condition (1): ถ้าเป็นเท็จจะทาคาสั่งหลัง else (1): แต่ถ้าเป็นจริง โปรแกรมจะทา
คาสั่งหลัง
เครื่องหมาย : โดยหลังเครื่องหมาย : มีเงื่อนไขที่ 2 condition (1.1) ที่ต้องตรวจสอบอีกครั้ง ถ้าผลจากการเปรียบเทียบแล้วปรากฏว่าเป็นเท็จ
โปรแกรมจะทาคาสั่งหลัง else (1.1): แต่ถ้าผลการเปรียบเทียบเป็นจริง จะเปรียบเทียบกับคาสั่ง if ในครั้งที่ 3 condition (1.1.1) แต่ถ้าผลการ
เปรียบเทียบในครั้งที่ 3 นี้ผลลัพธ์เป็นเท็จจะทา การเปรียบเทียบอีกเป็นครั้งที่ 4 กับเงื่อนไข condition (1.1.2): ถ้าผลการเปรียบเทียบในครั้งที่ 4 นี้
เป็นเท็จ จะประมวลคาสั่งหลัง else (1.1.1): แต่ถ้าเป็นจริงจะทาการประมวลผลคาสั่งหลังcondition (1.1.2): เป็นต้น สาหรับแผนผังจาลองกา
รท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม
ตัวอย่างโปรแกรม
• 1 var = 100
2 if var < 200:
3 print("Expression value is less than 200")
4 if var == 150:
5 print("Which is 150")
6 elif var == 100:
7 print("Which is 100")
8 elif var == 50:
9 print("Which is 50")
10 elif var < 50:
11 print("Expression value is less than 50")
12 else:
13 print ("Could not find true expression")
14 print("Good bye!")
การควบคุมทิศทางแบบ nested if
• จากโปรแกรมที่ 6.7 บรรทัดที่ 1 กาหนดค่าเริ่มต้นให้ตัวแปร var เท่ากับ 100 จากนั้นบรรทัดที่ 2 ท าการเปรียบเทียบเงื่อนไข (var < 200) ผล
ปรากฎว่า เป็นจริง ทาให้โปรแกรมพิมพ์ข้อความว่า"Expression value is less than 200" (บรรทัดที่ 3) ออกทางจอภาพลาดับถัดไปใน
บรรทัดที่ 4โปรแกรมทาการเปรียบเทียบเงื่อนไข if var == 150 ผลลัพธ์คือ เป็นเท็จ โปรแกรมจึงกระโดดข้ามบรรทัดที่ 5 ไปทาการเปรียบเทียบ
เงื่อนไข elif ต่อในบรรทัดที่ 6 ผลจากการเปรียบเทียบมีค่าเป็นจริง(var == 100) ดังนั้นในบรรทัดที่ 7 โปรแกรมจึงสั่งพิมพ์ข้อความ "Which is
100" หลังจากพิมพ์ข้อความเสร็จ โปรแกรมจะกระโดดไปทาคาสั่งบรรทัดที่ 14 เพื่อพิมพ์ข้อความ "Good bye!" แล้วจบการทางาน
การควบคมุ ทิศทางแบบวนรอบ หรือทาซ้า
(Loop, Iteration)
• การแก้ปัญหาต่างๆในชีวิตประจาวัน มักจะพบเจอกับปัญหาที่ต้องใช้ความพยายามในการแก้ปัญหาดังกล่าววนซ้าหลายๆครั้ง เพื่อที่จะบรรลุเป้าหมาย
เช่น ถ้าต้องการสอบให้ได้คะแนนดีจาเป็นต้องอ่านหนังสือในบทที่จะออกสอบหลายๆรอบ ยิ่งอ่านมากยิ่งมีโอกาสที่จะได้คะแนนสอบมากตามไปด้วย
หรือนักกีฬาที่ต้องการได้เหรียญทองในการแข่งขันจาเป็นต้องฝึกซ้าแบบเดิมให้เกิดความชานาญ ยิ่งชานาญมากก็ยิ่งมีโอกาสประสบความสาเร็จมากตาม
ไปด้วย เช่นเดียวกับการแก้ปัญหาทางคอมพิวเตอร์ บางปัญหานั้นจาเป็นต้องประมวลผลซ้าไปซ้ามาหลายๆรอบ จนกว่าจะได้คาตอบ เช่นการหาผลรวม
ของจานวนเต็มตั้งแต่ 1 – n, การหาค่า factorial, การหาค่า prime number และการคานวณเลขลาดับอนุกรมเป็นต้น ปัญหาเหล่านี้
จาเป็นต้องอาศัยเทคนิคการทาซ้าทั้งสิ้น ภาษาไพธอนเตรียมคาสั่งในการทาซ้าไว้2 คาสั่งคือ while และ for loop โดยใน 2 คาสั่งนี้สามารถจา
แนกเป็นวิธีการทางานได้3 รูปแบบ while loop, for loop และ nested loop ซึ่งมีรายละเอียดดังต่อไปนี้
ค าสั่ง While loop
• While เป็นคาสั่งวนซ้าที่มีการตรวจสอบเงื่อนไข (condition) ก่อนเข้าทางานเสมอเมื่อเงื่อนไขที่ทาการตรวจสอบเป็นจริง จึงจะประมวลผล
คาสั่งหลัง while แต่ถ้าเงื่อนไขเป็นเท็จจะยุติการทางานทันทีสาหรับงานที่นิยมใช้while ในการแก้ปัญหาคือ ปัญหาที่ไม่ทราบจานวนรอบการท า
งานที่แน่นอนหรือ
ปัญหาที่ไม่สามารถทราบได้ร่วงหน้าว่าจะต้องใช้เวลาในการประมวลผลนานเท่าใด ส่วนใหญ่มักจะหยุดการทางานของ while ด้วยเงื่อนไขบางประการ
เช่น กดแป้นพิมพ์ที่บ่งบอกว่าต้องการออกจากโปรแกรมเช่นESC, q, -1, 0 เป็นต้น หรือตรวจสอบค่าในตัวแปรตัวใดตัวหนึ่งในโปรแกรมเป็นเท็จ เป็น
ต้นโครงสร้างการทางาน while loop มีรูปแบบคาสั่งดังนี้
whilecondition: statement(s)
ตัวอย่างผังงาน
ตัวอย่างโปรแกรม
• 1 # While loop testing
2 count = 0
3 while (count < 9):
4 print ('The count is:', count)
5 count = count + 1
6 print ("Good bye!")
ตัวอย่างโปรแกรม
• จากตัวอย่างโปรแกรม เริ่มต้นบรรทัดที่ 2 เป็นการกาหนดค่าให้ตัวแปร count มีค่าเท่ากับ 0เพื่อใช้สาหรับนับค่า ขั้นตอนต่อไปบรรทัดที่ 3 โปรแกรม
จะเปรียบเทียบเงื่อนไขใน while ว่า count มีค่าน้อยกว่า 9 หรือไม่ ถ้าเงื่อนไขเป็นเท็จ โปรแกรมจะข้ามไปทางานในบรรทัดที่ 6 โดยพิมพ์ข้อความ
ว่า"Good bye!" ออกจอภาพแต่ถ้าเงื่อนไขเป็นจริง (count < 9) โปรแกรมจะทางานหลัง while ในบรรทัดที่4 โดยพิมพ์ข้อความว่า 'The
count is:' พร้อมกับค่าในตัวแปร count ต่อจากนั้นในบรรทัดที่ 5 จะทาการเพิ่มค่าให้ตัวแปร count อีก 1 ต่อจากนั้นโปรแกรมจะวนกลับไป
ตรวจสอบเงื่อนไขของ while ในบรรทัดที่ 3 ใหม่ เป็นรอบที่ 2 และทาการประมวลผลคาสั่งตามลาดับในบรรทัดที่ 3 4 5 ไปเรื่อยๆจนกว่า
เงื่อนไขที่ while จะเป็นเท็จ (count >= 9) เมื่อเงื่อนไขใน while เป็นเท็จโปรแกรมจะมาท างานในบรรทัดที่ 6 โดยพิมพ์ข้อความว่า "Good
bye!" ก่อนจบโปรแกรมเสมอ
การวนซ้าแบบไม่รู้จบ (The Infinite Loop)
บ่อยครั้งที่พบปัญหาในการใช้งาน while คือ เงื่อนไขที่ตรวจสอบไม่เป็นเท็จ ซึ่งสาเหตุมาจากหลายกรณีแต่ส่วนใหญ่มาจากการหลงลืมทาให้ตัวแปรที่ใช้
ตรวจสอบเงื่อนไขเป็นเท็จ เช่น ในกรณีตัวอย่างโปรแกรมถ้านักเขียนโปรแกรมลืมเพิ่มค่าให้กับตัวแปร count จะทาให้โปรแกรมเข้าสู่สถานะที่เรียกว่า
Infinite loop คือโปรแกรมทางานไปเรื่อยๆ ไม่สามารถหยุดได้แต่ก็มีโปรแกรมบางประเภทที่ต้องการการทางานในลักษณะInfinite loop อยู่
เหมือนกัน เช่น โปรแกรมประเภท Client-Server ที่ฝั่งผู้ให้บริการ (Server) จะรอให้บริการตลอดเวลาไม่มีวันหยุดพักหรือปิดโปรแกรมเลย
สาหรับคาสั่งตัวอย่างที่ใช้ในกรณีที่ต้องการให้โปรแกรมทางานในลักษณะinfinite loop ดังโปรแกรม
ตัวอย่างโปรแกรม
• 1 # Infinite loop program
2 # When would you like to exit this program, push CTRL + C
3 var = 1
4 while var == 1 : # This constructs an infinite loop
5 num = int(input("Enter a number :"))
6 print("You entered: ", num)
7 print("Good bye!")
การวนซ้าแบบไม่ร้จูบ (The Infinite Loop)
• จากตัวอย่างโปรแกรม เริ่มต้นบรรทัดที่3 กาหนดค่าให้ตัวแปร var = 1 เพื่อใช้สาหรับเปรียบเทียบเงื่อนไขก่อนเข้าทางานใน while loop (การ
กาหนดเงื่อนไขเพื่อใช้เปรียบเทียบก่อนเข้าทางานใน while loop เป็นขั้นตอนที่สาคัญมากและต้องทาเสมอ)บรรทัดที่ 4 ทาการตรวจสอบเงื่อนไข
ก่อนเข้าทางานใน while ผลการตรวจสอบปรากฎว่า เป็นจริงเสมอ เพราะว่าค่าในตัวแปร var มีค่าเท่ากับ 1 โปรแกรมจึงเลื่อนไปท าค าสั่งใน
บรรทัดที่ 5 หลังคาสั่ง while คือคาสั่งอ่านข้อมูลจานวนเต็มมาจากแป้นพิมพ์เก็บไว้ในตัวแปร num จากนั้นบรรทัดที่ 6 จะพิมพ์ค่าที่อยู่ในตัวแปร
num ออกมาทางจอภาพแล้วโปรแกรมจะกลับไปทางานในบรรทัดที่ 4 อีกครั้ง ทั้งนี้เพราะเงื่อนไขใน while ยังเป็นจริงอยู่การทางานจะทาซ้าคาสั่ง
บรรทัดที่ 4 5 6 ไปเรื่อยๆ จนกว่าเงื่อนไขใน while จะเป็นเท็จ แต่สาหรับในกรณีนี้จะเป็นจริงตลอดไปแบบไม่มีวันจบ (Infinite loop)
และคาสั่งในบรรทัดที่ 7 จะไม่ถูกประมวลผลเลย ถ้าผู้เขียนโปรแกรมต้องการออกจากโปรแกรมนี้ให้กดปุ่ม CTRL + C เท่านั้น เพื่อเป็น การ
Terminate โปรแกรมและโปรแกรมจะแสดงข้อความผิดพลาดออกมาดังตัวอย่างข้างบน
การใช้คาสั่ง else ร่วมกับ while และ for
• ไพธอนจะอนุญาตให้ผู้เขียนโปรแกรมสามารถใช้ else ร่วมกับคาสั่ง while และ for ได้(ซึ่งแนวคิดดังกล่าวไม่มีในภาษาC/C++ หรือ Java)
โดยถ้าใช้คาสั่ง else กับ for แล้ว คาสั่ง else จะทางานเมื่อการประมวลผลคาสั่งในfor loop เสร็จเรียบร้อยหมดแล้ว และเมื่อใช้งาน else กับ
while โดย elseจะทางานก็ต่อเมื่อเงื่อนไขใน while loop เป็นเท็จ ตัวอย่างการใช้else ร่วมกับ while ดังโปรแกรม
ตัวอย่างโปรแกรม
• 1 # Testing else statement with while loop
2 count = 0
3 while count < 5:
4 print(count, " is less than 5 (While Loop)")
5 count = count + 1
6 else:
7 print(count," is not less than 5(Else after exit while
• loop)")
8 print("Good bye!")
ตัวอย่างโปรแกรม
• จากตัวอย่างโปรแกรม บรรทัดที่ 2 กาหนดค่าเริ่มต้นให้ตัวแปร count เท่ากับ 0 เพื่อใช้ สาหรับทาการเปรียบเทียบก่อนเข้าทางานใน while loop
ผลลัพธ์จากการเปรียบเทียบ (บรรทัดที่ 3) มี ค่าเป็นจริง เพราะ count < 5 โปรแกรมจะเข้าไปประมวลผลในบรรทัดที่ 4 โดยพิมพ์ข้อความว่า "X is
less than 5 (While Loop)" โดย X คือค่าที่อยู่ในตัวแปร count ในบรรทัดที่ 5 โปรแกรมทาการเพิ่มค่า conunt อีก 1 จากนั้นโปรแกรม
จะวนกลับมาตรวจสอบเงื่อนไขใน while อีก (เพราะเงื่อนไขยังไม่เป็น เท็จ) ซึ่งโปรแกรมจะทาคาสั่งซ้าในบรรทัดที่ 3 4 5 เช่นนี้ไปเรื่อยๆ จนกว่า
count >= 5 จึงทาให้ โปรแกรมยุติการท างานใน while loop ลง และมาประมวลผลคาสั่งในบรรทัดที่ 6 โดยพิมพ์ข้อความว่า "5 is not
less than 5 (Else after exit while loop)" และตามด้วยข้อความ "Good bye!" ในบรรทัดที่ 8 ดังแสดงใน OUTPUT ของ
โปรแกรมด้านบน
ตัวอย่างโปรแกรม
• สาหรับในกรณีที่ต้องการประมวลผลคาสั่งที่มีเพียงแค่คาสั่งเดียวเท่านั้น ต่อจากคาสั่ง while (จะมี
• ลักษณะการทางานคล้ายกับif ที่ปราศจาก else) คือ ให้วาง 1 คาสั่งที่ต้องการประมวลผลอยู่ในู
• บรรทัดเดียวกันกับ while ดังตัวอย่างต่อไปนี้
• flag = True
• while flag != False: flag = False # Single statement only
• print("Good bye!")
• เมื่อรันโปรแกรมผลลัพธ์ที่ได้คือ
• Good bye!
ตัวอย่างโปรแกรม
• 1 # Testing else statement with while loop
2 count = 0
3 while count < 5:
4 print(count, " is less than 5 (While Loop)")
5 count = count + 1
6 else:
7 print(count," is not less than 5(Else after exit while
• loop)")
8 print("Good bye!")
คาสั่งควบคุมการทาซ้า
(Loop control statements)
• คาสั่งควบคุมการทาซ้าถูกสร้างขึ้นเพื่อต้องการเปลี่ยนทิศทางของการประมวลผลแบบวนซ้าซึ่งตามปกติแล้วการประมวลผลจะเป็นแบบลาดับจากซ้าย
ไปขวาและจากด้านบนลงล่าง(Sequence) แต่สถานการณ์บางอย่างการทางานแบบลาดับอาจจะไม่เหมาะสมเช่น โปรแกรมต้องการค้นหาข้อความ
ในสตริงที่มีความยาวมากๆ เมื่อค้นหาไปเรื่อยๆ ปรากฎว่าโปรแกรมพบข้อความที่ต้องการดังกล่าวอยู่ระหว่างกลางของข้อความ ผู้เขียนโปรแกรมควรจะ
หยุดการทางานวนซ้าเนื่องจากจะทาให้ประหยัดเวลาในการคานวณ จากตัวอย่างที่กล่าวมาแล้วเมื่อผู้เขียนโปรแกรมบังคับให้โปรแกรมหลุดออกจาก
คาสั่งวนซ้า จะส่งผลให้ตัวแปรหรืออ๊อปเจ็กต์ต่างๆที่ใช้งานอยู่ภายในขอบเขตของการวนซ้านั้น หมดอายุการทางาน คือจะถูกลบออกจากหน่วยความไป
โดยอัตโนมัติไพธอนสนับสนุนคาสั่งควบคุมการทาซ้า 3คาสั่งคือ break, continue และ pass
ตัวอย่างโปรแกรม
• คาสั่ง break เป็นคาสั่งที่สั่งให้โปรแกรมยุติการทาซ้า (Loop) ซึ่งส่งผลให้คาสั่งที่เหลือทั้งหมดหลังคาสั่งbreak และอยู่ภายในขอบเขตของคาสั่ง
ทาซ้า ไม่ถูกประมวลผลไปด้วย เมื่อออกจากขอบเขตของคาสั่งการทาซ้าปัจจุบันแล้วโปรแกรมจะประมวลคาสั่งอื่นๆต่อไป (ไม่ใช่การจบการทางาน
ของโปรแกรม จะยุติการทางานเฉพาะคาสั่งในLoop ปัจจุบันเท่านั้น) สาหรับการทางานของคาสั่ง break ในnested loop เมื่อโปรแกรมยุติกา
รท างานใน Loop ปัจจุบันแล้ว โปรแกรมจะทางานต่อใน Loop ที่ครอบLoop ปัจจุบันอยู่ต่อไป คาสั่ง break จะใช้ทางานกับwhile และ
for loop เท่านั้น ไม่สามารถใช้ได้กับ if,if..else, if..elif ได้เหมือนในภาษาซีสาหรับแผนผังจาลองการทางานของbreak จะมีลักษณะดังภาพ
ตัวอย่างผังงาน
ตัวอย่างโปรแกรม
• 1 # Break for while and for loop
2 for letter in 'Python': #First example for for loop
3 if letter == 'h':
4 break #Break force exit for loop
5 print('Current Letter :', letter)
7 var = 10 #Second example while loop
8 while var > 0:
9 print('Current variable value :', var)
10 var = var – 1
11 if var == 5:
12 break #Break force exit while loop
13 print("Good bye!")
คาสั่ง continue
• เป็นคาสั่งที่สั่งให้โปรแกรมกลับไปเริ่มต้นใหม่ที่ต้น loop ซึ่งส่งผลให้คาสั่งที่ เหลือทั้งหมดหลังคาสั่ง continue และอยู่ภายในขอบเขตของคาสั่ง
ทาซ้า จะไม่ถูกประมวลผลในรอบ นั้นๆ ไปด้วย (แต่ไม่ได้ออกจากคาสั่งการทาซ้า) คาสั่ง continue จะใช้ได้ทั้ง while และ for loop สาหรับ
แผนผังจาลองการทางานของ continue จะมีลักษณะดังภาพ
ตัวอย่างโปรแกรม
• 1 # Continue for while and for loop
2 for letter in 'Python': # First example for for loop
3 if letter == 'h':
4 continue
5 print('Current Letter :', letter)
6 var = 10 # Second example for while loop
7 while var > 0:
8 var = var -1
9 if var == 5:
10 continue
11 print('Current variable value :', var)
12 print("Good bye!")
คาสั่ง pass
• (ไม่มีการประมวลผลใดๆ เกิดขึ้น) เป็นคาสั่งที่มีไว้เพื่อรักษาโครงสร้างหรือความหมายของโปรแกรมไว้เช่น กรณีที่ผู้เขียนโปรแกรมกาลังเขียนโปรแกรม
อยู่แต่ปรากฎว่าในบางจุดของโปรแกรม ผู้เขียนยังไม่แน่ใจว่าจะดาเนินการต่ออย่างไรและต้องการยกเว้นโปรแกรมตรงส่วนนี้ไว้ ก่อน (ใส่
comment ก็พอใช้ได้เหมือนกัน) แล้วจึงค่อยมาแก้ไขในภายหลัง ผู้เขียนโปรแกรมสามารถ บรรจุคาสั่ง pass นี้ไว้เพื่อให้โปรแกรมสามารถทดสอบ
รันโปรแกรมได้และประมวลผลโปรแกรมในส่วนที่ ละเว้นไว้ด้วย ซึ่งคาสั่ง pass จะไม่มีการประมวลผลใดๆ เกิดขึ้น (คล้ายคาสั่ง No operation
ในภาษา แอสแซมบลี) และเมื่อไม่ต้องการใช้งานคาสั่งดังกล่าวแล้ว ไม่จาเป็นต้องลบทิ้งก็ได้ (แต่ควรลบจะดีกว่า) สาหรับตัวอย่างการใช้งานคาสั่ง
pass แสดงในตัวอย่างโปรแกรม
Tips: เมื่อป้อนคาสั่ง pass และกด Enter โปรแกรมจะออกจากขอบเขตของคาสั่งที่กาลังเขียนโปรแกรม
ทันที เช่น เมื่อกาลังเขียนคาสั่งอยู่ใน while loop เมื่อป้อนคาสั่ง passเคอร์เซอร์จะมาปรากฎในตาแหน่ง
เดียวกับคาสั่ง while ทันที
ตัวอย่างโปรแกรม
• 1 # Testing pass command
2 for letter in 'Python':
3 if letter == 'h':
4 pass
5 print('This is pass block')
6 print('Current Letter :', letter)
7 print("Good bye!")
Note: คาสั่ง switch, do-while, forecach ไม่มีให้ใช้งานในภาษาไพธอน
คาสั่ง for loop
• คาสั่ง for เป็นคาสั่งที่ใช้ส าหรับการทาซ้าเช่นเดียวกับ while และต้องมีการตรวจสอบเงื่อนไขก่อนเข้าลูปเหมือนกันแต่แตกต่างกันตรงที่ for จะ
ตรวจสอบรายการแบบลาดับแทน (Item ofsequence) เช่น ข้อมูลชนิดสตริง ลิสต์หรือทัพเพิล เป็นต้น โครงสร้างการทางาน for loop มี
รูปแบบคาสั่งดังนี้
• โดย interating_var คือตัวแปรที่ใช้สาหรับรับค่าทีละค่าเพื่อนามาประมวลผลจากข้อมูลที่อยู่ในตัวแปร sequence เมื่อข้อมูลในตัวแปร
sequence เป็นชนิดลิสต์คาสั่ง for จะดึงข้อมูลในตาแหน่งแรกของลิสต์ออกมาเก็บไว้ใน iterating_var หลังจากนั้นจะเริ่มทาคาสั่งใน
statement(s) เมื่อคาสั่งในstatement(s) หมดแล้ว การควบคุมจะกลับไปเริ่มต้นใหม่ที่ for แล้วดึงข้อมูลในลิสต์ลาดับถัดไปมาทางานการ
ทางานจะเป็นไปในลักษณะเช่นนี้ไปเรื่อยๆจนกว่าข้อมูลในลิสต์จะหมด for จึงจะยุติการทางานสาหรับแผนผังจาลองการทางานของfor และตัวอย่าง
การดึงข้อมูลสมาชิกในรายการ
for iterating_var insequence:
statements(s)
ตัวอย่างโปรแกรม
• 1 # Testing for loop
2 for letter in 'Python': # First Example
3 print('Current Letter :', letter)
4 fruits = ['banana', 'apple', 'mango']
5 for fruit in fruits: # Second Example
6 print('Current fruit :', fruit)
7 print("Good bye!")
การอ้างถึงข้อมูลสมาชิกโดยการชี้ตาแหน่งของ for loop
• คาสั่ง range เป็นคาสั่งที่ช่วยสร้างช่วงของข้อมูลเช่น เมื่อใช้คาสั่ง range(5) ช่วงข้อมูลที่ได้คือ 0, 1, 2,3, 4 ดังนั้นเราสามารถนา range มา
ประยุกต์ใช้กับ for ได้โดยข้อมูลที่สร้างโดย range จะถูกนาไปใช้เป็นตัวชี้ตาแหน่งของรายการข้อมูลได้ดังตัวอย่างโปรแกรม
ตัวอย่างโปรแกรม
• 1 # for loop and index
2 fruits = ['banana', 'apple', 'mango']
3 for index in range(len(fruits)):
4 print('Current fruit :', fruits[index])
5 print("Good bye!")
ฟังก์ชัน range
• จากที่กล่าวไปแล้วว่า for นั้นนิยมใช้งานกับคาสั่ง range เสมอ ดังนั้นในย่อหน้านีจะกล่าวถึงคาสั่งrange
เพิ่มเติมอีกเล็กน้อยเพื่อให้การใช้คาสั่ง range ร่วมกับ for ได้ดีขึ้น โดยปกตคาสั่ง range จะมีรูปแบบ
คาสั่ง 4 แบบดังนี้ range (x), range (x, y), range (x, y, i), range (y, x, -
i)range (x) แบบที่ จะสร้างชุดของข้อมูลเริ่มต้นจาก0 ถึง (x -1) โดยเพิ่มขึ้นครั้งละ 1 เช่นเมื่อเรียกใช้
ฟังชัน range(6) ข้อมูลที่ถูกสร้างขึ้นคือ [0, 1, 2, 3, 4, 5]range (x, y) แบบที่ จะสร้างชุดของข้อมูล
เริ่มต้นจาก x ถึง (y -1) โดยเพิ่มขึ้นครั้งละ 1 เช่นเมื่อเรียกใช้ฟังชัน range(3, 10) ข้อมูลที่ถูกสร้างขึ้นคือ
[3, 4, 5, 6, 7, 8, 9]range (x, y, i) แบบที่ จะสร้างชุดของข้อมูลเริ่มต้นจากx ถึง (y -1) โดยเพิ่มขึ้นครั้ง
ละ iเช่น เมื่อเรียกใช้ฟังชันrange(3, 15, 2) ข้อมูลที่ถูกสร้างขึ้นคือ [3, 5, 7, 9, 11, 13] มีข้อสังเกตสาหรับ
ค่า y ตัวสุดท้าย คือ 15 จะไม่ถูกนามาใส่ไว้ในรายการด้วย เนื่องจากติดเงื่อนไขที่ค่า y = y – 1 ดังนั้นค่าy ที่
ได้คือ 14 โปรแกรมจึงตัดทั้ง 14 และ 15 ทิ้งไปด้วย เพราะไม่อยู่ในเงื่อนไขทั้งคู่
การใช้else statement กับ for loop
• ไพธอนอนุญาตให้ใช้else กับ for loop ได้ซึ่งแตกต่างจากภาษาอื่นๆโดยทั่วไป เช่นภาษาซีหรือจาวา เป้าหมายสาคัญของ
การใช้else กับ for นั้นเพื่ออานวยความสะดวกให้กับผู้เขียนโปรแกรมในกรณีที่เงื่อนไขใน for เป็นเท็จ โดยปกติจะออกจาก
คาสั่ง for ไปโดยอัตโนมัติ บางครั้งผู้เขียนโปรแกรมไม่ทราบเลยว่าเกิดข้อผิดพลาดอะไรขึ้นในลูป for ดังนั้นคาสั่ง else จึงช่วย
ให้ผู้เขียนโปรแกรมสามารถตรวจสอบความผิดปกติใน for ได้อีกทางหนึ่งหรือผู้เขียนโปรแกรมต้องการทางานบางอย่างหลังจาก
จบการท างานใน for เรียบร้อยแล้ว สาหรับการใช้else กับ for และ while นั้นมีข้อพิจารณาดังนี้1) คาสั่ง else เมื่อถูกใช้
กับ for loop: คาสั่ง else จะถูกประมวลผลเมื่อ คาสั่งใน for ถูกประมวลผลครบหมดแล้ว2) คาสั่ง else เมื่อถูกใช้กับ
while loop: คาสั่ง else จะถูกประมวลผลเมื่อ เงื่อนไขใน whileเป็นเท็จพิจารณาตัวอย่างการใช้else กับ for ดัง
โปรแกรมที่ 6.21 โดยโปรแกรมดังกล่าวจะหาค่าจานวนเฉพาะ (prime number) คือเลขจานวนที่ไม่มีเลขอะไรมาหารมันได้
ลงตัว นอกจากตัวของมันเอและ1 เช่น 2, 3, 5, 7, 11, 13 และ 17 เป็นต้น
ลูปซ้อน (Nested loops)
• ไพธอนอนุญาตให้ผู้เขียนโปรแกรมสามารถใช้ลูปซ้อนได้ (การวาง for loop ไว้ภายใน for loop)มีรูปแบบคาสั่งดังนี้
• ลูปซ้อนของ for
• ลูปซ้อนของ while
for iterating_var insequence:
for iterating_var insequence:
statements(s)
statements(s)
whileexpression:
whileexpression:
statement(s)
statement(s)
ลูปซ้อน (Nested loops)
• ลูปซ้อนของ for กับ while
for iterating_var insequence:
whileexpression:
statement(s)
statement(s)
Thank you

More Related Content

What's hot

Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆJaemjan Sriarunrasmee
 
แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3kruvisart
 
เงื่อนไข การตัดสินใจ
เงื่อนไข การตัดสินใจเงื่อนไข การตัดสินใจ
เงื่อนไข การตัดสินใจOraphan4
 
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์Mrpopovic Popovic
 
Java Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาดJava Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาดThanachart Numnonda
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกThanon Paktanadechanon
 
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิกJava Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิกThanachart Numnonda
 
คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุมumaraporn
 

What's hot (18)

Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆ
 
Unit7
Unit7Unit7
Unit7
 
แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3แบบทดสอบหน่วยที่ 3
แบบทดสอบหน่วยที่ 3
 
Unit8
Unit8Unit8
Unit8
 
เงื่อนไข การตัดสินใจ
เงื่อนไข การตัดสินใจเงื่อนไข การตัดสินใจ
เงื่อนไข การตัดสินใจ
 
Know009
Know009Know009
Know009
 
งานทำ Blog บทที่ 6
งานทำ Blog บทที่ 6งานทำ Blog บทที่ 6
งานทำ Blog บทที่ 6
 
Lesson3
Lesson3Lesson3
Lesson3
 
Know010
Know010Know010
Know010
 
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
เทอม 2 คาบ 10 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
 
chapter 3 คำสั่งควบคุม
chapter 3 คำสั่งควบคุมchapter 3 คำสั่งควบคุม
chapter 3 คำสั่งควบคุม
 
Java Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาดJava Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาด
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิกJava Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิก
 
Presentation2
Presentation2Presentation2
Presentation2
 
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
บทที่ 3 คำสั่งควบคุม ส่วนที่ 1
 
คำสั่งควบคุม
คำสั่งควบคุมคำสั่งควบคุม
คำสั่งควบคุม
 
01 intro php
01 intro php01 intro php
01 intro php
 

Similar to บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)

บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมบทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมView Nudchanad
 
บทที่3 การควบคุมโปรแกรม
บทที่3 การควบคุมโปรแกรมบทที่3 การควบคุมโปรแกรม
บทที่3 การควบคุมโปรแกรมpennapa34
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)View Nudchanad
 
บทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคบทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคTheeravaj Tum
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์Oraphan4
 

Similar to บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2) (7)

บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุมบทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม
 
บทที่3 การควบคุมโปรแกรม
บทที่3 การควบคุมโปรแกรมบทที่3 การควบคุมโปรแกรม
บทที่3 การควบคุมโปรแกรม
 
ฟังก์ชั่น Switch
ฟังก์ชั่น Switchฟังก์ชั่น Switch
ฟังก์ชั่น Switch
 
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (1)
 
บทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคบทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบค
 
งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์งาน อ.ทรงศักดิ์
งาน อ.ทรงศักดิ์
 
ฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือกฟังก์ชั่น If หลายทางเลือก
ฟังก์ชั่น If หลายทางเลือก
 

More from View Nudchanad

บท2 พฤติกรรมการติดสมาร์ทโฟน
บท2 พฤติกรรมการติดสมาร์ทโฟนบท2 พฤติกรรมการติดสมาร์ทโฟน
บท2 พฤติกรรมการติดสมาร์ทโฟนView Nudchanad
 
บท1 พฤติกรรมการติดสมาร์ทโฟน
บท1 พฤติกรรมการติดสมาร์ทโฟนบท1 พฤติกรรมการติดสมาร์ทโฟน
บท1 พฤติกรรมการติดสมาร์ทโฟนView Nudchanad
 
บทที่ 1 แมวจรจัด
บทที่ 1 แมวจรจัดบทที่ 1 แมวจรจัด
บทที่ 1 แมวจรจัดView Nudchanad
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกView Nudchanad
 
ปัญหารการฆ่าตัวตาย IS1
ปัญหารการฆ่าตัวตาย IS1ปัญหารการฆ่าตัวตาย IS1
ปัญหารการฆ่าตัวตาย IS1View Nudchanad
 
ปัญหารการฆ่าตัวตายIs1
ปัญหารการฆ่าตัวตายIs1ปัญหารการฆ่าตัวตายIs1
ปัญหารการฆ่าตัวตายIs1View Nudchanad
 
สารสนเทศเพื่อการประกอบการตัดสินใจ
สารสนเทศเพื่อการประกอบการตัดสินใจสารสนเทศเพื่อการประกอบการตัดสินใจ
สารสนเทศเพื่อการประกอบการตัดสินใจView Nudchanad
 
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่View Nudchanad
 

More from View Nudchanad (8)

บท2 พฤติกรรมการติดสมาร์ทโฟน
บท2 พฤติกรรมการติดสมาร์ทโฟนบท2 พฤติกรรมการติดสมาร์ทโฟน
บท2 พฤติกรรมการติดสมาร์ทโฟน
 
บท1 พฤติกรรมการติดสมาร์ทโฟน
บท1 พฤติกรรมการติดสมาร์ทโฟนบท1 พฤติกรรมการติดสมาร์ทโฟน
บท1 พฤติกรรมการติดสมาร์ทโฟน
 
บทที่ 1 แมวจรจัด
บทที่ 1 แมวจรจัดบทที่ 1 แมวจรจัด
บทที่ 1 แมวจรจัด
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือกการเขียนคำสั่งควบคุมแบบมีทางเลือก
การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
ปัญหารการฆ่าตัวตาย IS1
ปัญหารการฆ่าตัวตาย IS1ปัญหารการฆ่าตัวตาย IS1
ปัญหารการฆ่าตัวตาย IS1
 
ปัญหารการฆ่าตัวตายIs1
ปัญหารการฆ่าตัวตายIs1ปัญหารการฆ่าตัวตายIs1
ปัญหารการฆ่าตัวตายIs1
 
สารสนเทศเพื่อการประกอบการตัดสินใจ
สารสนเทศเพื่อการประกอบการตัดสินใจสารสนเทศเพื่อการประกอบการตัดสินใจ
สารสนเทศเพื่อการประกอบการตัดสินใจ
 
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่
Apple เปิดตัว iOS 10 อัพเดต 10 ฟีเจอร์ใหม่
 

บทที่ 6-เงื่อนไข-การตัดสินใจ-การควบคุม (2)

  • 1. บทที่ 6 เงื่อนไข การตัดสินใจ การควบคุมทิศทาง และการทาซ้า (Conditions, Decisions, Control flows and Loop)
  • 2. สมาชิกกลุ่ม • 1. นางสาวสมหญิง งามเลิศศุภร เลขที่ 12 • 2. นางสาวนัชชา ห้วยหงส์ทอง เลขที่ 15 • 3. นางสาวคันธรส ใคร่ในธรรม เลขที่ 21 • 4. นางสาวรวิสรา คชายุทธ เลขที่ 23 • 5. นางสาวธิดาพร แก้วตา เลขที่ 30 • 6. นางสาวณัฐริกานต์ ธรรมโชติ เลขที่ 33 • 7. นางสาวนุชนาฏ สุดประเสริฐ เลขที่ 34 • 8. นางสาวกานติรัตน์ มนูเดชาวัชร เลขที่ 35 • 9. นางสาวศุภสุตา อินทรภักดี เลขที่ 36
  • 3. Python เมื่อกล่าวถึงปัญหาไม่ว่าจะเป็นปัญหาเกี่ยวกับมนุษย์หรือคอมพิวเตอร์ก็ตามสิ่งที่หลีกเลี่ยง ไม่ได้ก็คือ จะต้องพบเจอกับเงื่อนไข(Conditions) และต้องทาการตัดสินใจ(Decisions) อยู่เสมอๆ ยกตัวอย่างเช่น เมื่อต้องการเดินทางไปที่แห่งหนึ่งระหว่างการเดินทางพบทางแยกซ้าย(สมมติให้เป็น ตัวแปร A) และขวา (ตัวแปร B) ผู้อ่านจะเลือกไปทางไหนดี? คาตอบนั้นจะขึ้นอยู่กับว่าเงื่อนไขทางใด ดีกว่ากัน สมมติตั้งเงื่อนไขไว้ว่าพิจารณาจากระยะทางดังนั้นเงื่อนไขที่ใช้ตัดสินใจคือ เมื่อ เส้นทางซ้าย (A) น้อยว่า เส้นทางขวา (B) แล้ว เลือกไปทางซ้าย ถ้าไม่เช่นนั้น เลือกไปทางขวา เมื่อทาการแปลงคาพูดที่กล่าวมานี้เป็นPseudo code ได้ดังนี้ IF A < B THEN Go to left way ELSE Go to right way
  • 4. • สาหรับการควบคุมทิศทาง (Control flows) คือ คาสั่งหรือกฎเกณฑ์ที่ใช้สาหรับควบคุมทิศทางการทางานเพื่อให้บรรลุเป้าหมาย(ในตัวอย่างคือ สั่งให้ไปทางซ้ายหรือขวา) แต่การจะบรรลุเป้าหมายให้ได้นั้น อาจจะทาไม่สาเร็จในครั้งเดียวจาเป็นต้องทาซ้าหลายๆ ครั้ง (Loop) • สังเกตเห็นว่าเงื่อนไข การตัดสินใจ การควบคุมทิศทางและการทาซ้าเป็นสิ่งที่อยู่ใกล้ตัวเราและพบเจอในชีวิตประจาวันเสมอๆไม่ว่าจะอยู่ที่ใดก็ตาม การ เขียนโปรแกรมก็เช่นเดียวกัน พยายามที่จะจาลองปัญหาต่างๆในชีวิตประจาวันมาประมวลผลกับคอมพิวเตอร์เพราะคอมพิวเตอร์สามารถทางานที่มี ความซับซ้อนได้เร็วกว่ามนุษย์มาก • ในภาษาไพธอนแบ่งลักษณะการควบคุมการทางานของโปรแกรมออกเป็น 2 ประเภทหลักๆ คือการควบคุมทิศทางแบบเลือกทาและควบคุมทิศทางแบบ วนรอบหรือทาซ้า Python
  • 5. 1. การควบคุมทิศทางแบบเลือกทา (Decisions, Choice, Selection) การควบคุมทิศทางแบบเลือกทาคือ การเขียนโปรแกรมให้มีการตัดสินใจ สามารถเลือกได้ว่าจะทาหรือไม่ทาตามคาสั่ง ขึ้นอยู่กับเงื่อนไขที่ กาหนดขึ้นมา โดยคาสั่งสาหรับการควบคุมทิศทางแบบเลือกทาในภาษาไพธอนมีเพียงคาสั่งเดียวคือ if โดยแบ่งออกเป็น 3 ชนิดคือ if, if...else และ nested ifดังต่อไปนี้ • Note: ภาษาไพธอนไม่สนันสนุนการควบคุมทิศทางแบบ switch…case
  • 6. การควบคุมทิศทางแบบ if ค าสั่ง if ใช้ในกรณีที่มีทางเลือกให้ทางานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้ว เป็นจริงจึงจะทางานตามคาสั่ง รูปแบบการเรียกใช้คาสั่ง if แสดงได้ดังนี้ • condition คือ เงื่อนไขที่กาหนดขึ้น เพื่อใช้ตัดสินว่าจะทาหรือไม่ทาตามคาสั่ง โดยเงื่อนไขจะเขียนไว้ภายในเครื่องหมาย ( ) หรือไม่ก็ได้ซึ่งเงื่อนไข อาจจะอยู่ในรูปของนิพจน์ การคานวณเปรียบเทียบ หรือเป็นค่าของตัวแปรก็ได้และตามด้วยเครื่องหมาย • statement(s) คือ คาสั่งหรือชุดของคาสั่งที่จะให้ทางาน เมื่อผลการตรวจสอบเงื่อนไขเป็นจริง ในภาษาไพธอนไม่จาเป็นต้องเขียนคาสั่ง (statement) ไว้ภายใน { } เหมือนภาษาซีหรือจาวา แต่ไพธอนใช้การย่อหน้าเพื่อแสดงขอบเขตของคาสั่งหรือชุดคาสั่งแทน เช่น if condition: statement(s)
  • 7. การควบคุมทิศทางแบบ if • คาสั่งแบบมีเงื่อนไข if เป็นคาสั่งแบบเลือกทาโดยการเปรียบเทียบเงื่อนไขนิพจน์ทาง ตรรกศาสตร์ ผลลัพธ์ที่ได้จะมีค่าจริงกับเท็จเท่านั้น ถ้าเงื่อนไขเป็น จริงแล้วโปรแกรมจะเลือกทาคาสั่ง ที่อยู่หลังเครื่องหมาย : ทันที แต่ถ้าเป็นเท็จจะไม่มีการประมวลผลใดๆ เกิดขึ้น เมื่อเปรียบเทียบกับ แผนผังจาลองกา รท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม if condition: statement 1 statement 2 … statement n Caution! หลังคาสั่ง if, else, for, while และ function อย่าลืมเครื่องหมาย : เป็นอันขาด
  • 8. การควบคุมทิศทางแบบ if Note: ในภาษาไพธอนถือว่า ค่าที่ไม่ใช่ศูนย์ (0) และค่าที่ไม่ใช่ null เป็นค่าจริง และถ้าข้อมูล เป็นศูนย์ หรือ null จะอนุมานว่าเป็นเท็จทันที
  • 9. ตัวอย่างโปรแกรม • Program Example 6.1: if # If command testing 2 var1 = 100; 3 if var1: #This condition is True 4 print ("1 - Got a true expression value") 5 print (var1) 6 var2 = 0; 7 if var2: #This condition is False 8 print ("2 - Got a true expression value") 9 print (var2) 10 print("Good bye!")
  • 10. ตัวอย่างโปรแกรม • จากตัวอย่างโปรแกรมเริ่มต้นบรรทัดที่ 2 เป็นกาหนดค่าเริ่มต้นให้กับตัวแปร var1 = 100บรรทัดที่ 3 ทาการตรวจสอบด้วยคาสั่ง if ว่า var1 เป็น จริงหรือไม่ (ไพธอนตีความหมายว่า null และ 0เท่านั้นที่เป็นเท็จ) ผลจากการเปรียบเทียบปรากฎว่าเป็นจริง ดังนั้นโปรแกรมจึงเลื่อนไปทาคาสั่งหลัง ifในบรรทัดที่ 4 และ 5 โดยพิมพ์ข้อความ "1 - Got a true expression value" และ 100 (ค่าที่เก็บอยู่ในตัวแปร var1) ต่อจากนั้น โปรแกรมจึงเลื่อนมาท างานต่อไปในบรรทัดที่ 6 โดยกาหนดตัวแปร var2 มีค่าเท่ากับ 0 ในบรรทัดที่ 7 ท าการตรวจสอบเงื่อนไขว่า var2 เป็นจริง หรือไม่ ผลที่ได้คือ เป็นเท็จ จึงทาให้โปรแกรมไม่เข้าไปประมวลผลคาสั่งหลัง if (ชุดของคาสั่งหลัง if มีสองคาสั่งคือ print โดยสังเกตจากการย่อ หน้าว่าทั้งสองคาสั่งย่อหน้าตรงกัน) แต่จะข้ามไปทางานบรรทัดที่ 10 โดยสั่งพิมพ์ข้อความว่า "Goodbye!" แทน พร้อมกับจบการทางานของ โปรแกรม
  • 11. การควบคุมทิศทางแบบ if…else คาสั่ง if-else จะใช้ในกรณีที่มีทางเลือกให้ทางาน2 ทางเลือกขึ้นไป โดยการทางานของคาสั่ง ifelse จะเริ่มจากการตรวจสอบเงื่อนไข ถ้าผลออกมาเป็นจริงจะทางานตามคาสั่งที่อยู่หลังif แต่ถ้าผล ของการตรวจสอบเงื่อนไขเป็นเท็จให้ทางานตามคาสั่งที่อยู่หลังelse แทน รูปแบบคาสั่ง if-else แสดง ได้ดังนี้ if condition: statement(s) else: statement(s)
  • 13. ตัวอย่างโปรแกรมการควบคุม if…else • 1 var1 = 100 2 if var1: #This condition is True 3 print ("1 - Got a true expression value") 4 print (var1) 5 else: 6 print ("1 - Got a false expression value") 7 print (var1) 8 var2 = 0 9 if var2: #This condition is False 10 print ("2 - Got a true expression value") 11 print (var2) • 12 else: 13 print ("2 - Got a false expression value") 14 print (var2) 15 print ("Good bye!")
  • 14. • จากตัวอย่างโปรแกรมที่ 6.3 บรรทัดที่ 1 กาหนดค่าให้ตัวแปร var1 เท่ากับ 100 เมื่อทดสอบเงื่อนไขด้วยคาสั่ง if ในบรรทัดที่ 2 ให้ผลลัพธ์เป็นจริง เพราะ var1 ไม่เท่ากับ 0 หรือ null ดังนั้นโปรแกรมจะพิมพ์ข้อความว่า "1 - Got a true expression value" (บรรทัดที่ 3) และพิมพ์ค่า ของ Var1 เท่ากับ 100(บรรทัดที่ 4) ออกทางจอภาพ จากนั้นโปรแกรมจะเลื่อนมาท าคาสั่งในบรรทัดที่ 8 คือกาหนดค่าตัวแปรvar2 เท่ากับ 0 และ เลื่อนมาเปรียบเทียบในเงื่อนไขด้วยคาสั่ง if อีกครั้งในบรรทัดที่ 9 ผลปรากฎว่าเงื่อนไขเป็นเท็จ เพราะ var2 เป็นเท็จ (var2 = 0) ส่งผลให้ โปรแกรมข้ามไปทางานบรรทัดที่ 13 และ 14หลังคาสั่ง else โดยพิมพ์ข้อความ "2 - Got a false expression value" และ var2 เท่ากับ 0 ออกทางจอภาพ ในบรรทัดสุดท้ายของโปรแกรมจะสั่งพิมพ์ Good bye เสมอ เพราะคาสั่งดังกล่าวไม่ได้อยู่ภายในขอบเขตของคาสั่ง if…else (สังเกตได้จากการย่อหน้าของโปรแกรม)
  • 16. การควบคุมทิศทางแบบ if…elif คาสั่งรูปแบบ if..elif นี้ เป็นคาสั่งเปรียบเทียบเงื่อนไขซ้อนเงื่อนไข โดยเริ่มต้นเปรียบเทียบ เงื่อนไขที่ 1 (condition 1) ถ้าเป็นเท็จ จะเลื่อนไปเปรียบเทียบกับเงื่อนไขที่ 2 (condition 2) ถ้าผลลัพธ์ การเปรียบเทียบกับเงื่อนไขที่ 2 เป็นเท็จ จึงเลื่อนไปเปรียบเทียบเงื่อนไขที่ 3 (condition 3) ต่อไปเรื่อยๆ จนกว่าจะหมดคาสั่งการเปรียบเทียบ (condition n) แต่ถ้าผลการเปรียบเทียบเงื่อนไขใดๆ แล้วผลลัพธ์ เป็นจริง จะประมวลผลคาสั่งหรือกลุ่มของคาสั่งหลังเครื่องหมาย: ของเงื่อนไขนั้นๆ เมื่อเสร็จสิ้นการ ประมวลผลคาสั่งแล้วถือว่าสิ้นสุดการเปรียบเทียบเงื่อนไขในกลุ่มนั้นและจบการทางานแผนผังจาลอง การท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม
  • 18. ตัวอย่างโปรแกรม • 1 var = 100 2 if var == 200: 3 print ("1 - Got a true expression value") 4 print (var) 5 elif var == 150: 6 print ("2 - Got a true expression value") 7 print (var) 8 elif var == 100: 9 print ("3 - Got a true expression value") 10 print (var) 11 else: 12 print ("4 - Got a false expression value") • 13 print (var) 14 print ("Good bye!")
  • 19. การควบคุมทิศทางแบบ if…elif จากตัวอย่างโปรแกรมบรรทัดที่ 1 กาหนดค่าให้ตัวแปร var เท่ากับ 100 ต่อจากนั้นโปรแกรมเลื่อนมาทางานบรรทัดที่ 2 เพื่อเปรียบเทียบเงื่อนไขว่า var เท่ากับ 200 จริงหรือไม่ ผลลัพธ์ที่ได้เป็นเท็จจึงเลื่อนมาเปรียบเทียบในบรรทัดที่ 5 ผลที่ได้มีค่าเป็นเท็จ (ตัวแปร var มีค่าไม่เท่า 150) โปรแกรมจึงเลื่อนมา เปรียบเทียบเงื่อนไขต่อในบรรทัดที่ 8 ซึ่ง var มีค่าเท่ากับ 100 เป็นจริง โปรแกรมจึงทาคาสั่ง หลัง : ในบรรทัดที่ 9 และ 10 โดยการพิมพ์ข้อความว่า "3 - Got a true expression value" และ 100ออกทางจอภาพ ต่อจากนั้นโปรแกรมจะ กระโดดข้ามไปพิมพ์ข้อความว่า "Good bye!" ในบรรทัดที่ 14แล้วจบการทางาน
  • 20. การควบคุมทิศทางแบบ nested if • โครงสร้างการทางานแบบnested if มีรูปแบบคาสั่งดังนี้ if condition (1): if condition (1.1): if condition (1.1.1): statement(s) elif (1.1.1) condition (1.1.2): statement(s) else (1.1.1): statement(s) else (1.1): statement(s) else (1): statement(s)
  • 21. การควบคุมทิศทางแบบ nested if การทางานของ nested if นั้นจะมีลักษณะเงื่อนไงซ้อนเงื่อนไขไปเรื่อยๆ ขึ้นอยู่กับความซับซ้อนของโจทย์ปัญหา จากโครงสร้างการท างานของ nested if ข้างบน เริ่มต้นจากการเปรียบเทียบเงื่อนไขแรก condition (1): ถ้าเป็นเท็จจะทาคาสั่งหลัง else (1): แต่ถ้าเป็นจริง โปรแกรมจะทา คาสั่งหลัง เครื่องหมาย : โดยหลังเครื่องหมาย : มีเงื่อนไขที่ 2 condition (1.1) ที่ต้องตรวจสอบอีกครั้ง ถ้าผลจากการเปรียบเทียบแล้วปรากฏว่าเป็นเท็จ โปรแกรมจะทาคาสั่งหลัง else (1.1): แต่ถ้าผลการเปรียบเทียบเป็นจริง จะเปรียบเทียบกับคาสั่ง if ในครั้งที่ 3 condition (1.1.1) แต่ถ้าผลการ เปรียบเทียบในครั้งที่ 3 นี้ผลลัพธ์เป็นเท็จจะทา การเปรียบเทียบอีกเป็นครั้งที่ 4 กับเงื่อนไข condition (1.1.2): ถ้าผลการเปรียบเทียบในครั้งที่ 4 นี้ เป็นเท็จ จะประมวลคาสั่งหลัง else (1.1.1): แต่ถ้าเป็นจริงจะทาการประมวลผลคาสั่งหลังcondition (1.1.2): เป็นต้น สาหรับแผนผังจาลองกา รท างานจะมีลักษณะดังภาพและตัวอย่างโปรแกรม
  • 22.
  • 23. ตัวอย่างโปรแกรม • 1 var = 100 2 if var < 200: 3 print("Expression value is less than 200") 4 if var == 150: 5 print("Which is 150") 6 elif var == 100: 7 print("Which is 100") 8 elif var == 50: 9 print("Which is 50") 10 elif var < 50: 11 print("Expression value is less than 50") 12 else: 13 print ("Could not find true expression") 14 print("Good bye!")
  • 24. การควบคุมทิศทางแบบ nested if • จากโปรแกรมที่ 6.7 บรรทัดที่ 1 กาหนดค่าเริ่มต้นให้ตัวแปร var เท่ากับ 100 จากนั้นบรรทัดที่ 2 ท าการเปรียบเทียบเงื่อนไข (var < 200) ผล ปรากฎว่า เป็นจริง ทาให้โปรแกรมพิมพ์ข้อความว่า"Expression value is less than 200" (บรรทัดที่ 3) ออกทางจอภาพลาดับถัดไปใน บรรทัดที่ 4โปรแกรมทาการเปรียบเทียบเงื่อนไข if var == 150 ผลลัพธ์คือ เป็นเท็จ โปรแกรมจึงกระโดดข้ามบรรทัดที่ 5 ไปทาการเปรียบเทียบ เงื่อนไข elif ต่อในบรรทัดที่ 6 ผลจากการเปรียบเทียบมีค่าเป็นจริง(var == 100) ดังนั้นในบรรทัดที่ 7 โปรแกรมจึงสั่งพิมพ์ข้อความ "Which is 100" หลังจากพิมพ์ข้อความเสร็จ โปรแกรมจะกระโดดไปทาคาสั่งบรรทัดที่ 14 เพื่อพิมพ์ข้อความ "Good bye!" แล้วจบการทางาน
  • 25. การควบคมุ ทิศทางแบบวนรอบ หรือทาซ้า (Loop, Iteration) • การแก้ปัญหาต่างๆในชีวิตประจาวัน มักจะพบเจอกับปัญหาที่ต้องใช้ความพยายามในการแก้ปัญหาดังกล่าววนซ้าหลายๆครั้ง เพื่อที่จะบรรลุเป้าหมาย เช่น ถ้าต้องการสอบให้ได้คะแนนดีจาเป็นต้องอ่านหนังสือในบทที่จะออกสอบหลายๆรอบ ยิ่งอ่านมากยิ่งมีโอกาสที่จะได้คะแนนสอบมากตามไปด้วย หรือนักกีฬาที่ต้องการได้เหรียญทองในการแข่งขันจาเป็นต้องฝึกซ้าแบบเดิมให้เกิดความชานาญ ยิ่งชานาญมากก็ยิ่งมีโอกาสประสบความสาเร็จมากตาม ไปด้วย เช่นเดียวกับการแก้ปัญหาทางคอมพิวเตอร์ บางปัญหานั้นจาเป็นต้องประมวลผลซ้าไปซ้ามาหลายๆรอบ จนกว่าจะได้คาตอบ เช่นการหาผลรวม ของจานวนเต็มตั้งแต่ 1 – n, การหาค่า factorial, การหาค่า prime number และการคานวณเลขลาดับอนุกรมเป็นต้น ปัญหาเหล่านี้ จาเป็นต้องอาศัยเทคนิคการทาซ้าทั้งสิ้น ภาษาไพธอนเตรียมคาสั่งในการทาซ้าไว้2 คาสั่งคือ while และ for loop โดยใน 2 คาสั่งนี้สามารถจา แนกเป็นวิธีการทางานได้3 รูปแบบ while loop, for loop และ nested loop ซึ่งมีรายละเอียดดังต่อไปนี้
  • 26. ค าสั่ง While loop • While เป็นคาสั่งวนซ้าที่มีการตรวจสอบเงื่อนไข (condition) ก่อนเข้าทางานเสมอเมื่อเงื่อนไขที่ทาการตรวจสอบเป็นจริง จึงจะประมวลผล คาสั่งหลัง while แต่ถ้าเงื่อนไขเป็นเท็จจะยุติการทางานทันทีสาหรับงานที่นิยมใช้while ในการแก้ปัญหาคือ ปัญหาที่ไม่ทราบจานวนรอบการท า งานที่แน่นอนหรือ ปัญหาที่ไม่สามารถทราบได้ร่วงหน้าว่าจะต้องใช้เวลาในการประมวลผลนานเท่าใด ส่วนใหญ่มักจะหยุดการทางานของ while ด้วยเงื่อนไขบางประการ เช่น กดแป้นพิมพ์ที่บ่งบอกว่าต้องการออกจากโปรแกรมเช่นESC, q, -1, 0 เป็นต้น หรือตรวจสอบค่าในตัวแปรตัวใดตัวหนึ่งในโปรแกรมเป็นเท็จ เป็น ต้นโครงสร้างการทางาน while loop มีรูปแบบคาสั่งดังนี้ whilecondition: statement(s)
  • 28. ตัวอย่างโปรแกรม • 1 # While loop testing 2 count = 0 3 while (count < 9): 4 print ('The count is:', count) 5 count = count + 1 6 print ("Good bye!")
  • 29. ตัวอย่างโปรแกรม • จากตัวอย่างโปรแกรม เริ่มต้นบรรทัดที่ 2 เป็นการกาหนดค่าให้ตัวแปร count มีค่าเท่ากับ 0เพื่อใช้สาหรับนับค่า ขั้นตอนต่อไปบรรทัดที่ 3 โปรแกรม จะเปรียบเทียบเงื่อนไขใน while ว่า count มีค่าน้อยกว่า 9 หรือไม่ ถ้าเงื่อนไขเป็นเท็จ โปรแกรมจะข้ามไปทางานในบรรทัดที่ 6 โดยพิมพ์ข้อความ ว่า"Good bye!" ออกจอภาพแต่ถ้าเงื่อนไขเป็นจริง (count < 9) โปรแกรมจะทางานหลัง while ในบรรทัดที่4 โดยพิมพ์ข้อความว่า 'The count is:' พร้อมกับค่าในตัวแปร count ต่อจากนั้นในบรรทัดที่ 5 จะทาการเพิ่มค่าให้ตัวแปร count อีก 1 ต่อจากนั้นโปรแกรมจะวนกลับไป ตรวจสอบเงื่อนไขของ while ในบรรทัดที่ 3 ใหม่ เป็นรอบที่ 2 และทาการประมวลผลคาสั่งตามลาดับในบรรทัดที่ 3 4 5 ไปเรื่อยๆจนกว่า เงื่อนไขที่ while จะเป็นเท็จ (count >= 9) เมื่อเงื่อนไขใน while เป็นเท็จโปรแกรมจะมาท างานในบรรทัดที่ 6 โดยพิมพ์ข้อความว่า "Good bye!" ก่อนจบโปรแกรมเสมอ
  • 30. การวนซ้าแบบไม่รู้จบ (The Infinite Loop) บ่อยครั้งที่พบปัญหาในการใช้งาน while คือ เงื่อนไขที่ตรวจสอบไม่เป็นเท็จ ซึ่งสาเหตุมาจากหลายกรณีแต่ส่วนใหญ่มาจากการหลงลืมทาให้ตัวแปรที่ใช้ ตรวจสอบเงื่อนไขเป็นเท็จ เช่น ในกรณีตัวอย่างโปรแกรมถ้านักเขียนโปรแกรมลืมเพิ่มค่าให้กับตัวแปร count จะทาให้โปรแกรมเข้าสู่สถานะที่เรียกว่า Infinite loop คือโปรแกรมทางานไปเรื่อยๆ ไม่สามารถหยุดได้แต่ก็มีโปรแกรมบางประเภทที่ต้องการการทางานในลักษณะInfinite loop อยู่ เหมือนกัน เช่น โปรแกรมประเภท Client-Server ที่ฝั่งผู้ให้บริการ (Server) จะรอให้บริการตลอดเวลาไม่มีวันหยุดพักหรือปิดโปรแกรมเลย สาหรับคาสั่งตัวอย่างที่ใช้ในกรณีที่ต้องการให้โปรแกรมทางานในลักษณะinfinite loop ดังโปรแกรม
  • 31. ตัวอย่างโปรแกรม • 1 # Infinite loop program 2 # When would you like to exit this program, push CTRL + C 3 var = 1 4 while var == 1 : # This constructs an infinite loop 5 num = int(input("Enter a number :")) 6 print("You entered: ", num) 7 print("Good bye!")
  • 32. การวนซ้าแบบไม่ร้จูบ (The Infinite Loop) • จากตัวอย่างโปรแกรม เริ่มต้นบรรทัดที่3 กาหนดค่าให้ตัวแปร var = 1 เพื่อใช้สาหรับเปรียบเทียบเงื่อนไขก่อนเข้าทางานใน while loop (การ กาหนดเงื่อนไขเพื่อใช้เปรียบเทียบก่อนเข้าทางานใน while loop เป็นขั้นตอนที่สาคัญมากและต้องทาเสมอ)บรรทัดที่ 4 ทาการตรวจสอบเงื่อนไข ก่อนเข้าทางานใน while ผลการตรวจสอบปรากฎว่า เป็นจริงเสมอ เพราะว่าค่าในตัวแปร var มีค่าเท่ากับ 1 โปรแกรมจึงเลื่อนไปท าค าสั่งใน บรรทัดที่ 5 หลังคาสั่ง while คือคาสั่งอ่านข้อมูลจานวนเต็มมาจากแป้นพิมพ์เก็บไว้ในตัวแปร num จากนั้นบรรทัดที่ 6 จะพิมพ์ค่าที่อยู่ในตัวแปร num ออกมาทางจอภาพแล้วโปรแกรมจะกลับไปทางานในบรรทัดที่ 4 อีกครั้ง ทั้งนี้เพราะเงื่อนไขใน while ยังเป็นจริงอยู่การทางานจะทาซ้าคาสั่ง บรรทัดที่ 4 5 6 ไปเรื่อยๆ จนกว่าเงื่อนไขใน while จะเป็นเท็จ แต่สาหรับในกรณีนี้จะเป็นจริงตลอดไปแบบไม่มีวันจบ (Infinite loop) และคาสั่งในบรรทัดที่ 7 จะไม่ถูกประมวลผลเลย ถ้าผู้เขียนโปรแกรมต้องการออกจากโปรแกรมนี้ให้กดปุ่ม CTRL + C เท่านั้น เพื่อเป็น การ Terminate โปรแกรมและโปรแกรมจะแสดงข้อความผิดพลาดออกมาดังตัวอย่างข้างบน
  • 33. การใช้คาสั่ง else ร่วมกับ while และ for • ไพธอนจะอนุญาตให้ผู้เขียนโปรแกรมสามารถใช้ else ร่วมกับคาสั่ง while และ for ได้(ซึ่งแนวคิดดังกล่าวไม่มีในภาษาC/C++ หรือ Java) โดยถ้าใช้คาสั่ง else กับ for แล้ว คาสั่ง else จะทางานเมื่อการประมวลผลคาสั่งในfor loop เสร็จเรียบร้อยหมดแล้ว และเมื่อใช้งาน else กับ while โดย elseจะทางานก็ต่อเมื่อเงื่อนไขใน while loop เป็นเท็จ ตัวอย่างการใช้else ร่วมกับ while ดังโปรแกรม
  • 34. ตัวอย่างโปรแกรม • 1 # Testing else statement with while loop 2 count = 0 3 while count < 5: 4 print(count, " is less than 5 (While Loop)") 5 count = count + 1 6 else: 7 print(count," is not less than 5(Else after exit while • loop)") 8 print("Good bye!")
  • 35. ตัวอย่างโปรแกรม • จากตัวอย่างโปรแกรม บรรทัดที่ 2 กาหนดค่าเริ่มต้นให้ตัวแปร count เท่ากับ 0 เพื่อใช้ สาหรับทาการเปรียบเทียบก่อนเข้าทางานใน while loop ผลลัพธ์จากการเปรียบเทียบ (บรรทัดที่ 3) มี ค่าเป็นจริง เพราะ count < 5 โปรแกรมจะเข้าไปประมวลผลในบรรทัดที่ 4 โดยพิมพ์ข้อความว่า "X is less than 5 (While Loop)" โดย X คือค่าที่อยู่ในตัวแปร count ในบรรทัดที่ 5 โปรแกรมทาการเพิ่มค่า conunt อีก 1 จากนั้นโปรแกรม จะวนกลับมาตรวจสอบเงื่อนไขใน while อีก (เพราะเงื่อนไขยังไม่เป็น เท็จ) ซึ่งโปรแกรมจะทาคาสั่งซ้าในบรรทัดที่ 3 4 5 เช่นนี้ไปเรื่อยๆ จนกว่า count >= 5 จึงทาให้ โปรแกรมยุติการท างานใน while loop ลง และมาประมวลผลคาสั่งในบรรทัดที่ 6 โดยพิมพ์ข้อความว่า "5 is not less than 5 (Else after exit while loop)" และตามด้วยข้อความ "Good bye!" ในบรรทัดที่ 8 ดังแสดงใน OUTPUT ของ โปรแกรมด้านบน
  • 36. ตัวอย่างโปรแกรม • สาหรับในกรณีที่ต้องการประมวลผลคาสั่งที่มีเพียงแค่คาสั่งเดียวเท่านั้น ต่อจากคาสั่ง while (จะมี • ลักษณะการทางานคล้ายกับif ที่ปราศจาก else) คือ ให้วาง 1 คาสั่งที่ต้องการประมวลผลอยู่ในู • บรรทัดเดียวกันกับ while ดังตัวอย่างต่อไปนี้ • flag = True • while flag != False: flag = False # Single statement only • print("Good bye!") • เมื่อรันโปรแกรมผลลัพธ์ที่ได้คือ • Good bye!
  • 37. ตัวอย่างโปรแกรม • 1 # Testing else statement with while loop 2 count = 0 3 while count < 5: 4 print(count, " is less than 5 (While Loop)") 5 count = count + 1 6 else: 7 print(count," is not less than 5(Else after exit while • loop)") 8 print("Good bye!")
  • 38. คาสั่งควบคุมการทาซ้า (Loop control statements) • คาสั่งควบคุมการทาซ้าถูกสร้างขึ้นเพื่อต้องการเปลี่ยนทิศทางของการประมวลผลแบบวนซ้าซึ่งตามปกติแล้วการประมวลผลจะเป็นแบบลาดับจากซ้าย ไปขวาและจากด้านบนลงล่าง(Sequence) แต่สถานการณ์บางอย่างการทางานแบบลาดับอาจจะไม่เหมาะสมเช่น โปรแกรมต้องการค้นหาข้อความ ในสตริงที่มีความยาวมากๆ เมื่อค้นหาไปเรื่อยๆ ปรากฎว่าโปรแกรมพบข้อความที่ต้องการดังกล่าวอยู่ระหว่างกลางของข้อความ ผู้เขียนโปรแกรมควรจะ หยุดการทางานวนซ้าเนื่องจากจะทาให้ประหยัดเวลาในการคานวณ จากตัวอย่างที่กล่าวมาแล้วเมื่อผู้เขียนโปรแกรมบังคับให้โปรแกรมหลุดออกจาก คาสั่งวนซ้า จะส่งผลให้ตัวแปรหรืออ๊อปเจ็กต์ต่างๆที่ใช้งานอยู่ภายในขอบเขตของการวนซ้านั้น หมดอายุการทางาน คือจะถูกลบออกจากหน่วยความไป โดยอัตโนมัติไพธอนสนับสนุนคาสั่งควบคุมการทาซ้า 3คาสั่งคือ break, continue และ pass
  • 39. ตัวอย่างโปรแกรม • คาสั่ง break เป็นคาสั่งที่สั่งให้โปรแกรมยุติการทาซ้า (Loop) ซึ่งส่งผลให้คาสั่งที่เหลือทั้งหมดหลังคาสั่งbreak และอยู่ภายในขอบเขตของคาสั่ง ทาซ้า ไม่ถูกประมวลผลไปด้วย เมื่อออกจากขอบเขตของคาสั่งการทาซ้าปัจจุบันแล้วโปรแกรมจะประมวลคาสั่งอื่นๆต่อไป (ไม่ใช่การจบการทางาน ของโปรแกรม จะยุติการทางานเฉพาะคาสั่งในLoop ปัจจุบันเท่านั้น) สาหรับการทางานของคาสั่ง break ในnested loop เมื่อโปรแกรมยุติกา รท างานใน Loop ปัจจุบันแล้ว โปรแกรมจะทางานต่อใน Loop ที่ครอบLoop ปัจจุบันอยู่ต่อไป คาสั่ง break จะใช้ทางานกับwhile และ for loop เท่านั้น ไม่สามารถใช้ได้กับ if,if..else, if..elif ได้เหมือนในภาษาซีสาหรับแผนผังจาลองการทางานของbreak จะมีลักษณะดังภาพ
  • 41. ตัวอย่างโปรแกรม • 1 # Break for while and for loop 2 for letter in 'Python': #First example for for loop 3 if letter == 'h': 4 break #Break force exit for loop 5 print('Current Letter :', letter) 7 var = 10 #Second example while loop 8 while var > 0: 9 print('Current variable value :', var) 10 var = var – 1 11 if var == 5: 12 break #Break force exit while loop 13 print("Good bye!")
  • 42. คาสั่ง continue • เป็นคาสั่งที่สั่งให้โปรแกรมกลับไปเริ่มต้นใหม่ที่ต้น loop ซึ่งส่งผลให้คาสั่งที่ เหลือทั้งหมดหลังคาสั่ง continue และอยู่ภายในขอบเขตของคาสั่ง ทาซ้า จะไม่ถูกประมวลผลในรอบ นั้นๆ ไปด้วย (แต่ไม่ได้ออกจากคาสั่งการทาซ้า) คาสั่ง continue จะใช้ได้ทั้ง while และ for loop สาหรับ แผนผังจาลองการทางานของ continue จะมีลักษณะดังภาพ
  • 43. ตัวอย่างโปรแกรม • 1 # Continue for while and for loop 2 for letter in 'Python': # First example for for loop 3 if letter == 'h': 4 continue 5 print('Current Letter :', letter) 6 var = 10 # Second example for while loop 7 while var > 0: 8 var = var -1 9 if var == 5: 10 continue 11 print('Current variable value :', var) 12 print("Good bye!")
  • 44. คาสั่ง pass • (ไม่มีการประมวลผลใดๆ เกิดขึ้น) เป็นคาสั่งที่มีไว้เพื่อรักษาโครงสร้างหรือความหมายของโปรแกรมไว้เช่น กรณีที่ผู้เขียนโปรแกรมกาลังเขียนโปรแกรม อยู่แต่ปรากฎว่าในบางจุดของโปรแกรม ผู้เขียนยังไม่แน่ใจว่าจะดาเนินการต่ออย่างไรและต้องการยกเว้นโปรแกรมตรงส่วนนี้ไว้ ก่อน (ใส่ comment ก็พอใช้ได้เหมือนกัน) แล้วจึงค่อยมาแก้ไขในภายหลัง ผู้เขียนโปรแกรมสามารถ บรรจุคาสั่ง pass นี้ไว้เพื่อให้โปรแกรมสามารถทดสอบ รันโปรแกรมได้และประมวลผลโปรแกรมในส่วนที่ ละเว้นไว้ด้วย ซึ่งคาสั่ง pass จะไม่มีการประมวลผลใดๆ เกิดขึ้น (คล้ายคาสั่ง No operation ในภาษา แอสแซมบลี) และเมื่อไม่ต้องการใช้งานคาสั่งดังกล่าวแล้ว ไม่จาเป็นต้องลบทิ้งก็ได้ (แต่ควรลบจะดีกว่า) สาหรับตัวอย่างการใช้งานคาสั่ง pass แสดงในตัวอย่างโปรแกรม Tips: เมื่อป้อนคาสั่ง pass และกด Enter โปรแกรมจะออกจากขอบเขตของคาสั่งที่กาลังเขียนโปรแกรม ทันที เช่น เมื่อกาลังเขียนคาสั่งอยู่ใน while loop เมื่อป้อนคาสั่ง passเคอร์เซอร์จะมาปรากฎในตาแหน่ง เดียวกับคาสั่ง while ทันที
  • 45. ตัวอย่างโปรแกรม • 1 # Testing pass command 2 for letter in 'Python': 3 if letter == 'h': 4 pass 5 print('This is pass block') 6 print('Current Letter :', letter) 7 print("Good bye!") Note: คาสั่ง switch, do-while, forecach ไม่มีให้ใช้งานในภาษาไพธอน
  • 46. คาสั่ง for loop • คาสั่ง for เป็นคาสั่งที่ใช้ส าหรับการทาซ้าเช่นเดียวกับ while และต้องมีการตรวจสอบเงื่อนไขก่อนเข้าลูปเหมือนกันแต่แตกต่างกันตรงที่ for จะ ตรวจสอบรายการแบบลาดับแทน (Item ofsequence) เช่น ข้อมูลชนิดสตริง ลิสต์หรือทัพเพิล เป็นต้น โครงสร้างการทางาน for loop มี รูปแบบคาสั่งดังนี้ • โดย interating_var คือตัวแปรที่ใช้สาหรับรับค่าทีละค่าเพื่อนามาประมวลผลจากข้อมูลที่อยู่ในตัวแปร sequence เมื่อข้อมูลในตัวแปร sequence เป็นชนิดลิสต์คาสั่ง for จะดึงข้อมูลในตาแหน่งแรกของลิสต์ออกมาเก็บไว้ใน iterating_var หลังจากนั้นจะเริ่มทาคาสั่งใน statement(s) เมื่อคาสั่งในstatement(s) หมดแล้ว การควบคุมจะกลับไปเริ่มต้นใหม่ที่ for แล้วดึงข้อมูลในลิสต์ลาดับถัดไปมาทางานการ ทางานจะเป็นไปในลักษณะเช่นนี้ไปเรื่อยๆจนกว่าข้อมูลในลิสต์จะหมด for จึงจะยุติการทางานสาหรับแผนผังจาลองการทางานของfor และตัวอย่าง การดึงข้อมูลสมาชิกในรายการ for iterating_var insequence: statements(s)
  • 47.
  • 48. ตัวอย่างโปรแกรม • 1 # Testing for loop 2 for letter in 'Python': # First Example 3 print('Current Letter :', letter) 4 fruits = ['banana', 'apple', 'mango'] 5 for fruit in fruits: # Second Example 6 print('Current fruit :', fruit) 7 print("Good bye!")
  • 49. การอ้างถึงข้อมูลสมาชิกโดยการชี้ตาแหน่งของ for loop • คาสั่ง range เป็นคาสั่งที่ช่วยสร้างช่วงของข้อมูลเช่น เมื่อใช้คาสั่ง range(5) ช่วงข้อมูลที่ได้คือ 0, 1, 2,3, 4 ดังนั้นเราสามารถนา range มา ประยุกต์ใช้กับ for ได้โดยข้อมูลที่สร้างโดย range จะถูกนาไปใช้เป็นตัวชี้ตาแหน่งของรายการข้อมูลได้ดังตัวอย่างโปรแกรม
  • 50. ตัวอย่างโปรแกรม • 1 # for loop and index 2 fruits = ['banana', 'apple', 'mango'] 3 for index in range(len(fruits)): 4 print('Current fruit :', fruits[index]) 5 print("Good bye!")
  • 51. ฟังก์ชัน range • จากที่กล่าวไปแล้วว่า for นั้นนิยมใช้งานกับคาสั่ง range เสมอ ดังนั้นในย่อหน้านีจะกล่าวถึงคาสั่งrange เพิ่มเติมอีกเล็กน้อยเพื่อให้การใช้คาสั่ง range ร่วมกับ for ได้ดีขึ้น โดยปกตคาสั่ง range จะมีรูปแบบ คาสั่ง 4 แบบดังนี้ range (x), range (x, y), range (x, y, i), range (y, x, - i)range (x) แบบที่ จะสร้างชุดของข้อมูลเริ่มต้นจาก0 ถึง (x -1) โดยเพิ่มขึ้นครั้งละ 1 เช่นเมื่อเรียกใช้ ฟังชัน range(6) ข้อมูลที่ถูกสร้างขึ้นคือ [0, 1, 2, 3, 4, 5]range (x, y) แบบที่ จะสร้างชุดของข้อมูล เริ่มต้นจาก x ถึง (y -1) โดยเพิ่มขึ้นครั้งละ 1 เช่นเมื่อเรียกใช้ฟังชัน range(3, 10) ข้อมูลที่ถูกสร้างขึ้นคือ [3, 4, 5, 6, 7, 8, 9]range (x, y, i) แบบที่ จะสร้างชุดของข้อมูลเริ่มต้นจากx ถึง (y -1) โดยเพิ่มขึ้นครั้ง ละ iเช่น เมื่อเรียกใช้ฟังชันrange(3, 15, 2) ข้อมูลที่ถูกสร้างขึ้นคือ [3, 5, 7, 9, 11, 13] มีข้อสังเกตสาหรับ ค่า y ตัวสุดท้าย คือ 15 จะไม่ถูกนามาใส่ไว้ในรายการด้วย เนื่องจากติดเงื่อนไขที่ค่า y = y – 1 ดังนั้นค่าy ที่ ได้คือ 14 โปรแกรมจึงตัดทั้ง 14 และ 15 ทิ้งไปด้วย เพราะไม่อยู่ในเงื่อนไขทั้งคู่
  • 52. การใช้else statement กับ for loop • ไพธอนอนุญาตให้ใช้else กับ for loop ได้ซึ่งแตกต่างจากภาษาอื่นๆโดยทั่วไป เช่นภาษาซีหรือจาวา เป้าหมายสาคัญของ การใช้else กับ for นั้นเพื่ออานวยความสะดวกให้กับผู้เขียนโปรแกรมในกรณีที่เงื่อนไขใน for เป็นเท็จ โดยปกติจะออกจาก คาสั่ง for ไปโดยอัตโนมัติ บางครั้งผู้เขียนโปรแกรมไม่ทราบเลยว่าเกิดข้อผิดพลาดอะไรขึ้นในลูป for ดังนั้นคาสั่ง else จึงช่วย ให้ผู้เขียนโปรแกรมสามารถตรวจสอบความผิดปกติใน for ได้อีกทางหนึ่งหรือผู้เขียนโปรแกรมต้องการทางานบางอย่างหลังจาก จบการท างานใน for เรียบร้อยแล้ว สาหรับการใช้else กับ for และ while นั้นมีข้อพิจารณาดังนี้1) คาสั่ง else เมื่อถูกใช้ กับ for loop: คาสั่ง else จะถูกประมวลผลเมื่อ คาสั่งใน for ถูกประมวลผลครบหมดแล้ว2) คาสั่ง else เมื่อถูกใช้กับ while loop: คาสั่ง else จะถูกประมวลผลเมื่อ เงื่อนไขใน whileเป็นเท็จพิจารณาตัวอย่างการใช้else กับ for ดัง โปรแกรมที่ 6.21 โดยโปรแกรมดังกล่าวจะหาค่าจานวนเฉพาะ (prime number) คือเลขจานวนที่ไม่มีเลขอะไรมาหารมันได้ ลงตัว นอกจากตัวของมันเอและ1 เช่น 2, 3, 5, 7, 11, 13 และ 17 เป็นต้น
  • 53. ลูปซ้อน (Nested loops) • ไพธอนอนุญาตให้ผู้เขียนโปรแกรมสามารถใช้ลูปซ้อนได้ (การวาง for loop ไว้ภายใน for loop)มีรูปแบบคาสั่งดังนี้ • ลูปซ้อนของ for • ลูปซ้อนของ while for iterating_var insequence: for iterating_var insequence: statements(s) statements(s) whileexpression: whileexpression: statement(s) statement(s)
  • 54. ลูปซ้อน (Nested loops) • ลูปซ้อนของ for กับ while for iterating_var insequence: whileexpression: statement(s) statement(s)