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

รหัสควบคุม


รหัสควบคุม

     สำหรับรูปแบบของรหัสควบคุมนั้น จะเริ่มต้นด้วยตัว

อักษร back slash(\)จากนั้นก็ตามด้วยตัวอักษรพิเศษ 

รหัสควบคุมที่นิยมใช้กันทั่วไปมีดังนี้คือ



ค่าคงที่ตัวอักษร 
รหัสควบคุม
Bell(Alert) 
\a
Backspace 
\b
Horizontal tab 
\t
Newline(Line Feed) 
\n
Vertical tab 
\v
Form feed
\f
Carriage return 
\r
Quotation mark(“) 
\”
Apostrophe(‘) 
\'
Null
\0










จุดเด่น-จุดด้อยของภาษาซี


จุดเด่นของภาษาซี
        
     คือ สั้น กะทัดรัด ภาษาซี มีรูปแบบย่อทำให้เขียนสั้นลงอยู่

มาก ซึ่งข้อดีก็คือ สั้นดี แต่ข้อเสีย ก็คือ ซับซ้อน อ่านยาก เวลา

อ่านก็เหมือนกับการแก้สมการ ซึ่งการเขียนจะยาก แต่ก็ได้รับความ

นิยม และการใช้ วงเล็บปีกกา ซึ่งดูคล้ายกับวงเล็บธรรมดา จุด

อ่อนอีกจุดหนึ่งที่สำคัญของภาษาซีก็คือภาษาซี มองทุกอย่าง

เป็น Case Sensitiveทำให้เขียนโปรแกรมแล้วหลง

เรื่อง Case เป็นประจำ


จุดเด่นที่สุดของภาษาซี
        
     คือการรองรับ pointer นั้นอาจจะมองได้ว่าคือจุดอ่อน

ที่สุดของภาษาซี ทำไมถึงเป็นเช่นนั้นpointer คือความสามารถที่

ภาษาอนุญาตให้เราสามารถอ่านเขียนหน่วยความจำได้โดยตรง ซึ่ง

ประสิทธิภาพสูงมาก (สูสีกับภาษา Assembly) เปรียบได้กับเรา

เปิดร้านขายของชำ แล้วบอกลูกค้าว่า เพื่อความรวดเร็ว ไปหยิบ

ของเองเลย แล้วมาจ่ายเงินก็แล้วกัน ซึ่งวิธีนี้เร็วมากลูกค้าไม่ต้องรอ

เราเป็นผู้หยิบให้เลย เขาหยิบได้เอง แต่ความสะดวกนี้ ก็ต้องแลก 

ถ้าลูกค้าคนนั้นเมา เดินเตะของพังหมด หรืออาจจะขโมยด้วยซ้ำ 

อีกปัญหาหนึ่ง ก็คือตัวของภาษาซี ไม่มีตัวจัดการจองหน่วยความจำ

ในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำ

แบบ Dynamic ภาษาซี ทำ wrapperเพื่อติดต่อกับ OS เพื่อ

ขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่าง

โปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืม

บอก OS ว่าเลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะ

ถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอน

เช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot 

ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว 

หรือMemory Leak ถึงแม้วันนี้ ภาษาซี ก็เสื่อมความนิยมไปมาก

แล้ว ตั้งแต่ GUI OS อย่างWindows เข้ามามีบทบาทภาษาซี

ปรับตัวเองเข้ากับการเขียนโปรแกรมแบบ GUI ไม่ค่อยได้ จึงเสื่อม

ความนิยมไปเกือบหมด คงเหลือแต่การใช้งานบน UNIX เท่านั้น 

ที่ยังคงพอใช้ภาษาซีกันอยู่

จุดด้อยของภาษาซี
        
     ภาษาซี ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลา

เราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C 

ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำ

โดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรา

กับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่าเลิกจอง

หน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะ

เห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้า

ลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของ

ปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak















การประยุกต์ใช้งานโปรแกรมด้วยภาษาซี

