: หน้าแรก

    : แนะนำการใช้บทเรียนออนไลน์

    : คำอธิบายรายวิชา
    : แบบทดสอบก่อนเรียน
    1. หลักการเขียนโปรแกรม
    2. ขั้นตอนการเขียนโปรแกรม
    3. โครงสร้างภาษาคอมพิวเตอร์
        - จุดประสงค์การเรียนรู้
         แบบทดสอบก่อนเรียน
        3.1 พื้นฐานภาษาซีเบื้องต้น
        3.2 ส่วนประกอบโปรแกรมภาษาซี
        3.3 ส่วนหัว (Header)
        3.4 ส่วนตัวแปร Global
        3.5 ส่วนชุดคำสั่ง (Main Program)
         แบบฝึกทักษะ
    4. กระบวนการเขียนโปรแกรม
    5. พอยน์เตอร์
    6. ฟังก์ชั่น
    7. การออกแบบโปรแกรมอย่างง่าย
    8. การโปรแกรมเพื่องานธุรกิจ
    : ข้อมูลผู้เรียน
    : แบบทดสอบหลังเรียน
    : แหล่งเรียนรู้เพิ่มเติม
    : ผู้จัดทำ
 
สวัสดีคุณ      รหัสประจำตัว     [ แก้ไขข้อมูล ] [ ออกจากระบบ ]  
               
   
                ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดย เดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่ เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดย เคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซี มีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียว กับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่า ภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกันความสามารถ ระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูงทำให้ ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิด ของข้อมูลนั้นได้เองทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซีนับได้ ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์
เดนนิส ริดชี [ อ่านประวัติ ]

การพัฒนาโปรแกรมภาษา C มีขั้นตอนดังนี้
                1) เขียนโปรแกรมต้นฉบับ source program) ด้วยภาษา C ใช้โปรแกรม Turbo C/ C++ เพื่อเขียนโปรแกรมต้นฉบับด้วยภาษา C จากนั้นบันทึกโปรแกรมพร้อมกับตั้งชื่อแฟ้มไว้ แฟ้มที่ได้จะมีนามสกุล *.c หรือ *.cpp เช่น simple.c หรือ simple.cpp เป็นต้น นอกจากนี้ยังสามารถใช้โปรแกรม Turbo C/C++ เขียนโปรแกรมภาษา C++ ได้อีกด้วย

                2) แปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง (object program) ใช้คำสั่ง compile เพื่อแปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง แฟ้มที่ได้จะมีนามสกุล *.obj ซึ่งในขั้นตอนนี้โปรแกรมต้นฉบับอาจเกิดความผิดพลาดทางไวยกรณ์ภาษา (syntax error) ขึ้นได้ จึงต้องย้อนกลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. ให้ถูกต้องเสียก่อน

                3) เชื่อมโยง (link) โปรแกรมภาษาเครื่องเข้ากับ library function ของภาษา C จะได้เป็น execute program โดยใช้คำสั่ง link แฟ้มที่ได้จะมีนามสกุล *.exe

                4) สั่งให้ execute program แสดงผลลัพธ์ออกมา โดยใช้คำสั่ง run

                ในขั้นตอนนี้ผู้เขียนโปรแกรม ควรตรวจสอบผลลัพธ์ที่ได้จากโปรแกรมว่าตรงกับความต้องการของเราหรือไม่ ถ้าผลลัพธ์ที่ได้ไม่ตรงกับความต้องการให้กลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. เสร็จแล้วทำขั้นตอน ข้อ 2. ถึง ข้อ 4. ซ้ำอีก ทำซ้ำเช่นนี้จนกว่าจะได้ผลลัพธ์ที่ต้องการ



รูปแสดงขั้นตอนการพัฒนาโปรแกรมภาษา C

                ภาษาซีเป็นภาษาชั้นสูงและเป็นภาษาที่มนุษย์เข้าใจ แต่เครื่องคอมพิวเตอร์เข้าใจเฉพาะภาษาเครื่อง (Machine Language) เท่านั้น ดังนั้นหากต้องการให้คอมพิวเตอร์ทำงานภาษาซีที่สร้างขึ้น จำเป็นต้องมีตัวแปลภาษาที่สร้างขึ้นให้เป็นภาษาเครื่องก่อนจึงจะทำงานได ซอฟต์แวร์สำหรับแปลภาษาซีให้เป็นภาษาเครื่องคือ ตัวแปลภาษาซี (C Compiler) ดังรูป

