หน่วยที่ 3 ภาษาซี

Page 1

ภาษาซีเป็นภาษาคอมพิวเตอร์ระดับสูง ที่ใช้สาหรับเขียนโปรแกรมประยุกต์ต่าง ๆ เช่นเดียวกั บ ภาษา ปาสคาล ภาษาเบสิก และภาษาฟอร์แทรน เป็นต้น นอกจากนี้ภาษาซียังใช้สาหรับเขียนโปรแกรมระบบและ โปรแกรมสาหรับควบคุมฮาร์ดแวร์บางส่วนที่ภาษาโปรแกรมระดับสูงหลายภาษาไม่สามารถทาได้ ภาษาซีจึง จัดเป็นภาษาระดับกลางด้วย ก่อนที่โ ปรแกรมภาษาซีจะถูกรัน(run)1 จะต้องถูกแปลงให้อยู่ในรูปของอ็อบเจกต์โ ค้ด (object code)2 โดยการคอมไพล์ (compile)3 โปรแกรมภาษาซีที่เขียนโดยใช้คาสั่งตามมาตรฐานของ ANSI C สามารถนาไปคอมไพล์ และรันที่เครื่องคอมพิวเตอร์ต่างระบบกันได้ โปรแกรมที่เขียนขึ้นโดยใช้ภาษาโปรแกรมต่าง ๆ นั้นเราเรียกว่า รหัสต้นฉบับ(source code) ซึ่ง อยู่ในรูปของข้อความตามหลักการเขียนโปรแกรมของภาษาโปรแกรมที่สามารถอ่าน และทาความเข้าใจได้โดย มนุษย์เท่านั้น ดังนั้นเพื่อให้เครื่องคอมพิวเตอร์สามารถเข้าใจโปรแกรมและปฏิบัติได้ จึงต้องนารหัสต้นฉบับมา ผ่านกระบวนการแปลงให้ อยู่ ในรู ป ของอ็อบเจกต์โ ค้ดที่ประกอบด้ว ยรหั สตัว เลข 0 และ 1 ก่อน เราเรียก กระบวนการแปลงดังกล่าวว่า การคอมไพล์โปรแกรม

กำเนิดภำษำซี ภาษาซีเป็นภาษาระดับสูง( High-Level-Language) และภาษา โปรแกรมที่นักเขียนโปรแกรมหรือที่เรียกว่าโปรแกรมเมอร์ นิยมใช้กันมาก เนื่องจากเป็นภาษาที่มีความเร็วในการทางานสูงใกล้เคียงกับภาษาเครื่อง มี โครงสร้างที่ชัดเจน เข้าใจง่าย สามารถเขียนโปรแกรมเพื่อติดต่อกับฮาร์ดแวร์ ของเครื่องคอมพิวเตอร์ได้อย่างดี ภาษาซีเกิดขึ้นในปี ค.ศ.1972 ผู้คิดค้นคือ นำยเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือว่าเป็นพื้นฐานใน การศึกษาภาษาใหม่ ๆ ได้


