วันอาทิตย์ที่ 28 ธันวาคม พ.ศ. 2557

คำสั่งเงื่อนไข

คำสั่งเงื่อนไข 


ข้อมูลทางตรรกะและตัวดำเนินการ 

ข้อมูลทางตรรกะในภาษา C (Logicak Data)


     ในภาษา C นั้นจะไม่มีตัวแปรชนิดข้อมูลแบบตรรกะ แต่ภาษา C จะ

ใช้ชนิดข้อมูลอื่นแทน โดยจะใช้ชนิดข้อมูล int และ Char แทน ถ้า

ข้อมูลเป็น 0 แสดงว่าเป็นเท็จ ถ้าข้อมูลไม่เป็น 0 แสดงว่าเป็นจริง 

                                     
                

รูปที่ 6 – 1 แสดงแนวคิดของค่าจริงและเท็จ บนกราฟจำนวน

ตัวดำเนินการทางตรรกะ
            
     ในภาษา C มีตัวดำเนินการทางตรรกะ 3 ตัว ซึ่งแสดงใน
ตารางที่ 6 – 1 
 
ตารางที่ 6 – 1 ตัวดำเนินการทางตรรกะ


ตัวดำเนินการ
ความหมาย
ลำดับความสำคัญ
!
not
15
&&
and
5
||
or
4

     not ตัวดำเนินการ not มีลำดับความในระดับ 15 จะใช้
นำหน้าตัวแปรที่ต้องการ ความหมาย คือ จะเปลี่ยนจากคำที่เป็น
จริงให้เป็นเท็จ หรือกลับกัน หรือเปลี่ยนจาก 0 เป็น 1 ซึ่งตาราง
ความจริงของ not ซึ่งแสดงในรูปที่ 6 – 2
     and ตัวดำเนินการ and (&&)มีลำดับความในระดับ 5 
ใช้เชื่อม 2 เงื่อนไขหรือมากกว่า จะให้เป็นจริงเมื่อเงื่อนไขทั้งสอง
หรือทั้งหมดเป็นจริง และจะให้เป็นเท็จ เมื่อมีอย่างน้อย 1 เงื่อนไข
เป็นเท็จ ซึ่งตารางความจริงของ and แสดงในรูปที่ 6 – 2 

     or ตัวดำเนินการ or (||)มีลำดับความในระดับ 5 ใช้
เชื่อม 2 เงื่อนไขหรือมากกว่าจะให้เป็นจริง เมื่อมีอย่างน้อย 1 
เงื่อนไขเป็นจริง และจะให้เป็นเท็จ เมื่อเงื่อนไขทั้งสองหรือทั้งหมด
เป็นเท็จ ซึ่งตารางความจริงของ or แสดงในรูปที่ 6 – 2
Not                                                                      !

x
!x
เท็จ
จริง
จริง
เท็จ
x
!x
0
1
=0
0
And                                                                     &&

x
y
X&&y
เท็จ
เท็จ
เท็จ
เท็จ
จริง
เท็จ
จริง
เท็จ
เท็จ
จริง
จริง
จริง
x
y
x&&y
0
0
0
0
=0
0
=0
0
0
=0
?0
1




Or                                                                        ||

x
y
X||y
 เท็จ
เท็จ
เท็จ
เท็จ
จริง
จรืง
จริง
เท็จ
จรืง
จริง
จริง
จริง
x
y
x||y
0
0
0
0
?0
1
?0
0
1
?0
?0
1
         





ทางตรรกะ                                                                                                     ในภาษาซี                           
โปรแกรม 6-1 แสดงผลการกระทำของตัวดำเนินการทางตรรกะ


ผลลัพธ์ที่ได้
5 && -3     is 1
5 &&  0     is 0
5 &&  5     is 0
0 &&  5     is 0
5 | |  0         is 1
0 | |  5         is 1
0 | |  0         is 0
! 5 && ! 0  is 0
! 5 && 0    is 0
5 && ! 0    is  1

ตัวดำเนินการทางการเปรียบเทียบ
     ในภาษาC มีตัวดำเนินการทางการเปรียบเทียบทั้งหมด6ตัว 
ทั้งหมดจะเป็นตัวดำเนินการที่จะทำการเปรียบเทียบระหว่างค่า2ค่า 
และจะให้ผลลัพธ์ออกมาเป็นจริง  (1) หรือเท็จ  (0)  
เท่านั้น ซึ่งตัวดำเนินการทางการเปรียบเทียบแสดงในตารางที่ 6-2