รูปแสดง ขั้นตอนการแปลภาษาคอมพิวเตอร์

                ในการพัฒนาซอฟต์แวร์คอมพิวเตอร์นั้น โปรแกรมเมอร์จะเขียนโปรแกรมในภาษาคอมพิวเตอร์แบบต่าง ๆ ตามแต่ความชำนาญของแต่ละคน โปรแกรมที่ได้จะเรียกว่า โปรแกรมต้นฉบับ หรือ ซอร์สโคด (source code) ซึ่งมนุษย์จะอ่านโปรแกรมต้นฉบับนี้ได้แต่คอมพิวเตอร์จะไม่เข้าใจคำสั่งเหล่านั้น เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง (Machine Language) ซึ่งประกอบขึ้นจากรหัสฐานสองเท่านั้น จึงต้องมีการใช้โปรแกรม ตัวแปรภาษาคอมพิวเตอร์ (Translator) ในการแปลภาษาคอมพิวเตอร์ภาษาต่าง ๆ ไปเป็นภาษาเครื่องโปรแกรมที่แปลจากโปรแกรมต้นฉบับแล้วเรียกว่า ออบเจคโคด (object code) ซึ่งจะประกอบด้วยรหัสคำสั่งที่คอมพิวเตอร์สามารถเข้าใจและนำไปปฏิบัติได้ต่อไปตัวแปลภาษาที่มีการใช้อยู่ในปัจจุบัน จะต่างกันที่ขั้นตอนที่ใช้ในการแปลภาษาให้อยู่ในรูปแบบที่คอมพิวเตอร์สามารถเข้าใจได้สามารถแบ่งได้เป็น

               แอสเซมเบลอ (Assembler) เป็นตัวแปลภาษาแอสแซมบลีซึ่งเป็นภาษาระดับต่ำให้เป็นภาษาเครื่อง

               อินเตอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาระดับสูงซึ่งเป็นภาษาที่ใกล้เคียงกับภาษามนุษย์ ไปเป็นภาษาเครื่อง โดยใช้หลักการแปลพร้อมกับงานตามคำสั่งทีละบรรทัด ตลอดทั้งโปรแกรมทำให้การแก้ไขโปรแกรมทำได้ง่ายและรวดเร็ว แต่ออบเจคโคดที่ได้จากการแปลโดยการใช้อินเตอร์พรีเตอร์นั้นไม่สามารถเก็บไว้ใช้ใหม่ได้จะจะต้องแปลโปรแกรมใหม่ทุกครั้งที่ต้องการใช้งาน

               คอมไพเลอร์ (Compiler) จะเป็นตัวแปลภาษาระดับสูงเช่นเดียวกับอินเตอร์พรีเตอร์ แต่จะใช้วิธีแปลโปรแกรมทั้งโปรแกรมให้เป็นออบเจคโคด ก่อนที่จะสามารถนำไปทำงานเช่นเดียวกับแอสแซมเบลอ ออบเจคโคดที่ได้จากการแปลนั้นสามารถจัดเก็บไว้เป็นแฟ้มข้อมูล เพื่อให้นำไปใช้ในการทำงานเมื่อใดก็ได้ตามต้องการ ซึ่งเป็นข้อดีของคอมไพเลอร์ที่จะนำผลที่ได้จากการแปลนั้นไปใช้งานกี่ครั้งก็ได้ไม่จำกัด ไม่ต้องเสียเวลาในการแปลใหม่ทุกครั้ง ทำให้เป็นรูปแบบการแปลที่ได้รับความนิยมอย่างมาก

                ในปัจจุบัน มีหลักการแปลภาษาคอมพิวเตอร์แบบใหม่เกิดขึ้น คือแปลจากซอร์สโคดไปเป็นรหัสชั่วคราวหรืออินเทอมีเดียตโคด (Intermediate code) ซึ่งสามารถนำไปทำงานได้ด้วยการใช้โปรแกรมในการอ่านและทำงานตามรหัสชั่วคราวนั้น โดยโปรแกรมนี้จะมีหลักการทำงานคล้ายกับ อินเตอร์พรีเตอร์ แต่จะทำงานได้เร็วกว่าเนื่องจากรหัสชั่วคราวจะใกล้เคียงกับภาษาเครื่องมาก มีข้อดีคือสามารถนำรหัสชั่วคราวนั้นไปใช้ได้กับทุก ๆ เครื่องที่มีโปรแกรมตีความได้ทันที
         
   
  Edit-Compile-Run

               กระบวนการพัฒนาโปรแกรมที่โปรแกรมเมอร์ทุกคนต้องทำ (เหมือนเป็นวงจรชีวิต) ก็คือ การเขียน/แก้ไข โปรแกรม การคอมไพล์ และการรันโปรแกรม
         
   
  ข้อผิดพลาดในการเขียนโปรแกรม (Programming Error)
       ข้อผิดพลาดในการเขียนโปรแกรมสามารถแบ่งเป็น 3 ชนิดคือ syntaxerrors, logicerrors แล ะsystem design errors

       1. Syntax errors เป็นข้อผิดพลาดที่เกิดจากการเขียนคำสั่งโปรแกรมผิดรูปแบบไวยกรณ์ของภาษา

       2. Logic errors เป็นข้อผิดพลาดที่เกิดจากการใช้ตรรกะผิดในโปรแกรม ซึ่งเงื่อนไขผิดมีผลให้การกระทำตามเงื่อนไขผิดไปด้วย

       3. System design errors เป็น ข้อผิดพลาดจากการออกแบบระบบทำให้ผลของการทำงานไม่เป็นที่ยอมรับของผู้ใช้ ซึ่งความผิดพลาดนี้ อาจเกิดจากการสื่อสารระหว่างโปรแกรมเมอร์กับผู้วิเคราะห์ระบบหรือผู้ใช้ระบบ ไม่ดี

       Syntax errors เป็นความผิดพลาดที่ค้นพบได้ง่ายกว่า logic errors เพราะสามารถตรวจพบได้ในระหว่างการทำการแปลภาษา ส่วน logic errors จะตรวจพบเมื่อโปรแกรมทำงานจนได้ผลลัพธ์ไม่ถูกต้องเท่านั้น

         
ดัชนี [ ประวัติภาษาซี ] [ ขั้นตอนการพัฒนาภาษาซี ] [ กระบวนการแปลภาษา ] [ ตัวแปลภาษา ] [ กลับด้านบน ]
 

จัดทำโดย ครูวีรศักดิ์ จันทร์สุข
โรงเรียนคุรุประชาสรรค์ อ.สรรคบุรี จ.ชัยนาท
E-mail : weerasak_ch26@hotmail.com หรือ krurock.kuru@gmail.com