4. การควบคุมทิศทางแบบเลือกทา
• คาสั่ง if
ในภาษา Phython คาสั่งสาหรับโครงสร้างการควบคุมเพื่อกาหนดทางเลือกคือประโยค if ซึ่งประกอบด้วยส่วนที่ทาหน้าที่ตรวจสอบเงื่อนไขที่
เรียกว่า นิพจน์ทางตรรกศาสตร์ เราสามารถใช้โครงสร้างการควบคุมแบบ if ได้ในหลาย ๆ รูปแบบ คาสั่ง if เป็นคาสั่งที่ใช้เลือกการทางานตามเงื่อนไข
สามารถแบ่งตามลักษณะการทางานได้3 แบบ ดังนี้
1. คาสั่ง if แบบทางเดียว (if)
2. คาสั่ง if แบบสองทาง (if-else)
3. คาสั่ง if แบบหลายทาง (if-elseif , nested- if)
5. ผังงาน if แบบ 1 ทางเลือก
ค่าของนิพจน์ทดสอบ
จริง
เท็จ
กลุ่มคาสั่ง
if (นิพจน์ทดสอบ) ประโยคที่ทาเมื่อผลจากนิพจน์ทดสอบเป็นจริง;
เช่น if (x<y) printf(“%d”,y);
6. ตัวอย่างโปรแกรม if แบบ 1 ทางเลือก
#include <stdio.h>
void main ( )
{
int value;
printf(“Enter an integer: ”);
scanf(“%d”, &value);
if (value = = 5) {
printf(“You entered a value of 5.n”);
printf(“This will now be changed to a 6!n”);
value = value + 1;
}
printf(“Goodbyen”);
}
7. ประโยคควบคุม if แบบ 2 ทางเลือก
• คาสั่ง if - else
โครงสร้างแบบ if – else คล้ายกับประโยคควบคุม if แบบ 1 ทางเลือก เพียงแต่เพิ่มทางเลือกเข้ามา
ใช้ในกรณีที่เราต้องการให้มีทางเลือก 2 ทางให้ประมวลผล คือ ทางเลือกที่เงื่อนไขจริงมีค่าเป็นจริง และเงื่อนไขที่เป็นเท็จ
8. ผังงาน ประโยคควบคุม if แบบ 2 ทางเลือก
ค่าของนิพจน์
ทดสอบ
กลุ่มคาสั่ง 1
เท็จ
จริง
กลุ่มคาสั่ง 2
if (นิพจน์ทดสอบ) ประโยคที่ทาเมื่อผลจากนิพจน์ทดสอบเป็นจริง;
else ประโยคที่ทาเมื่อผลจากนิพจน์ทดสอบเป็นเท็จ;
15. คาสั่ง if ซ้อน if (nested if)
คาสั่ง if ซ้อน if จะใช้กับปัญหาที่มีเงื่อนไขซับซ้อน อย่างเช่น กาหนดว่าต้องเป็นจานวนคู่และมีค่าไม่เกิน 20 หรือ เงื่อนไขต้องเป็นเพศหญิงอายุไม่เกิน
30 ปี เป็นต้น
ซึ่งคาสั่ง if ซ้อน if ก็คือคาสั่ง if ตามปกติ แต่เรานามาเขียนซ้อนกันมากกว่า 1 ชั้น ซึ่งมีรูปแบบการเรียกใช้งาน ดังนี้
if (condition-1)
{
if (condition-2)
{
...
if (condition-n)
statement;
}
}
16. ตัวอย่างโปรแกรมแบบ nested-if
main()
{
int num;
printf(“Enter your number : ”);
scanf(“%d”,&num);
if (num>=20)
{
if (num<=30)
{
if (num%2==1)
printf(“Right numbern”);
else
printf(“Wrong numbern”);
}
else
printf(“Large numbern”);
}
else
printf(“Small numbern”);
}
22. ตัวอย่างโปรแกรมแบบ The Infinite Loop
• #!/usr/bin/python
• var = 1
• while var == 1 : # This constructs an infinite loop
• num = raw_input("Enter a number :")
• print "You entered: ", num
• print "Good bye!"
25. ตัวอย่างโปรแกรมแบบ Python break statement
• #!/usr/bin/python
• for letter in 'Python': # First Example
• if letter == 'h':
• break
• print 'Current Letter :', letter
•
• var = 10 # Second Example
• while var > 0:
• print 'Current variable value :', var
• var = var -1
• if var == 5:
• break
• print "Good bye!"
27. ตัวอย่างโปรแกรมแบบ Python continue statement
• #!/usr/bin/python
• for letter in 'Python': # First Example
• if letter == 'h':
• continue
• print 'Current Letter :', letter
• var = 10 # Second Example
• while var > 0:
• var = var -1
• if var == 5:
• continue
• print 'Current variable value :', var
• print "Good bye!"
29. ตัวอย่างโปรแกรมแบบ Python pass Statement
• #!/usr/bin/python
• for letter in 'Python':
• if letter == 'h':
• pass
• print 'This is pass block'
• print 'Current Letter :', letter
• print "Good bye!"
31. • หากลาดับประกอบด้วยรายการนิพจน์จะได้รับการประเมินก่อนจากนั้นรายการแรกในลาดับจะถูกกาหนดให้iterating ตัวแปร iterating_var
ถัดไปบล็อคคาสั่งจะถูกดาเนินการแต่ละรายการในรายการจะถูกกาหนดให้เป็น iterating_var และชุดคาสั่งจะถูกดาเนินการจนกว่าลาดับทั้งหมด
จะหมดลง
• ตัวอย่างโปรแกรมแบบ Python for Loop Statements
• #!/usr/bin/python
• for letter in 'Python': # First Example
• print 'Current Letter :', letter
• fruits = ['banana', 'apple', 'mango']
• for fruit in fruits: # Second Example
• print 'Current fruit :', fruit
• print "Good bye!"
33. การใช้else Statement with Loops
• Python สนับสนุนการมีคาสั่งอื่นที่เชื่อมโยงกับคาสั่ง loop
• ถ้าคาสั่ง else ถูกใช้กับfor loop คาสั่ง else จะถูกดาเนินการเมื่อลูปได้หมดไป
• ถ้าคาสั่ง else ถูกใช้กับwhile loop คาสั่ง else จะถูก execute เมื่อเงื่อนไขเป็น false
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการรวมกันของคาสั่งelse กับคาสั่ง for สาหรับค้นหาตัวเลขที่สาคัญตั้งแต่ 10 ถึง 20
#!/usr/bin/python
for num in range(10,20): #to iterate between 10 to 20
for i in range(2,num): #to iterate on the factors of the number
if num%i == 0: #to determine the first factor
j=num/i #to calculate the second factor
print '%d equals %d * %d' % (num,i,j)
break #to move to the next number, the #first FOR
else: # else part of the loop
print num, 'is a prime number'