Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
แนะน ำภำษำซี
Introductionto
C Language
ประวัติควำมเป็นมำของภำษำซี
ปี ค.ศ. 1972 Dennis Ritchie เป็นผู้คิดค้นคนแรก พัฒนาจาก ภาษา B และ BCPL
ปี ค.ศ. 1978 Brian Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้น เรียกว่า “K&R” และได้เขียนหนังสือชื่อ “The C Programming Language” เล่มแรก
ปี ค.ศ. 1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างมาตรฐานซีขึ้นชื่อ ANSI C
ขั้นที่ 1 เขียนโปรแกรม (Source Code)
• ใช้ Editor เขยีนโปรแกรมและท ำกำรบนัทกึไฟลใ์หม้นีำมสกุล *.c เชน่ Hello.c
ขั้นที่ 2 คอมไพล์โปรแกรม (Compile)
• น า Source code จากขั้นตอนแรก มาท าการคอมไพล์ เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนน้ีคอมไพเลอร์จะท าการตรวจสอบ Source code ว่าเกิดข้อผิดพลาดหรือไม่– หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนทราบ และต้องแก้ไขโปรแกรม
– หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลงไฟล์ Source code จากภาษาซีไปเป็นภาษาเครื่อง (นามสกุล *.obj)
ข้อดีและข้อเสียของตัวแปลภำษำทั้งสองแบบมีดังนี้
ข้อดี ข้อเสีย
คอมไพเลอร์ • ท างานได้เร็ว เนื่องจากท ำกำรแปลผลทีเดียว แล้วจึงท าตามค าส่ังของโปรแกรมภายหลัง
• เมื่อท าการแปลผลแล้ว ในคร้ังต่อไปไม่จ าเป็นต้องแปลผลใหม่อีกเนื่องจากภาษาเครื่องท่ีแปลได้จะถูกเก็บไว้ที่หน่วยความจ า สามารถเรียกใช้งานได้ทันที
เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะท าการแปลผลทีเดียวท้ังโปรแกรม
อินเตอร์พรเีตอร์ • หาข้อผิดพลาดของโปรแกรมง่ายเนื่องจากท ำกำรแปลผลทีละบรรทัด
• เนื่องจากท างานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมท างานตามค าสั่งเฉพาะจัดที่ต้องการได้
• ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน
ช้า เนื่องจากท างานทีละบรรทัด
ขั้นที่ 3 เชื่อมโยงโปรแกรม (Link)
• การเขียนโปรแกรมภาษาซีนั้น ผู้เขียนโปรแกรมไม่จ าเป็นที่ต้องเขียนค าสั่งต่างๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชั่นมาตรฐานให้ผู้เขียนสามารถเรียกใช้งานได้ เช่น– การเขียนโปรแกรมแสดงข้อความออกทางหน้าจอ ผู้เขียนสามารถใช้
ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานได้ โดยมีการประกาศ (declaration) ฟังก์ชั่นมาตรฐานต่างๆจะถูกจัดเก็บในเฮดเดอรแ์ต่ตัว
• ด้วยเหตุน้ี ภาษาเครื่อง จึงไม่สามารถน าไปใช้งานได้ แต่จ าเป็นที่จะต้องเช่ือมโยง (Link) กับ Library ก่อนท าให้ได้ Executable program (ไฟล์นามสกุล .exe) ที่สามารถน าไปใช้งานได้
ขั้นที่ 4 ประมวลผล (Run)
ขั้นตอนกำรพัฒนำโปรแกรมด้วยภำษำซี
LibraryLibrary
Editor
Test.c………………………………………………
C Compiler Test.obj Test.exe
Library
Output
สร้ำง
Source code Object Program Executable Program
Compile
Link Run
โครงสร้ำงของโปรแกรมภำษำซี
โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน
1.ส่วนหัวโปรแกรม
ส่วนหัวของโปรแกรมนี้ เรียกว่า “Preprocessing Directive” ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระท าการใดๆ ก่อนการแปลผลโปรแกรม
1
1. ส่วนหัวโปรแกรม (ต่อ)
ในที่นี้ค าสั่ง #include<stdio.h> ใช้บอกกับคอมไพเลอร์ให้น า
เฮดเดอรไ์ฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการก าหนด preprocessing directives นี้จะขึ้นต้นด้วยเครื่องหมาย # (Pound sign) เสมอ
1. ส่วนหัวโปรแกรม (ต่อ)
#include<ชื่อเฮดเดอรไ์ฟล>์ คอมไพเลอร์จะท าการค้นหาเฮดเดอรไ์ฟล์ที่ระบุ จากไดเร็คทอรี่ที่ใช้ส าหรับเก็บเฮดเดอร์โดยเฉพาะ (ปกติคือไดเร็คทอรี่ชื่อ include)
#include<ชื่อเฮดเดอรไ์ฟล>์ คอมไพเลอร์จะท าการค้นหาเฮดเดอรไ์ฟล์ที่ระบุ จากไดเร็คทอรี่เดียวกันกับไฟล์ Source code นั้น แต่ถ้าไม่พบก็จะไปค้นหาจากไดเร็คทอรี่ที่ใช้ส าหรับเก็บเฮดเดอรโ์ดยเฉพาะ
2. ส่วนของฟังก์ชันหลัก
ฟังก์ชันหลักของภาษาซี คือ ฟังก์ชัน main() ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชันนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชัน คือ main แปลว่า “หลัก” โดยขอบเขตของฟังก์ชันจะถูกก าหนดด้วยเครื่องหมาย { และ } การท างานจะเริ่มต้นทีเ่ครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย }
ตัวอย่ำงที่ 1.1 argument และ parameter
Argument คือ ตัวรับค่ำเข้ำมำในฟังก์ชนั
Parameter คือ ค่ำที่ส่งไปยังฟังก์ชัน
***ค่ำของทั้งสองจะต้องเป็นขอ้มูลชนดิเดียวกัน เช่น ตัวอักษร
argument (รับ) รับตัวอักษร ‘z’ มำในฟังก์ชัน
parameter (ส่ง) ส่งตัวอักษร ‘z’ ไปยังฟังก์ชัน show()
3. ส่วนรำยละเอียดของโปรแกรม
เป็นส่วนของกำรเขยีนค ำสั่ง เพื่อให้โปรแกรมสำมำรถท ำงำนได้ตำมที่ได้ออกแบบไว้
คอมเมนต์ในภำษำซี
คอมเมนต์ (Comment) คือ ส่วนที่เป็นหมำยเหตุของโปรแกรม มีไว้เพื่อให้ผู้เขียนโปรแกรมใส่ข้อควำมอธิบำยก ำกับลงไปใน Source code ซึ่งคอมไพเลอร์จะข้ำมกำรแปลผลในสว่นที่เปน็คอมเมนต์นี้
คอมเมนต์มี 2 แบบคือ
1. คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมำย //
2. คอมเมนต์แบบหลำยบรรทัด ใช้เครื่องหมำย /* และ */
ตัวอย่ำงที่ 1.2
ข้อควรระวัง : ในกำรใช้คอมเมนต์ คือ ในกรณีใช้คอมเม้นแบบหลำยบรรทัด จะไม่สำมำรถใช้คอมเมนต์ซ้อนคอมเมนต์ได้
กำรใช้คอมเมนต์แบบหลำยบรรทัด
ส่วนที่เป็นคอมเมนต์จะไม่ได้รับกำรแปลผล
/*Comment1*/ /*Comment2*/ /*Comment3*/
/*Comment1 /*Comment2*/ Comment3*/
กฏกำรตั้งชื่อ
ภำษำซีมีกฎเกณฑ์ในกำรตั้งชื่อให้กับ Identifier ซึ่งได้แก่ ตัวแปร, ฟังก์ชัน, และเลเบล ดังนี้
1. ชื่อที่ตั้งจะต้องไม่ซ้ ำกับค ำสงวน (Reserved word) ในภำษำซีasm default for pascal switch _ds
auto do goto register typedef _es
break double huge return union _ss
case else if short unsigned
cdecl enum int signed void
char extern nterrupt sizeof volatile
const far ong static while
continue float near struct _cs
กฎกำรตั้งชื่อ (ต่อ)
2. ชื่อต่ำงๆ ที่ตั้งจะเป็นแบบ case-sentitive หมำยควำมว่ำตัวอักษรตัวใหญ่กับตัวเล็ก ถือว่ำเป็นคนละตัวกัน เช่น TEST, Test, test, tEsT ถือว่ำเป็นคนละชื่อกัน
3. ชื่อจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมำย Underscore (_) เท่ำนั้น จะขึ้นต้นด้วยตัวเลขไม่ได้ แต่ภำยในชื่อสำมำรถประกอบไปด้วยตัวอักษร เครื่องหมำย Underscore หรือตัวเลขก็ได้ เช่น TEST_VALUE, HELLO123, h1_T2, _UserName เป็นต้น
4. กำรตั้งชื่อจะเว้นวรรค (มีช่องว่ำงหรือแท็บภำยในชื่อ) ไม่ได้
5. กำรตั้งชื่อจะประกอบไปด้วยอักขระพิเศษ เช่น $, @, #, & ไม่ได้
ตัวอย่ำงกำรตั้งชื่อที่ถูกต้องและไม่ถูกต้อง
ช่ือที่ถูกต้อง ช่ือที่ไม่ถูกต้องa $hello เพราะช่ือมีอกัขระพิเศษคือ $
b1 User name เพราะมีช่องวา่ง
App_passwd 3people เพราะช่ือขึน้ต้นด้วยตวัเลข
_testValue While เพราะช่ือซ า้กบัค าสงวนในภาษาซี
TRUE data%type เพราะช่ือมีอกัขระพิเศษ คือ %
ภำษำซีโปรแกรมแรก (ตัวอย่ำงที่ 1.3)
บรรทัดที่ 1 : เป็นคอมเมนตข์องภาษาซี เพื่อบอกว่าโปรแกรมนี้ชื่อ
HelloWorldatSSRU.c
บรรทัดที่ 2 : เป็นการบอกให้คอมไพเลอร์น าเฮดเดอรไ์ฟล์ชื่อ stdio.h เข้าร่วมในการแปลผลด้วย โดย stdio ย่อมาจาก standard input/output และ .h คือนามสกุลของเฮดเดอร์ไฟล์ที่รวมเอาประกาศ (declation) ของฟังก์ชันมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการด้านอินพุตและเอาต์พุตไว้เข้ามาไว้ด้วยกัน โปรแกรมนี้จะเรียกใช้งานฟังก์ชัน printf() เพื่อแสดงข้อมูลออกทางจอภาพ และเนื่องจากส่วนของการประกาศฟังก์ชัน printf() ถูกบรรจุในเฮดเดอรไ์ฟล์ ดังนั้นจึงจ าเป็นที่ต้องน าเฮดเดอร์ไฟล์ stdio.h เข้าร่วมในการแปลด้วย
ภำษำซีโปรแกรมแรก (ตัวอย่ำงที่ 1.3)
บรรทัดที่ 3 : คือฟังก์ชัน main() ซึ่งเป็นฟังก์ชันหลักของโปรแกรมกำรท ำงำนของโปรแกรมภำษำซีจะเริ่มต้นที่ฟังก์ชันนี้
บรรทัดที่ 4 : เครื่องหมำย { ระบุจุดเริ่มต้นของฟังก์ชัน main()
บรรทัดที่ 5 : เป็นกำรเรียกใช้ฟังก์ชัน printf() ซึ่งเป็นฟังก์ชันมำตรฐำนของภำษำซี ท ำหน้ำที่แสดงผลข้อมูลออกทำงจอภำพ ในที่นี้จะแสดงข้อควำม “Hello World” ออกทำงจอภำพ
บรรทัดที่ 6 : เครื่องหมำย } ระบุจุดสิ้นสุดของฟังก์ชัน main()
ถำมตอบข้อสงสัยเครดิตหนังสือ : คู่มือเรียนภำษำซี ฉบับปรับปรุงใหม่ พิมพ์ครั้งที่ 10 อรพิณ ประวัติบริสุทธิ์
Q&A