การประยุกต์ใช้งานโปรแกรมด้วยภาษาซี


     ภาษาซีเป็นภาษาระดับสูงที่สามารถทำงานแบบภาษาระดับ

ต่ำ(assembly language)ได้ ด้วยลักษณะการใช้งานของ        
     
     ภาษาและตัวแปลภาษาที่มีความสามารถแปลงโปรแกรมได้

อย่างมีประสิทธิภาพ การประยุกต์ใช้งานภาษาซีเพื่อเขียนโปรแกรม

จึงสามารถทำได้อย่างหลากหลายเช่น การคำนวณทางคณิตศาสตร์  

การจัดการแฟ้มข้อมูล การเขียนโปรแกรมระบบปฏิบัติการ 

การควบคุมอุปกรณ์ต่อพ่วงกับคอมพิวเตอร์  หรือใช้สร้างโปรแกรม

ประยุกต์อื่นๆ   ทั้งนี้ต้องมีการพิจารณาถึงฟังก์ชันการใช้งานของ

ภาษาและตัวแปลภาษาด้วย การเขียนโปรแกรมด้วยภาษาซี ไม่

เพียงต้องรู้รูปแบบภาษา(syntax) เท่านั้น แต่จำเป็นต้องรู้ขั้น

ตอนการสร้างโปรแกรมด้วย เพื่อให้โปรแกรมสามารถทำงานได้ครบ

ตามความต้องการอย่างถูกต้อง


ขั้นตอนการพัฒนาโปรแกรม

สามารถแบ่งขั้นตอนต่างๆ ได้เป็น

1.1  การระบุความต้องการใช้งาน  เป็นขั้นตอนการอธิบาย

ลักษณะของงานที่ต้องการนำโปรแกรมใช้

1.2  การระบุรายละเอียดการทำงานของโปรแกรม เป็นขั้น

ตอนที่อธิบายว่าจะใช้โปรแกรมไปทำอะไรบ้างในงานที่ได้ระบุ

ความต้องการนั้น

1.3  การออกแบบโปรแกรม เป็นขั้นตอนที่นำรายละเอียดการ

ทำงานของโปรแกรมมาออกแบบโดยการเขียนalgorithms 

หรือ ลักษณะข้อมูลที่จะต้องใช้ในโปรแกรม

1.4  การเขียนโปรแกรม เป็นขั้นตอนที่นำการออกแบบ

โปรแกรมไว้มาเขียนเป็นคำสั่งในภาษาคอมพิวเตอร์ 

เพื่อสร้างเป็นโปรแกรมที่สมบูรณ์

1.5  การทดสอบโปรแกรม เป็นขั้นตอนเพื่อทดสอบ

โปรแกรมเพื่อหาข้อผิดพลาด และหน้าที่ของโปรแกรม

1.6  การแก้ไขโปรแกรม เป็นขั้นตอนที่ใช้แก้ไขส่วนผิด

พลาดจากการทดสอบให้ถูกต้อง และนำไปทดสอบอีกครั้ง

1.7  การนำโปรแกรมไปใช้งาน เป็นขั้นตอนการนำโปรแกรม

ที่ผ่านจากการทดสอบแล้วไปใช้งานยังระบบงานที่ต้องการ

1.8  การบำรุงรักษาโปรแกรม เป็นขั้นตอนการนำโปรแกรมที่

มีข้อผิดพลาดที่พบจากการใช้งานจริงไปแก้ไข

1.9  การปรับปรุงและเปลี่ยนแปลงโปรแกรม เป็นขั้นตอน

การนำโปรแกรมที่ผ่านการใช้งานแล้ว และต้องการ

เปลี่ยนแปลงบางอย่าง เช่น เพิ่มเติมหน้าที่ , เปลี่ยนขั้นตอน

วิธีของโปรแกรมเพื่อเพิ่ม   ประสิทธิภาพการทำงาน เป็นต้น















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

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


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

ข้อมูลทางตรรกะในภาษา 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