ข้อดีของภำษำซี เป็นภาษาที่มีลักษณะเป็นโครงสร้างจึงเขียนโปรแกรมง่าย โปรแกรมที่ เขียนขึ้นจะทางานได้อย่างมี ประสิทธิภาพสูง สั่งงานคอมพิวเตอร์ได้รวดเร็วกว่าภาษาระดับสูงอื่น ๆ สั่งงานอุปกรณ์ในระบบคอมพิวเตอร์ได้ เกือบทุกส่วนของฮาร์ดแวร์ ซึ่งภาษาระดับสูงภาษาอื่นทางานดังกล่าวได้น้อยกว่า คอมไพเลอร์ภาษาซีทุก โปรแกรมในท้องตลาดจะทางานอ้างอิง มาตรฐาน(ANSI= American National Standards Institute) เกือบ ทั้งหมด จึงทาให้โปรแกรมที่เขียนขึ้นด้ วยภาษาซีสามารถนาไปใช้กับคอมพิวเตอร์ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนาไปใช้กับเครื่องคอมพิวเตอร์ที่ใช้ซีพียูต่างเบอร์กันได้ หรือ กล่าวได้ว่าโปรแกรมมีความยืดหยุ่น (portabiliy) สูง สามารถน าภาษาซีไ ปใช้ ในการเขีย นโปรแกรมประยุกต์ ได้ห ลายระดับ เช่น เขียนโปรแกรมจั ด ระบบงาน (OS) คอมไพเลอร์ ของภาษาอื่น โปรแกรมสื่ อสารข้อมูล โปรแกรมจัด ฐานข้อมูล โปรแกรม ปัญญาประดิษฐ์ (AI = Artificial Inteeligent) รวมทั้งโปรแกรมคานวณงานทางด้านวิทยาศาสตร์และ วิศวกรรมศาสตร์ เป็นต้น มีโปรแกรมช่วย (tool box) ที่ช่วยในการเขียนโปรแกรมมากและราคาไม่แพงหาซื้อ ได้ง่าย เช่น vitanin c หรืออื่น ๆ สามารถประกาศข้อมูลได้หลายชนิดและหลายรูปแบบ ทาให้สะดวก รวดเร็ว ต่อการพัฒนาโปรแกรมตามวัตถุประสงค์ของผู้ใช้ ประยุกต์ใช้ในงานสื่อสารข้อมูล และงานควบคุมที่ต้องการ ความแม่นยา ในเรื่องเวลา (real time application) ได้ดีกว่าภาษาระดับสูงอื่น ๆ หลาย ๆ ภาษา ข้อเสียของภำษำซี ภาษาซีไม่มีตัว จั ดการจองหน่ ว ยความจาในตัว เอง เมื่อเวลาเราต้องการจองหน่ว ยความจาแบบ Dynamic ภาษาซีทา wrapper เพื่อติดต่อกับระบบปฏิบัติการเพื่อขอจองหน่วยความจาโดยตรง ปัญหาก็คือ การติ ด ต่ อ กัน ระหว่ า งโปรแกรมของเรากับ ระบบปฏิบั ติ ก าร เป็ น ไปอย่ างหลวม ๆ ถ้ า โปรแกรมลื ม บอก ระบบปฏิบัติการว่าเลิกจองหน่วยความจาดังกล่าว หน่วยความจานั้นก็จะถูกจองไปเรื่อย ๆ เราจะเห็นเครื่อง คอมพิวเตอร์ทางานได้เร็วในตอนเช้า แต่ พอตกบ่ายก็ช้าลงจนทางานไม่ไหว จนสุดท้ายต้องเปิดเครื่องใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจารั่ว หรือ Memory Leak


การสร้างโปรแกรมที่สามารถใช้งานได้ขึ้นมาโปรแกรมหนึ่ง ในภาษาซีมีขั้นตอนดังนี้ 1. สร้างตัวโปรแกรมที่เป็นตัวอักษรหรือเรียกว่า ซอร์สไฟล์ (Source file) โดยมีนามสกุลเป็น .c หรือ .cpp ขึ้นมาก่อน โดยใช้โปรแกรมที่สามารถเขียนไฟล์ที่เก็บอักขระ (Editor) ใด ๆ ก็ได้ อักษรหรืออักขระใด ๆ นั้น จะต้องอยู่ในรูปแบบของการโปรแกรมภาษา (ขั้นตอนนี้คือการสร้างโปรแกรมที่เป็นภาษามนุษย์นั่นเอง) 2. คอมไพล์เลอร์ของภาษาซี (C Compiler) จะทาการแปลงซอร์สไฟล์ จากอักขระใด ๆ ให้เป็นรหัสที่เครื่อง คอมพิวเตอร์สามารถเข้าใจได้เก็บไว้ในอีกไฟล์หนึ่งเรียกว่า ไฟล์วัตถุประสงค์ (Object file) ที่มีนามสกุล .obj (ขั้นตอนนี้เรียกว่า การคอมไพล์ เป็นการแปลงภาษามนุษย์เป็นภาษาเครื่องนั่นเอง) 3. ตัวเชื่อม (Linker) จะทาการตรวจสอบว่าในโปรแกรมที่เขียนขึ้นนั้น มีการเรียกใช้งานฟังก์ชันมาตรฐานใด จากห้องสมุดของภาษาซี (C Library) บ้างหรือไม่ ถ้ามี ตัวเชื่อมจะทาการรวมเอาฟังก์ชันเหล่านั้นเข้ากับไฟล์ วัตถุประสงค์ แล้วจะได้ไฟล์ที่สามารถทางานได้ โดยมีนามสกุลเป็น .exe (ขั้นตอนนี้เรียกว่า การลิงค์ เป็นการ รวมฟังก์ชันสาเร็จรูปเข้าไป แล้วสร้างไฟล์ที่ทางานได้)

รูปแสดงขั้นตอนการคอมไพล์และลิงค์โปรแกรมภาษาซี


โครงสร้างของภาษาซี ภาษาซีเป็นภาษาที่มีโครงสร้างในการเขียนโปรแกรมที่ชัดเจน ซึ่งมีรูปแบบของโครงสร้างโปรแกรม ดังนี้

