วันจันทร์ที่ 19 กันยายน พ.ศ. 2554

การเลือกทำแบบ CASE

การเลือกทำแบบ CASE

ทางเลือกที่มีจำนวนมาก

ในกรณีที่การเลือกทำมีรายการให้เลือกมากไป การเลือกทำแบบ IF ก็อาจจะมีผลให้โปรแกรมมีความยาวเกินความจำเป็น และทำให้อ่านเข้าใจยาก
ลักษณะของการเลือกทำแบบ CASE
การเลือกทำแบบ CASE มีลักษณะดังต่อไปนี้
CASE  ตัวแปร  มีค่า
     เท่ากับ ค่าคงที่                              :  ทำ คำสั่ง ก.
     เท่ากับ ค่าคงที่ 1 หรือค่าคงที่ 2          :  ทำ คำสั่ง ข.
     อยู่ในช่วงของ คำสั่ง A ถึงค่าคงที่ N   :  ทำ คำสั่ง ค.
     ELSE                                                        ทำ คำสั่ง ง.
END
รูปแบบของการเลือกทำแบบ CASE
การเลือกทำแบบ CASE มีรูปแบบดังต่อไปนี้
CASE  ค่าของตัวแปร OF
     ค่าคงที่ [, ค่าคงที่]  :  คำสั่ง
     ค่าคงที่ .. ค่าคงที่   :  คำสั่ง
     ELSE
END
ค่าของค่าคงที่จะต้องเป็นข้อมูลชนิดเดียวกันกับตัวแปร สำหรับ [, ค่าคงที่] ค่าคงที่.. ค่าคงที่ และ ELSE จะมีหรือไม่มีก็ได้ ส่วนคำสั่งจะเป็นคำสั่งเดียวหรือผสมคำสั่งก็ได้
            คอมพิวเตอร์จะทำงานตามเงื่อนไขที่สอดคล้องกันระหว่างตัวแปรกับค่าคงที่ โดยถ้าค่าของตัวแปรเท่ากับค่าคงที่ค่าใดแล้ว โปรแกรมจะทำงานตามคำสั่งทีอยู่ต่อจากเครื่องหมาย  :  แต่ถ้าไม่มีเงื่อนไขที่สอดคล้องกัน โปรแกรมจะทำงานตามคำสั่งที่อยู่ต่อจาก ELSE
ตัวอย่างโปรแกรมปรับปรุงจากโปรแกรมเดิม โดยเปลี่ยนการเลือกทำจาก IF เป็น CASE แต่การทำงานของโปรแกรมยังคงเหมือนเดิม คือ แสดงอักษรย่อของสีให้เลือก เมื่อเลือกอักษรตัวหนึ่งแล้ว โปรแกรมจะแสดงชื่อเต็มของสีนั้นที่จอภาพ ขอให้สังเกตการใช้ CASE ซึ่งทำให้โปรแกรมสั้นลง และอ่านเข้าใจง่ายขึ้น






PROGRAM CaseColor;
VAR
            Choice                :   Char;
            UserQuits           :   Boolean;
BEGIN
WriteLn( 'What is Color ? ');
UserQuits := False;
REPEAT
     Write( 'Select B G O P R Y or Q.uit ');
     ReadLn( Choice );
     CASE Choice OF
            'B', 'b' : WriteLn( 'B is Blue'); { B หรือ b }
            'G', 'g' : WriteLn( 'G is Green');
            'O', 'o' : WriteLn( 'O is Orange');
            'P', 'p' : WriteLn( 'P is Purple');
            'R', 'r' : WriteLn( 'R is Red');
            'Y', 'y' : WriteLn( 'Y is Yellow');
            'Q', 'q' : UserQuits := True;
            ELSE WriteLn( 'Error : Try again ')
     End
UNTIL UserQuits
END.

การเลือกทำแบบ CASE ซ้อนกัน
ในบางกรณีการเลือกทำแบบ CASE จะต้องใช้ซ้อนกัน ซึ่งมีโครงสร้างดังนี้
CASE ค่าของ ตัวแปร OF { CASE 1 }
     ค่าคงที่ : CASE ค่าของตัวแปร OF { CASE 2 }
                                     ค่าคงที่  : คำสั่ง

                                     ELSE  คำสั่ง
                            END  { CASE 2 }
     ค่าคงที่ : คำสั่ง
     ELSE            คำสั่ง
END  { CASE 1 }


ไม่มีความคิดเห็น:

แสดงความคิดเห็น