การเขียนโปรแกรม
      ภาษาซี


              โดย
    วิจักษณ์ ศรีสัจจะเลิศวาจา
     ดุษฎี   ประเสริฐธิติพงษ์




   ภาควิชาวิทยาการคอมพิวเตอร์
คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
         พฤษภาคม 2545
1.แนะนำา ภาษาซี
     Introduction to C Programming
     Language
     ----------------------------------------
     -------------------------------
       ภาษาโปรแกรม (Programming Languages) ทีมีการคิดค้นขึ้นมา
                                                     ่
ใช้กับคอมพิวเตอร์นั้นมีหลายพันภาษา แต่ภาษาที่เป็นที่รู้จักและเป็นที่
นิยมใช้ทั่วไปนั้นอาจจะมีเพียงหลายสิบภาษา เช่น โคบอล (COBOL)
ปาสคาล (Pascal) เดลไฟล์ (Delphi) วิชวลเบสิก (Visual Basic) ซี (C)
จาวา (Java) เป็นต้น ซึ่งแต่ละภาษา สร้างขึ้น ด้วยวัตถุประสงค์ที่แตก
ต่างกันและมีจุดเด่นของภาษาที่ต่างกัน ภาษาซี C Programming
Language) เป็นภาษาเชิงโครงสร้างที่มีการออกแบบโปรแกรมใน
ลักษณะโมดูลทีมีจุดเด่นในเรื่องของประสิทธิภาพการ ทำา งานที่เร็ว มี
                 ่
ความยืดหยุ่นในการเขียนโปรแกรมสูง
       เนื่องจากมีผู้ผลิตคอมไพเลอร์เพื่อใช้แปลภาษาซีหลายบริษัท
ตัวอย่างต่าง ๆ ทีนำาเสนอในหนังสือเล่มนี้ เป็นตัวอย่างทีนำาเสนอโดยใช้
                   ่                                   ่
คอมไพเลอร์ของ Turbo C เวอร์ชัน 3.0 ของบริษัทบอร์ดแลนด์ โดย
พยายามเขียนใน รูปแบบที่เป็นมาตรฐานหากผู้อ่านนำา ไปใช้กับคอมไพ
เลอร์ของบริษัทอื่นจะได้มีการปรับแก้ไม่มากนัก เพื่อให้ผู้อ่านได้เห็นภาพ
การพัฒนาโปรแกรมเชิงโครงสร้างอย่างชัดเจน
       1. ประวัติความเป็นมา
       ภาษาซีได้รับการพัฒนาขึ้นโดยเดนนิสริทชี (Dennis Ritchie) ขณะ
ทีทำา งานอยู่ที่เบลแล็บบอราทอรี(Bell Laboratories) โดยพัฒนาขึ้นจาก
   ่
หลักการพื้นฐานของภาษาบี (B) และซี พี แอล (BCPL) ในช่วงปี
ค.ศ.1971 ถึง 1973 แต่ได้เพิ่มชนิดข้อมูลและความสามารถอื่น ๆ ให้มาก
ขึ้น และนำา ภาษาซีไปใช้พัฒนาระบบปฏิบัติการยูนิกซ  (UNIX) บน
เครื่องคอมพิวเตอร์ DEC PDP-11 ภาษาซีเป็นที่นิยมใช้อย่างแพร่หลาย
ในช่วงต้นทศวรรษที1980 จนกระทั่งมีความพยายามกำาหนดมาตรฐาน
                      ่
ของภาษาเพื่อให้สามารถใช้ภาษาซีได้บนเครื่องคอมพิวเตอร์ใด ๆ ในปี
ค.ศ. 1983 โดย ANSI (The American National Standards Institute)
ได้ตั้งคณะกรรมการ X3J11 เพื่อร่างมาตรฐานดังกล่าว และได้รับการ
ตรวจสอบและยอมรับโดย ANSI และ ISO (The International
Standards Organization) โดยมีการตีพีมพ์มาตรฐานของภาษาซีในปี
ค.ศ. 1990 จากความมีประสิทธิภาพและสามารถทำางานบนเครื่อง
คอมพิวเตอร์ใด ๆ ของภาษาซีจึงได้มีการนำา ภาษาซีไปใช้ในการพัฒนา
ระบบปฏิบัติการต่าง ๆ และใช้เป็นต้นแบบของภาษาอื่น ๆ ทีสำาคัญใน
                                                     ่
ปัจจุบัน เช่น ซีพลัสพลัส (C++) จาวา (Java) เป็นต้น




       2. รูปแบบโปรแกรมภาษาซี
       ในการเขียนภาษาโปรแกรม ผู้เขียนโปรแกรมจะต้องศึกษารูปแบบ