ตารางที่ 6-2 แสดงผลของตัวดำเนินการทางการเปรียบเทียบ


ตัวดำเนินการ
ความหมาย
ลำดับความสำคัญ
น้อยกว่า

<=
น้อยกว่าหรือเท่ากับ
10
มากกว่า

>=
มากกว่าหรือเท่ากับ

==
เท่ากับ
9
!=
ไม่เท่ากับ


โปรแกรม 6-2 แสดงผลของตัวดำเนินการทางการเปรียบเทียบ

 

ผลลัพธ์ที่ได้
5 <-3     is 0
5 == -3  is 0
5 != 3    is 1
5 > -3    is 1
5 <= -3  is 0
5 >= -3  is 1

คำสั่ง 2 ทางเลือก

     คำสั่ง 2 ทางเลือกเป็นพื้นฐานของคำสั่งเงื่อนไขในภาษา
คอมพิวเตอร์นั้น คำสั่งประเภทนี้จะต้องมีเงื่อนไขการตัดสินใจ เพื่อ
ใช้หาคำตอบว่าจะไปทางไหน ถ้าเงื่อนไขเป็นจริงก็จะไปทำคำสั่ง
ทางหนึ่ง  แต่ถ้าเงื่อนไขเป็นเท็จก็จะไปทำคำสั่งอีกทางหนึ่ง ผัง
การทำงานของคำสั่ง 2 ทางเลือก

       

     If…else คำสั่ง if…else นี้ จะต้องใช้เงื่อนไขเพื่อใช้
เลือกว่าจะทำคำสั่งไหน ตามรูปที่ 6-4 แสดง ผังการทำงานของ
คำสั่ง if…else ถ้าเงื่อนไขเป็นจริงก็จะไปทำคำสั่งที่ 1 แต่
เงื่อนไขเป็นเท็จก็จะไปทำคำสั่งที่ 2 ซึ่งไม่มีโอกาสที่จะทำทั้งสอง
คำสั่งได้เลย


 
                                            
รูปที่  6-4 

แสดงผังการทำงานของคำสั่ง 2 ทางเลือก

     มีรูปแบบบางอย่างที่ผู้ใช้จะต้องจำให้ได้ สำหรับคำสั่ง  
if…else  ซึ่งมีดังนี้

1. เงื่อนไจจะต้องอยู่ในวงเล็บเท่านั้น

2. ไม่มีเครื่องหมาย ; หลังจบคำสั่ง if และ else แต่เมื่อจบ

คำสั่งที่ 1 และ คำสั่งที่ 2 จะต้องมีเครื่องหมาย ; ตามปรกติ 

ดังแสดงในรูปที่ 6-5


รูปที่ 6-5 แสดงตัวอย่างของคำสั่ง if…else

     หลังคำสั่ง if หรือ else อาจจะมีหรือไม่มีคำสั่งก็ได้ 

ทั้งคำสั่งที่ 1 และคำสั่งที่ 2 สามารถมีได้เพียง 1 คำสั่งเท่านั้น 

แต่ถ้าผู้ใช้ต้องการให้มีหลายคำสั่ง จะต้องใส่เข้าไปในวงเล็บ หรือ

แบบ Compound Statement ดังแสดงในรูปที่ 6-5
      
                                              
 รูปที่ 6-6 แสดงการใช้วงเล็บเข้ามาช่วยในคำสั่ง   

if…else
         If คำสั่ง if ก็คือ คำสั่ง if…else แต่ที่ไม่มี 
    else เพราะคำสั่งทางเป็นเท็จไม่มี หรือจากรูปที่ 6-4 ไม่มี
    คำสั่งที่ 2 นั่งเอง ซึ่งก็คือจะต้องเป็นจริงเท่านั้นจึงจะทำคำสั่ง
    ได้ จากรูปที่ 6-7แสดงให้ เห็นการเปลี่ยนจากคำสั่ง if…
    else เป็นคำสั่ง if



รูปที่ 6-7 แสดงการเปลี่ยนจากคำสั่ง if…else เป็นคำสั่ง 

