21
แนะนำภำษำซี Introduction to C Language

แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

แนะน ำภำษำซี

Introductionto

C Language

Page 2: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ประวัติควำมเป็นมำของภำษำซี

ปี ค.ศ. 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

Page 3: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ขั้นที่ 1 เขียนโปรแกรม (Source Code)

• ใช้ Editor เขยีนโปรแกรมและท ำกำรบนัทกึไฟลใ์หม้นีำมสกุล *.c เชน่ Hello.c

Page 4: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ขั้นที่ 2 คอมไพล์โปรแกรม (Compile)

• น า Source code จากขั้นตอนแรก มาท าการคอมไพล์ เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนน้ีคอมไพเลอร์จะท าการตรวจสอบ Source code ว่าเกิดข้อผิดพลาดหรือไม่– หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนทราบ และต้องแก้ไขโปรแกรม

– หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลงไฟล์ Source code จากภาษาซีไปเป็นภาษาเครื่อง (นามสกุล *.obj)

Page 5: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ข้อดีและข้อเสียของตัวแปลภำษำทั้งสองแบบมีดังนี้

ข้อดี ข้อเสีย

คอมไพเลอร์ • ท างานได้เร็ว เนื่องจากท ำกำรแปลผลทีเดียว แล้วจึงท าตามค าส่ังของโปรแกรมภายหลัง

• เมื่อท าการแปลผลแล้ว ในคร้ังต่อไปไม่จ าเป็นต้องแปลผลใหม่อีกเนื่องจากภาษาเครื่องท่ีแปลได้จะถูกเก็บไว้ที่หน่วยความจ า สามารถเรียกใช้งานได้ทันที

เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะท าการแปลผลทีเดียวท้ังโปรแกรม

อินเตอร์พรเีตอร์ • หาข้อผิดพลาดของโปรแกรมง่ายเนื่องจากท ำกำรแปลผลทีละบรรทัด

• เนื่องจากท างานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมท างานตามค าสั่งเฉพาะจัดที่ต้องการได้

• ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน

ช้า เนื่องจากท างานทีละบรรทัด

Page 6: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ขั้นที่ 3 เชื่อมโยงโปรแกรม (Link)

• การเขียนโปรแกรมภาษาซีนั้น ผู้เขียนโปรแกรมไม่จ าเป็นที่ต้องเขียนค าสั่งต่างๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชั่นมาตรฐานให้ผู้เขียนสามารถเรียกใช้งานได้ เช่น– การเขียนโปรแกรมแสดงข้อความออกทางหน้าจอ ผู้เขียนสามารถใช้

ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานได้ โดยมีการประกาศ (declaration) ฟังก์ชั่นมาตรฐานต่างๆจะถูกจัดเก็บในเฮดเดอรแ์ต่ตัว

• ด้วยเหตุน้ี ภาษาเครื่อง จึงไม่สามารถน าไปใช้งานได้ แต่จ าเป็นที่จะต้องเช่ือมโยง (Link) กับ Library ก่อนท าให้ได้ Executable program (ไฟล์นามสกุล .exe) ที่สามารถน าไปใช้งานได้

Page 7: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ขั้นที่ 4 ประมวลผล (Run)

ขั้นตอนกำรพัฒนำโปรแกรมด้วยภำษำซี

LibraryLibrary

Editor

Test.c………………………………………………

C Compiler Test.obj Test.exe

Library

Output

สร้ำง

Source code Object Program Executable Program

Compile

Link Run

Page 8: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

โครงสร้ำงของโปรแกรมภำษำซี

โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน

1.ส่วนหัวโปรแกรม

ส่วนหัวของโปรแกรมนี้ เรียกว่า “Preprocessing Directive” ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระท าการใดๆ ก่อนการแปลผลโปรแกรม

1

Page 9: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

1. ส่วนหัวโปรแกรม (ต่อ)

ในที่นี้ค าสั่ง #include<stdio.h> ใช้บอกกับคอมไพเลอร์ให้น า

เฮดเดอรไ์ฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการก าหนด preprocessing directives นี้จะขึ้นต้นด้วยเครื่องหมาย # (Pound sign) เสมอ

Page 10: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

1. ส่วนหัวโปรแกรม (ต่อ)

#include<ชื่อเฮดเดอรไ์ฟล>์ คอมไพเลอร์จะท าการค้นหาเฮดเดอรไ์ฟล์ที่ระบุ จากไดเร็คทอรี่ที่ใช้ส าหรับเก็บเฮดเดอร์โดยเฉพาะ (ปกติคือไดเร็คทอรี่ชื่อ include)

#include<ชื่อเฮดเดอรไ์ฟล>์ คอมไพเลอร์จะท าการค้นหาเฮดเดอรไ์ฟล์ที่ระบุ จากไดเร็คทอรี่เดียวกันกับไฟล์ Source code นั้น แต่ถ้าไม่พบก็จะไปค้นหาจากไดเร็คทอรี่ที่ใช้ส าหรับเก็บเฮดเดอรโ์ดยเฉพาะ

Page 11: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

2. ส่วนของฟังก์ชันหลัก

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

Page 12: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ตัวอย่ำงที่ 1.1 argument และ parameter

Argument คือ ตัวรับค่ำเข้ำมำในฟังก์ชนั

Parameter คือ ค่ำที่ส่งไปยังฟังก์ชัน

***ค่ำของทั้งสองจะต้องเป็นขอ้มูลชนดิเดียวกัน เช่น ตัวอักษร

argument (รับ) รับตัวอักษร ‘z’ มำในฟังก์ชัน

parameter (ส่ง) ส่งตัวอักษร ‘z’ ไปยังฟังก์ชัน show()

Page 13: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

3. ส่วนรำยละเอียดของโปรแกรม

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

