การเลือกทำแบบ IF
การเลือกทำ
การเลือกทำหมายถึงการกำหนดให้โปรแกรมทำงานอย่างหนึ่งเมื่อเงื่อนไขเป็นจริงและทำงานอีกอย่างหนึ่งเมื่อ เงื่อนไขเป็นเท็จ ตัวอย่างการเลือกทำที่อาจพบได้บ่อย เช่น การเตือนให้เลือกบันทึกข้อมูลไว้ในดิสก์ คือ
SAVE (Y/N)
ถ้าเราเลือก Y ข้อมูลจะถูกบันทึกเข้าในดิสก์
ถ้าเราเลือก N จะไม่มีการบันทึกข้อมูล
การให้เลือกว่าจะใช้โปรแกรมนั้นต่อหรือไม่ คือ
CONTINUE (Y/N)
ถ้าเราเลือก Y โปรแกรมจะทำงานต่อไป
ถ้าเราเลือก N โปรแกรมหยุดทำงาน
ลักษณะการเลือกทำแบบ IF
การเลือกทำรูปแบบ IF มีลักษณะดังรูปที่ 1
ภาพแสดงรูปแบบการเลือกทำแบบ IF
รูปแบบของการเลือกทำแบบ IF เป็นดังนี้
คอมพิวเตอร์จะเลือกทำงานตามเงื่อนไข โดยใช้เงื่อนไขเป็นจริงจะทำงานตามคำสั่ง 1 (ที่อยู่ต่อจาก THEN) แต่ถ้าเงื่อนไขเป็นเท็จ จะทำงานตามคำสั่ง 2 (ที่อยู่ต่อจาก ELSE)
ELSE และ คำสั่ง 2 จะมีหรือไม่มีก็ได้
ตัวอย่างการเลือกทำแบบ IF
ตัวอย่าง โปรแกรมรับอายุเข้าไปเปรียบเทียบ ถ้าอายุมากกว่า 55 คอมพิวเตอร์จะแสดงข้อความ “คุณเป็นคนสูงอายุ”และถ้าอายุตั้งแต่ 55 ลงมาคอมพิวเตอร์จะแสดงข้อความ“คุณเป็นวัยรุ่น”
PROGRAM YoungOld; VAR Age : Real; BEGIN Write( ‘Your Age = ‘); ReadLn(Age); IF Age > 55 THEN WriteLn( ‘You are Old’) ELSE WriteLn( ‘You are Young’); ReadLn END. |
การเลือกทำแบบ IF ซ้อนกัน (Nested IF)
การเลือกทำแบบ IF ในบางโปรแกรมจะต้องทำซ้ำกัน ลักษณะโครงสร้างของการเลือกทำแบบ IF ซ้อนกันเป็นดังนี้
|
จำนวนครั้งของการเลือกทำซ้ำมีได้มากเท่าที่ต้องการ สำหรับ ELSE จะมีหรือไม่ก็ได้
ตัวอย่าง การหาปี ค.ศ. ใดที่เดือนกุมภาพันธ์มี 29 วัน มีหลักการดังนี้
ถ้า ปี มากกว่า 0
ถ้า ปี หารด้วย 100 ลงตัว
และหารด้วย 400 ลงตัว นั้น กุมภาพันธ์มี 29 วัน
มิฉะนั้น ต้องหารด้วย 4 ลงตัว กุมภาพันธ์ จะต้องมี 29 วัน
โปรแกรม จะรับข้อมูลปี ค.ศ. จากคีย์บอร์ดเข้าไป แล้วตรวจดูว่าเป็นปีที่เดือนกุมภาพันธ์มี 29 วัน (leap year) หรือไม่ และแสดงผลการตรวจสอบที่จอภาพ
Program LeapYearOrNot; VAR LeapYear : Boolean; Year : integer; Begin WriteLn('Leap Year or Not ?'); REPEAT WriteLn; Write('Enter Year (0=End)'); ReadLn(Year); IF Year > 0 THEN Begin IF Year MOD 100 = 0 THEN LeapYear := (Year MOD 400)=0 ELSE LeapYear := (Year MOD 4)=0; IF LeapYear THEN WriteLn(Year,' is a Leap year') ELSE WriteLn(Year,' is not a Leap year'); END UNTIL Year=0 END. |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น