พื้นฐานของภาษา และไวยากรณ์ของภาษานั้น รูปแบบพื้นฐานของภาษา
จะเขียนโปรแกรมในลักษณะของโมดูลคือมีการแบ่งออกเป็นส่วนย่อย ๆ
ที่เรียกว่า ฟังก์ชัน (Function) แสดงดังตัวอย่างที่ 1.1 และรูปที่ 1.1
       ตัวอย่างที่ 1.1 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น
          #include <stdio.h>

          void main( ) {
          /* Display message to standard output */
          printf(“My first program.”);
          }




     ผลการทำา งานของโปรแกรม

     My first program.

     ระวัง - การพิมพ์ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กต่างกัน จะ
ทำา ให้เกิดความผิดพลาด
         - ตรวจสอบว่ามีการพิมพ์ข้อความต่าง ๆ เหมือนกับตัวอย่าง
รูปที่ 1.1 แสดงส่วนประกอบของโปรแกรมภาษาซีเบื้องต้น
          ส่วนประกอบที่ 1 ส่วนหัว (Header) จะเป็นส่วนที่อยูที่ตอนต้น
                                                                ่
ของโปรแกรม โดยอยู่นอกส่วนที่
เรียกกว่าฟังก์ชัน ทีส่วนนหัวของโปรแกรมจะประกอบด้วยคำา สั่งที่
เป็นการกำาหนดค่าหรือกำาหนดตัวแปรต่าง ๆ คำาสั่งในที่ขึ้นต้นด้วย
สัญลักษณ์ # เป็นคำา สั่งที่เรียกว่า ตัวประมวลผลก่อน (Preprocessor)
คือคำา สั่งที่จะได้รับการทำาก่อนที่จะมีการคอมไพล์โปรแกรม ตัวประมวล
ผลก่อน ที่สำาคัญของภาษาซีแบ่งออกเป็น 2 ประเภทดังนี้
          • # include
          ในภาษาซีจะมีฟังก์ชันมาตรฐานที่ผู้ผลิตคอมไพเลอร์ได้จัด
เตรียมไว้ให้ ซึ่งมักจะเกี่ยวข้อง
          กับการรับข้อมูล การแสดงผลข้อมูล การคำานวณ และอื่น ๆ ซึ่งผู้
เขียนโปรแกรมสามารถ
          เรียกใช้งานได้ทันที โดยไม่ต้องเขียนโปรแกรมแกรมเอง ใน
ตัวอย่างจะมีการใช้คำา สั่ง
          printf( ) ซึ่งเป็นคำา สั่งที่ใช้แสดงข้อความออกทางอุปกรณ์
แสดงผลมาตรฐาน เช่น จอภาพ
          คำาสั่ง printf( ) เป็นการเรียกใช้ฟังก์ชันมาตรฐานซึ่งอยู่ในกลุมที่
                                                                       ่
เรียกว่า Standard Input
          and Output เมื่อจะเรียกใช้ฟังก์ชันใดในกลุมดังกล่าว จะต้อง
                                                      ่
บอกให้คอมไพเลอร์ไปอ่าน
          ค่าที่อยูในอินคลูชไฟล์ที่ชื่อ stdio.h มาไว้ที่ส่วนต้นของ
                   ่
โปรแกรม โดยใช้คำา สั่ง
                     #include <stdio.h>
          เพราะฉะนั้นผู้เขียนโปรแกรมควรจะศึกษาฟังก์ชันมาตรฐานที่
คอมไพเลอร์แต่ละบริษัทได้
เตรียมไว้ให้วาคำา สั่งใดใช้คู่กับอินคลูชไฟล์ใด
                     ่
       • # define
       ใช้สำา หรับการกำาหนดค่าคงที่ ตัวอย่างเช่น
                 #define YES 1
       คำาสั่งดังกล่าวเป็นการกำาหนดว่า หากทีใดในโปรแกรมมีคำา ว่า
                                               ่
YES จะถูกแทนที่ด้วยค่าทาง
       ขวามือ ในที่นี้คือ 1

         นอกจากในสว่นหัวของโปรแกรมอาจจะมีการประกาศตัวแปร
และส่วนของการประกาศโปรโตไทปไว้ที่ส่วนหัวของโปรแกรมได้อีกด้วย
ซึ่งจะกล่าวถึงในบทต่อ ๆ ไป