Page 14: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

คอมเมนต์ในภำษำซี

คอมเมนต์ (Comment) คือ ส่วนที่เป็นหมำยเหตุของโปรแกรม มีไว้เพื่อให้ผู้เขียนโปรแกรมใส่ข้อควำมอธิบำยก ำกับลงไปใน Source code ซึ่งคอมไพเลอร์จะข้ำมกำรแปลผลในสว่นที่เปน็คอมเมนต์นี้

คอมเมนต์มี 2 แบบคือ

1. คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมำย //

2. คอมเมนต์แบบหลำยบรรทัด ใช้เครื่องหมำย /* และ */

Page 15: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ตัวอย่ำงที่ 1.2

ข้อควรระวัง : ในกำรใช้คอมเมนต์ คือ ในกรณีใช้คอมเม้นแบบหลำยบรรทัด จะไม่สำมำรถใช้คอมเมนต์ซ้อนคอมเมนต์ได้

กำรใช้คอมเมนต์แบบหลำยบรรทัด

ส่วนที่เป็นคอมเมนต์จะไม่ได้รับกำรแปลผล

/*Comment1*/ /*Comment2*/ /*Comment3*/

/*Comment1 /*Comment2*/ Comment3*/

Page 16: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

กฏกำรตั้งชื่อ

ภำษำซีมีกฎเกณฑ์ในกำรตั้งชื่อให้กับ 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

Page 17: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

กฎกำรตั้งชื่อ (ต่อ)

2. ชื่อต่ำงๆ ที่ตั้งจะเป็นแบบ case-sentitive หมำยควำมว่ำตัวอักษรตัวใหญ่กับตัวเล็ก ถือว่ำเป็นคนละตัวกัน เช่น TEST, Test, test, tEsT ถือว่ำเป็นคนละชื่อกัน

3. ชื่อจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมำย Underscore (_) เท่ำนั้น จะขึ้นต้นด้วยตัวเลขไม่ได้ แต่ภำยในชื่อสำมำรถประกอบไปด้วยตัวอักษร เครื่องหมำย Underscore หรือตัวเลขก็ได้ เช่น TEST_VALUE, HELLO123, h1_T2, _UserName เป็นต้น

4. กำรตั้งชื่อจะเว้นวรรค (มีช่องว่ำงหรือแท็บภำยในชื่อ) ไม่ได้

5. กำรตั้งชื่อจะประกอบไปด้วยอักขระพิเศษ เช่น $, @, #, & ไม่ได้

Page 18: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ตัวอย่ำงกำรตั้งชื่อที่ถูกต้องและไม่ถูกต้อง

ช่ือที่ถูกต้อง ช่ือที่ไม่ถูกต้องa $hello เพราะช่ือมีอกัขระพิเศษคือ $

b1 User name เพราะมีช่องวา่ง

App_passwd 3people เพราะช่ือขึน้ต้นด้วยตวัเลข

_testValue While เพราะช่ือซ า้กบัค าสงวนในภาษาซี

TRUE data%type เพราะช่ือมีอกัขระพิเศษ คือ %

Page 19: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ภำษำซีโปรแกรมแรก (ตัวอย่ำงที่ 1.3)

บรรทัดที่ 1 : เป็นคอมเมนตข์องภาษาซี เพื่อบอกว่าโปรแกรมนี้ชื่อ

HelloWorldatSSRU.c

บรรทัดที่ 2 : เป็นการบอกให้คอมไพเลอร์น าเฮดเดอรไ์ฟล์ชื่อ stdio.h เข้าร่วมในการแปลผลด้วย โดย stdio ย่อมาจาก standard input/output และ .h คือนามสกุลของเฮดเดอร์ไฟล์ที่รวมเอาประกาศ (declation) ของฟังก์ชันมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการด้านอินพุตและเอาต์พุตไว้เข้ามาไว้ด้วยกัน โปรแกรมนี้จะเรียกใช้งานฟังก์ชัน printf() เพื่อแสดงข้อมูลออกทางจอภาพ และเนื่องจากส่วนของการประกาศฟังก์ชัน printf() ถูกบรรจุในเฮดเดอรไ์ฟล์ ดังนั้นจึงจ าเป็นที่ต้องน าเฮดเดอร์ไฟล์ stdio.h เข้าร่วมในการแปลด้วย

Page 20: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ภำษำซีโปรแกรมแรก (ตัวอย่ำงที่ 1.3)

บรรทัดที่ 3 : คือฟังก์ชัน main() ซึ่งเป็นฟังก์ชันหลักของโปรแกรมกำรท ำงำนของโปรแกรมภำษำซีจะเริ่มต้นที่ฟังก์ชันนี้

บรรทัดที่ 4 : เครื่องหมำย { ระบุจุดเริ่มต้นของฟังก์ชัน main()

บรรทัดที่ 5 : เป็นกำรเรียกใช้ฟังก์ชัน printf() ซึ่งเป็นฟังก์ชันมำตรฐำนของภำษำซี ท ำหน้ำที่แสดงผลข้อมูลออกทำงจอภำพ ในที่นี้จะแสดงข้อควำม “Hello World” ออกทำงจอภำพ

บรรทัดที่ 6 : เครื่องหมำย } ระบุจุดสิ้นสุดของฟังก์ชัน main()

Page 21: แนะน ำภำษำซี · โครงสร้างโปรแกรมภาษาซีแบ่งออกเป็น 3ส่วน 1.ส่วนหัวโปรแกรม

ถำมตอบข้อสงสัยเครดิตหนังสือ : คู่มือเรียนภำษำซี ฉบับปรับปรุงใหม่ พิมพ์ครั้งที่ 10 อรพิณ ประวัติบริสุทธิ์

Q&A