if

     

    ผลลัพธ์ที่ได้
    Please enter two integers: 10 15
    10<=15

         Nested if เป็นคำสั่ง if…else มีคำสั่ง if…
    else หรือคำสั่ง if ซ้อนอยู่ด้านในอีกทีหนึ่งผังการทำงาน
    ของ Nested if และชุดคำสั่งได้แสดงในรูปที่ 6-8 ซึ่งการ
    ซ้อนนั้นสามารถมีได้ไม่จำกัด แต่ถ้ามีมากกว่า 3 ชั้น จะทำให้
    การทำความเข้าใจในโปรแกรมนั้นยาก
    ในโปรแกรม 6-3  คือโปรแกรมที่ปรับปรุงจากโปรแกรมที่  
    6-2 โดยใช้คำสั่ง Nested if เพื่อให้โปรแกรมนั้นสามารถ
    แสดงผลได้ถูกต้องมากที่สุด

     

            ก.ผังการทำงาน            ข.ชุดคำสั่ง                                                                     
รูปที่ 6-8 แสดงผังการทำงาน และคำสั่งของ Nested if

    โปรแกรม 6-4 คำสั่ง Nedsted if

     

    ผลลัพธ์ที่ได้
    Please enter two integers :10 10
    10 = = 10

    ปัญหาของคำสั่ง else
            
         ปัญหาของคำสั่ง 2 ทางเลือกนั้นก็คือ การจับคู่ระหว่าง
    คำสั่ง if กับคำสั่ง else ปัญหานี้ อาจจะเกิดขึ้นมาจาก
    ความไม่เข้าใจของผู้ใช้ ซึ่งส่งผลให้โปรแกรมที่เขียนทำงานไม่
    ตรงตามที่ผู้ใช้ต้องการการจับคู่ของ 2 คำสั่งนี้คือ ภาษา C จะ
    จับคู่ระหว่างคำสั่ง if กับ else ที่ใกล้กันที่สุดเป็นคู่กัน  วิธี
    การปกป้องคือ ให้เขียนชุดคำสั่งเป็นแบบ Compound 
    statement

     
       
     ก. ชุดคำสั่ง              ข. ผังการทำงาน 

รูปที่ 6-9 แสดงการจับคู่ที่ไม่ตรงตามความต้องการของผู้ใช้


     
            
     ก. ชุดคำสั่ง               ข. ผังการทำงาน 


  
   รูปที่ 6-10 แสดงการจับคู่ที่ถูกต้องตามความต้องการของผู้ใช้

    คำสั่งหลายทางเลือก
                
         นอกจากคำสั่ง 2 ทางเลือกแล้ว ภาษา C  ยังมีคำสั่ง
    หลายทางเลือกให้ใช้ด้วยเพื่อความสะดวกรวดเร็วในการเขียน
    และการทำความเข้าใจ เพราะไม่ต้องมานั่งเขียนโปรแกรมที่ยาว

    Switch
         Switch เป็นคำสั่งที่แปลงมาจากคำสั่งNested if 

    คำสั่งนี้จะมีตัวแปรหนึ่งตัวที่ใช้หาว่าจะไปทำที่คำสั่งไหนหรือ 

    case ไหน ซึ่งในรูปที่ 6-11 แสดงผังการทำงานคำสั่ง 

    switch ผู้ใช้สามารถสร้าง case ให้มีจำนวนตามต้องการได้ 
    และชุดคำสั่งของคำสั่ง switch นั้นได้แสดงในรูปที่ 6-12 

     