ศึกษารายละเอียดเพิ่มเติม หรือต้องการ Down load เนื้อหาฉบับสมบูรณ์
ได้ที่นhttp://pittajarn.lpru.ac.th/~nukit/c/CProgrammingV2.pdf
       ี่

การเขียนโปรแกรมภาษาซี

  • 1.
    การเขียนโปรแกรม ภาษาซี โดย วิจักษณ์ ศรีสัจจะเลิศวาจา ดุษฎี ประเสริฐธิติพงษ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ พฤษภาคม 2545
  • 2.
    1.แนะนำา ภาษาซี Introduction to C Programming Language ---------------------------------------- ------------------------------- ภาษาโปรแกรม (Programming Languages) ทีมีการคิดค้นขึ้นมา ่ ใช้กับคอมพิวเตอร์นั้นมีหลายพันภาษา แต่ภาษาที่เป็นที่รู้จักและเป็นที่ นิยมใช้ทั่วไปนั้นอาจจะมีเพียงหลายสิบภาษา เช่น โคบอล (COBOL) ปาสคาล (Pascal) เดลไฟล์ (Delphi) วิชวลเบสิก (Visual Basic) ซี (C) จาวา (Java) เป็นต้น ซึ่งแต่ละภาษา สร้างขึ้น ด้วยวัตถุประสงค์ที่แตก ต่างกันและมีจุดเด่นของภาษาที่ต่างกัน ภาษาซี C Programming Language) เป็นภาษาเชิงโครงสร้างที่มีการออกแบบโปรแกรมใน ลักษณะโมดูลทีมีจุดเด่นในเรื่องของประสิทธิภาพการ ทำา งานที่เร็ว มี ่ ความยืดหยุ่นในการเขียนโปรแกรมสูง เนื่องจากมีผู้ผลิตคอมไพเลอร์เพื่อใช้แปลภาษาซีหลายบริษัท ตัวอย่างต่าง ๆ ทีนำาเสนอในหนังสือเล่มนี้ เป็นตัวอย่างทีนำาเสนอโดยใช้ ่ ่ คอมไพเลอร์ของ Turbo C เวอร์ชัน 3.0 ของบริษัทบอร์ดแลนด์ โดย พยายามเขียนใน รูปแบบที่เป็นมาตรฐานหากผู้อ่านนำา ไปใช้กับคอมไพ เลอร์ของบริษัทอื่นจะได้มีการปรับแก้ไม่มากนัก เพื่อให้ผู้อ่านได้เห็นภาพ การพัฒนาโปรแกรมเชิงโครงสร้างอย่างชัดเจน 1. ประวัติความเป็นมา ภาษาซีได้รับการพัฒนาขึ้นโดยเดนนิสริทชี (Dennis Ritchie) ขณะ ทีทำา งานอยู่ที่เบลแล็บบอราทอรี(Bell Laboratories) โดยพัฒนาขึ้นจาก ่ หลักการพื้นฐานของภาษาบี (B) และซี พี แอล (BCPL) ในช่วงปี ค.ศ.1971 ถึง 1973 แต่ได้เพิ่มชนิดข้อมูลและความสามารถอื่น ๆ ให้มาก ขึ้น และนำา ภาษาซีไปใช้พัฒนาระบบปฏิบัติการยูนิกซ  (UNIX) บน เครื่องคอมพิวเตอร์ DEC PDP-11 ภาษาซีเป็นที่นิยมใช้อย่างแพร่หลาย ในช่วงต้นทศวรรษที1980 จนกระทั่งมีความพยายามกำาหนดมาตรฐาน ่ ของภาษาเพื่อให้สามารถใช้ภาษาซีได้บนเครื่องคอมพิวเตอร์ใด ๆ ในปี ค.ศ. 1983 โดย ANSI (The American National Standards Institute) ได้ตั้งคณะกรรมการ X3J11 เพื่อร่างมาตรฐานดังกล่าว และได้รับการ ตรวจสอบและยอมรับโดย ANSI และ ISO (The International
  • 3.
    Standards Organization) โดยมีการตีพีมพ์มาตรฐานของภาษาซีในปี ค.ศ.1990 จากความมีประสิทธิภาพและสามารถทำางานบนเครื่อง คอมพิวเตอร์ใด ๆ ของภาษาซีจึงได้มีการนำา ภาษาซีไปใช้ในการพัฒนา ระบบปฏิบัติการต่าง ๆ และใช้เป็นต้นแบบของภาษาอื่น ๆ ทีสำาคัญใน ่ ปัจจุบัน เช่น ซีพลัสพลัส (C++) จาวา (Java) เป็นต้น 2. รูปแบบโปรแกรมภาษาซี ในการเขียนภาษาโปรแกรม ผู้เขียนโปรแกรมจะต้องศึกษารูปแบบ พื้นฐานของภาษา และไวยากรณ์ของภาษานั้น รูปแบบพื้นฐานของภาษา จะเขียนโปรแกรมในลักษณะของโมดูลคือมีการแบ่งออกเป็นส่วนย่อย ๆ ที่เรียกว่า ฟังก์ชัน (Function) แสดงดังตัวอย่างที่ 1.1 และรูปที่ 1.1 ตัวอย่างที่ 1.1 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น #include <stdio.h> void main( ) { /* Display message to standard output */ printf(“My first program.”); } ผลการทำา งานของโปรแกรม My first program. ระวัง - การพิมพ์ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กต่างกัน จะ ทำา ให้เกิดความผิดพลาด - ตรวจสอบว่ามีการพิมพ์ข้อความต่าง ๆ เหมือนกับตัวอย่าง
  • 4.
    รูปที่ 1.1 แสดงส่วนประกอบของโปรแกรมภาษาซีเบื้องต้น ส่วนประกอบที่ 1 ส่วนหัว (Header) จะเป็นส่วนที่อยูที่ตอนต้น ่ ของโปรแกรม โดยอยู่นอกส่วนที่ เรียกกว่าฟังก์ชัน ทีส่วนนหัวของโปรแกรมจะประกอบด้วยคำา สั่งที่ เป็นการกำาหนดค่าหรือกำาหนดตัวแปรต่าง ๆ คำาสั่งในที่ขึ้นต้นด้วย สัญลักษณ์ # เป็นคำา สั่งที่เรียกว่า ตัวประมวลผลก่อน (Preprocessor) คือคำา สั่งที่จะได้รับการทำาก่อนที่จะมีการคอมไพล์โปรแกรม ตัวประมวล ผลก่อน ที่สำาคัญของภาษาซีแบ่งออกเป็น 2 ประเภทดังนี้ • # include ในภาษาซีจะมีฟังก์ชันมาตรฐานที่ผู้ผลิตคอมไพเลอร์ได้จัด เตรียมไว้ให้ ซึ่งมักจะเกี่ยวข้อง กับการรับข้อมูล การแสดงผลข้อมูล การคำานวณ และอื่น ๆ ซึ่งผู้ เขียนโปรแกรมสามารถ เรียกใช้งานได้ทันที โดยไม่ต้องเขียนโปรแกรมแกรมเอง ใน ตัวอย่างจะมีการใช้คำา สั่ง printf( ) ซึ่งเป็นคำา สั่งที่ใช้แสดงข้อความออกทางอุปกรณ์ แสดงผลมาตรฐาน เช่น จอภาพ คำาสั่ง printf( ) เป็นการเรียกใช้ฟังก์ชันมาตรฐานซึ่งอยู่ในกลุมที่ ่ เรียกว่า Standard Input and Output เมื่อจะเรียกใช้ฟังก์ชันใดในกลุมดังกล่าว จะต้อง ่ บอกให้คอมไพเลอร์ไปอ่าน ค่าที่อยูในอินคลูชไฟล์ที่ชื่อ stdio.h มาไว้ที่ส่วนต้นของ ่ โปรแกรม โดยใช้คำา สั่ง #include <stdio.h> เพราะฉะนั้นผู้เขียนโปรแกรมควรจะศึกษาฟังก์ชันมาตรฐานที่ คอมไพเลอร์แต่ละบริษัทได้
  • 5.
    เตรียมไว้ให้วาคำา สั่งใดใช้คู่กับอินคลูชไฟล์ใด ่ • # define ใช้สำา หรับการกำาหนดค่าคงที่ ตัวอย่างเช่น #define YES 1 คำาสั่งดังกล่าวเป็นการกำาหนดว่า หากทีใดในโปรแกรมมีคำา ว่า ่ YES จะถูกแทนที่ด้วยค่าทาง ขวามือ ในที่นี้คือ 1 นอกจากในสว่นหัวของโปรแกรมอาจจะมีการประกาศตัวแปร และส่วนของการประกาศโปรโตไทปไว้ที่ส่วนหัวของโปรแกรมได้อีกด้วย ซึ่งจะกล่าวถึงในบทต่อ ๆ ไป ศึกษารายละเอียดเพิ่มเติม หรือต้องการ Down load เนื้อหาฉบับสมบูรณ์ ได้ที่นhttp://pittajarn.lpru.ac.th/~nukit/c/CProgrammingV2.pdf ี่