คำสั่ง 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