รูปที่ 6-11 แสดงผังการทำงานของคำสั่ง switch

    Switch(ตัวแปร)

    {
    Cass ค่าที่ 1: คำสั่ง
    ......
    Cass ค่าที่ 2: คำสั่ง
    ......
    Cass ค่าที่ n:  คำสั่ง
    .......
    Default:       คำสั่ง
    .......
      
          รูปที่ 6-12 แสดงชุดคำสั่ง switch

     จากรูปที่ 6-12 จะเห็นว่ามี case default ซึ่ง 

case นี้มีไว้สำหรับในกรณีที่ไม่ตรงกับ case ไหนเลย ก็ให้มาทำ


คำสั่งที่ case  default คำสั่ง case default นี้ไม่จำเป็น

ต้องมีก็ได้

    โปรแกรม 6-5 คำสั่ง switch


         ในโปรแกรมที่ 6-5 จะมีทั้ง 3 case ใน case แรก
    จะทำก็ต่อแปร PrintFlag เป็น 1 ใน case ที่ 2จะทำก็
    ต่อเมื่อตัวแปร printFlag เป็น 2 และใน case 
    Default จะทำก็ต่อเมื่อตัวแปร printFlag ไม่เป็นทั้ง 1 
    และ 2 ผลของโปรแกรม 6-5 ได้แสดงในรูปที่ 6-13
                                                                                     
          
 เมื่อ printFlag เป็น1 เมื่อ printFlag เป็น 2 เมื่อ printFlag ไม่เป็นทั้ง 1 และ 2 
                                                                                            
     รูปที่ 6-13 แสดงผลการทำงานของโปรแกรม 6-5 

            เมื่อ PrintFlag มีค่าต่าง ๆ

         จากรูปที่ 6-13 เมื่อ printFlag มีค่าเป็น 1 จะ
    แสดง ทั้ง 3 คำสั่งเลย ถ้า printFlag มีค่าเป็น 2 จะ
    ข้ามคำสั่งของ case แรก ไป และทำคำสั่งที่เหลืออีก 2  
    คำสั่ง และถ้า printFlag มีค่าที่ เป็นทั้ง 1 และ 2 จะ
    ข้ามคำสั่งของ Case แรกและ Case ที่สองไป และทำคำสั่ง
    ใน Case Defaultg เพียง 1 คำสั่งเท่านั้น แต่ถ้าผู้ใช้
    ต้องการที่จะให้ทำคำสั่งที่อยู่ในเฉพาะ Case ใด Case 
    หนึ่ง ผู้ใช้จะต้องใช้คำสั่ง Bread เข้ามาช่วย เพื่อให้เมื่อทำ
    คำสั่งใน Case นั้น ๆ เสร็จแล้วให้กระโดนออกจากชุดคำสั่ง 
    Switch และโปรแกรมจะได้ไม่ไปทำคำสั่งใน Case อื่น ๆ 
    ด้วย ซึ่งโปรแกรมที่ 6-6 เป็นโปรแกรมที่แก้ไขจากโปรแกรมที่ 
    6-5 โดยการใช้คำสั่ง Break เข้าไป และรูปที่ 6-14 เป็น
    ผลของโปรแกรมที่ 6-6

    โปรแกรม 6-6 คำสั่ง Switch โดยมรคำสั่ง Break เข้ามา
    ช่วย 

          

     
เมื่อ printFlag เป็น 1  เมื่อ printFlag เป็น 2 เมื่อ printFlag  ไม่เป็นทั้ง 1และ2 
    รูปที่ 6-14 แสดงผลการทำงานของโปรแกรม 6-6 เมื่อ 

    printFlag มีค่าต่าง ๆ

         ในโปรแกรมที่ 6-7 เป็นโปรแกรมการตัดเกรด โดยมี
    ขอบเขตดังนี้ มากกว่า 79 ได้ A 70 – 79 ได้       
    B  60 -69 ได้ C  50 – 59 ได้ D และน้อยกว่า 50 
    ได้ F

    โปรแกรม 6-7 โปรแกรมตัดเกรด


    กล่องข้อความ: ผลลัพธ์ที่ได้        Enter the test score (0 -100): 89   The grade is :  A




         else –if ตัวแปรที่ใช้ในคำสั่ง Switch นั้นจะต้อง
    เป็นชนิดข้อมูลที่เป็นจำนวนเต็มเท่านั้น แต่ถ้าเมื่อไรที่ต้องใช้
    ตัวแปรที่เป็นชนิดข้อมูลทศนิยม ก็จะไม่สามารถใช้คำสั่ง 
    Switch ได้ แต่ภาษา C ก็ได้มีคำสั่งอีกคำสั่งหนึ่งที่เป็นคำสั่ง
    หลายทางเลือกและสามารถใช้ได้กับชนิดข้อมูลทุกประเภทคำสั่ง
    นั้นก็คือ Else – if ซึ่งชุดคำสั่งเหมือนกับคำสั่งif–else 
    แต่ต่างกันตรงที่ในคำสั่งelse ใช้ต่อด้วยคำสั่ง if ได้
    เลย ดังเช่นตัวอย่างด้านล่าง

    if(score>=80)
    grade = ‘A’
    else if (scor>=70)
    grade = ‘B’

                
     รูปที่ 6-8 แสดงผังการทำงานของโปรแกรมที่ 6-8 


    ผลลัพธ์ที่ได้
     Enter thetest score (0-100): 75


     The grade is B









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

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