รูปแสดงโครงสร้างของภาษาซี 1. ส่วนของการประกาศส่วนหัวของโปรแกรมหรือที่เรียกว่า เฮดเดอร์ไฟล์ (Header File) เป็นการ เรียกใช้เฮดเดอร์ไฟล์เข้ามาร่วมใช้งานภายในโปรแกรม โดยไฟล์เฮดเดอร์เป็นไฟล์ที่ใช้ในการรวบรวมฟังก์ชั่น การทางานต่าง ๆ ที่สามารถเรีย กใช้ได้ เช่น ภายในเฮดเดอร์ไฟล์ stdio.h เป็นไฟล์เฮดเดอร์ที่รวบรวม เกี่ยวกับฟังก์ชั่นมาตรฐานทางด้านการรับข้อมูล (Input) และแสดงผลข้อมูล (Output) ยกตัวอย่างเช่น ฟังก์ชั่น printf( ); เป็นฟังก์ชั่นในการแสดงผลข้อมูล ซึ่งบรรจุอยู่ในไฟล์ stdio.h เป็นต้น 2. ส่วนของชื่อฟังก์ชั่นในที่นี้ ฟังก์ชั่นที่กาหนดขึ้นมาชื่อฟังก์ชั่น main() โดยทุกโปรแกรมจะต้องมี ฟังก์ชั่น main() ทาหน้าที่เป็นฟังก์ชั่นหลักในการทางานในการประมวลผลโปรแกรมทุกครั้ง โปรแกรมจะทา การประมวลผลที่ฟั ง ก์ชั่ น main() เป็ นฟั ง ก์ชั่ น แรก ซึ่ ง ในการเขีย นโปรแกรมภาษาซี ทุก ครั้ง จะขาด ฟังก์ชั่น main() ไม่ได้


3. ส่วนตัวโปรแกรม ส่วนนี้เป็นส่วนในการเขียนคาสั่งต่าง ๆ เพื่อสั่งให้คอมพิวเตอร์ทางาน ในการ เขียนคาสั่งจะเขียนภายในเครื่องหมายปีกกาเปิด { และเครื่องหมายปีกกาปิด } โดยปกติส่วนของการ เขียนโปรแกรมจะสามารถแบ่งออกได้เป็น 2 ส่วนด้วยกัน คือ 1) ส่วนของการประกาศตัวแปร คือ ส่วนที่ใช้ในการกาหนดตัวแปรที่จะใช้งานในการเขียนโปรแกรม 2) ส่วนของคาสั่ง หรือ ฟังก์ชั่นต่าง ๆ คือ ส่วนที่ใช้สาหรับในการพิมพ์คาสั่งและ ฟังก์ชั่นต่าง ๆ ซึ่งหลังจากพิมพ์ฟังก์ชั่นเสร็จแล้วจะต้องปิดท้ายด้วยเครื่องหมายเซมิโคลอน ; เสมอ 4. ส่วนของการเปิดโปรแกรมและปิดโปรแกรม ตามโครงสร้างของภาษาซี จะต้องมีการกาหนดจุดเริ่มต้นและจบโปรแกรม โดยในที่นี้ใช้เครื่องหมาย ปีกกาเปิด { ในการระบุตาแหน่งการเริ่มต้นโปรแกรม และ ใช้เครื่องหมายปีกกาปิด } ในการระบุตาแหน่ง การจบโปรแกรม 5. การกาหนดตาแหน่ง หมายเหตุ (Comment) ในการเขียนโปรแกรม ผู้เขียนสามารถเขียนส่วน คาอธิ บ าย หรื อ หมายเหตุ ของโปรแกรมได้ ซึ่ งส่ ว นของค าอธิ บายหรื อหมายเหตุ ดั งกล่ า ว จะไม่ ถู กแปล ความหมายโดยคอมพิวเตอร์ ซึ่งวิธีในการเขียนคาอธิบาย หรือหมายเหตุ มี 2 แบบ คือ 1) กา รก า หน ดห มาย เห ตุ 1 บ รร ทั ด ใ นก ารก าห นด หมา ยเ หตุ 1 บร รทั ด จ ะใ ช้ เครื่องหมาย // ด้านหน้าข้อความที่ต้องการกาหนดหมายเหตุ เช่น

จากตัวอย่างข้างต้น คาสั่ง printf จะถูกแปลความหมายตามปกติ แต่ข้อความ Show data จะไม่ถูกแปล ความหมาย เพราะเป็นส่วนของหมายเหตุ


2) การกาหนดหมายเหตุหลายบรรทัด ในการกาหนดหมายเหตุหลายบรรทัด จะใช้เครื่องหมาย /* ไว้ที่ตาแหน่งบรรทัดเริ่มต้น และ */ ไว้ที่ ตาแหน่งบรรทัดสุดท้าย หมายเหตุ เช่น

จากตัว อย่ างข้างต้น บรรทัดที่เริ่ มต้น ด้ว ย /* จะเป็นส่ ว นเริ่มต้นหมายเหตุ และคอมพิว เตอร์จะไม่แปล ความหมายจนถึงบรรทัดที่ปิดท้ายด้ว ย */ หลังจากบรรทัดดังกล่ าว คอมพิว เตอร์ถึงจะทาการแปล ความหมาย


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.