Sunday, July 31, 2016

เริ่มเขียนภาษา Python : เริ่มใช้ if, if elseและ recursive function

คำสั่ง if คืออะไร ??
       คำสั่ง if คือคำสั่งที่ทำให้จะให้คำสั่งทำงานต่อเมื่อเงื่อนไขที่กำหนดไว้เป็นจริง ถ้ายกตัวอย่างเป็นมนุษย์ของเรา ง่ายๆ เช่น ถ้า เงินพอ สามารถซื้อของชิ้นนั้นได้ ประมาณนี้ 
มารู้จักกับหน้าตาของ if กันก่อน
       ถ้า เงื่อนไข(condition) เป็นจริงจะให้ทำใน statement
ตัวอย่างการเขียน if 

       จากภาพจะเห็นว่า x ในตอนแรกมีค่าเท่ากับ 5 ดั่งนั้น 5 < 10 เป็นจริงทำให้ x บวกเพื่มขึ้น 1 เป็นเท่ากับ 6 


       จากภาพจะเห็นว่า x ในตอนแรกมีค่าเท่ากับ 10 ดั่งนั้น 10 <10 เป็นเท็จ ทำให้ x ไม่ถูกบวก ทำให้ x มีค่าเท่าเดิมคือ 10



       เงื่อนไข สามารถ ใส่ and, or, not มาใส่ร่วมกันได้

ตัวอย่าง เงื่อนไขที่มี and, or, not
       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 5 ดั่งนั้น 5 < 10 เป็นจริง และ 5 > 0 เป็นจริง [จริง และ จริง] จะได้ จริง ทำให้ x เพื่มขึ้น 1 เป็นเท่ากับ 6 
ตัวอย่างที่ 2 

       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 0 ดั่งนั้น 0 < 10 เป็นจริง และ 0 > 0 เป็นเท็จ [จริง และ เท็จ] จะได้ เท็จ ทำให้ x เท่าเดิม คือ 0 

       ถ้าต้องการให้ทำงานแต่ตอนที่ condition เป็นเท็จก็สามารถทำได้โดยใส่คำสั่ง else 
ตัวอย่าง if else

       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 15 ดั่งนั้น 15 < 10 เป็นเท็จ ทำให้ x ถูกเปลียนค่าเป็น 0
       หากต้องการความซับซ้อนของโปรแกรมมากขึ้น สามารถเขียนแบบ Chained statements ได้
       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 15 ดั่งนั้น 15 < 10 เป็นเท็จ เลยมาดูที่เงื่อนไขต่อไป  15 > 20 เป็นเท็จ ทำให้ x ถูกเปลียนค่าเป็น 50 
ตัวอย่างที่ 2 
       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 25 ดั่งนั้น 25 < 10 เป็นเท็จ เลยมาดูที่เงื่อนไขต่อไป  25 > 20 เป็นจริง ทำให้ x ถูกเปลียนค่าเป็น 0
       Nested statements คืออะไรจากตัวอย่างก่อนหน้านี้เป็นการเขียน if else แบบต่อก่อน(Chained statements) แต่Nested  นั้นคือการเขียน if ซ้อน if 
       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 5 และ a เท่ากับ 3 ดั่งนั้น 5 < 10 เป็นเป็นจริง เลยมาดูที่เงื่อนไขต่อไป  3 < 5 เป็นจริง ทำให้ a ถูกเพื่มค่าเป็น 4
       จากภาพจะเห็นได้ว่า x ในตอนแรกมีค่าเท่ากับ 5 และ a เท่ากับ 7 ดั่งนั้น 5 < 10 เป็นเป็นจริง เลยมาดูที่เงื่อนไขต่อไป  7 < 5 เป็นเท็จทำให้ a ถูกลดค่าเป็น 6

       recursive function คือการเขียน function ที่สามารถเรียกใช้ตัวเองได้พูดอาจจะไม่เข้าใจ มาดูตัวอย่างกัน 
ผลลัพธ์
       เป็นตัวอย่างการ recursive ของ function factorial การทำงานคือ

ส่ง 1 ไปที่ factorial (0)

1 * 1 = 1  ส่ง 1 ไปที่ factorial (1)

2 * 1 = 2  ส่ง 2 ไปที่ factorial (2)

3 * 2 = 6  ส่ง 6 ไปที่ factorial (3)

4 * 6 = 24 ส่ง 24 ไปที่ factorial (4)

5 * 24 = 120 ส่ง 120 ไปที่ factorial (5)

สุดท้าย factorial (6) จะเท่ากับ 6 * 120 = 720 

การเขียน recursive function ต้องใช้การฝึกฝนอยู่ระยะนึงเพราะมีความซับซ้อนอยู่ระดับนึง ถ้าได้เขียนบ่อยๆ 
recursive function สามารถเอาไปใช้ทำอะไรได้บ่าง
> sum from 1 to N                >> 1+2+3...+N
> Fibonacci number             >> f(n) = f(n-1) + f (n-2)
> gcd                                     >> (greatest common divisor)


แบบฝึกหัด 
 เบื่อยังเขียนโปรแกรมคำนวณเกรด ?? ถ้ายังไม่เบื่อ ลองเขียนไปก่อนก็ได้ เพราะว่ามีโอกาศสูงมากมากมาก ที่จะได้เขียนโปรแกรมคำนวนเกรดจริงๆ ตอนเรียน เขียนไว้ก่อนก็ไม่เสียหาย :) 
>>> โปรแกรมตรวจสอบ  Leap Year ว่าปีที่ใส่ลงไปเป็น  Leap Year หรือไม่  Leap Year คือปีที่ เดือนกุมภา มี 29 วัน โดยปีทีจะเป็น  Leap Year ได้นั้น ต้อง หารด้วย 4 ลงตัว ยกเว้นปีที่ลงด้วย หลักร้อย เช่น 1900 1600 เอาง่ายๆ ปีที่ลงท้ายด้วย 00 ต้องหารด้วย 400 ลงตัว ถึงจะเป็น  Leap Year เช่น 
2016 เป็น Leap Year
2000 เป็น Leap Year
1800 ไม่เป็น  Leap Year










No comments:

Post a Comment