Top Banner
ความรู้เบื้องต้น เกี่ยวกับภาษาซี
32
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction toc

ความรู้เบื้องต้นเกี่ยวกับภาษาซี

Page 2: Introduction toc

เครื่องคอมพิวเตอร์ (Hardware)

หน่วยรบัข้อมูล

หน่วยประมวลผล

หน่วยแสดงผล

ส่วนประกอบของเครือ่งคอมพิวเตอร์

Page 3: Introduction toc

ซอฟต์แวร์ (Software)

• ซอฟต์แวร์ (Software) หรือโปรแกรมคอมพิวเตอร์(Computer Program) คือโปรแกรมที่ถูกเขียนขึ้นมาจากภาษาคอมพิวเตอร์และถูกแปลงให้เป็นภาษาเครื่องเพื่อให้คอมพิวเตอร์ท างานอย่างใดอย่างหนึ่งตามที่เราต้องการ

• แบ่งออกเป็น 2 ประเภทใหญ่ๆ คือ

• System software

• Application software

Page 4: Introduction toc

System Software

• เป็นโปรแกรมที่ท างานเกี่ยวกับระบบคอมพิวเตอร์ มีหน้าท่ีในการควบคุมอุปกรณ์ฮาร์ดแวร์ทุกชนิด และจัดตารางการท างานทั้งฮาร์ดแวร์และซอฟต์แวร์ ที่ท างานกับฮาร์ดแวร์ทุกตัวซึ่งก็คือระบบปฏิบัติการ(Operating System : OS) นั่นเอง

ได้แก่ DOS, Windows, Linux, Mac OS, OS/2

Page 5: Introduction toc

Application Software

• เป็นโปรแกรมที่ถูกสร้างขึ้นเพื่อท างานด้านต่างๆ ซึ่งก็ถูกเขียนขึ้นจากโปรแกรมภาษาต่างๆ เช่น PowerDVD, Windows Media Player, Winamp, Word, Calculator, SPSS

• สามารถแบ่งออกได้หลายประเภท เช่น

• โปรแกรมพมิพ์งาน

• โปรแกรมเกม

• โปรแกรมยูทลิติี้

• โปรแกรมมลัตมิีเดยี

• โปรแกรมส าหรับระบบ

• โปรแกรมภาษาส าหรบัพฒันาซอฟต์แวร์

Page 6: Introduction toc

ภาษาคอมพิวเตอร์

• แบ่งออกเป็น 2 ประเภทใหญ่ๆ คือ

• ภาษาระดบัต่ า ได้แก่ ภาษาเครื่อง และภาษา Assembly

• ภาษาระดบัสูง ได้แก่ Basic, Pascal, Ada, C, Cobol, Fortran และอื่นๆ

• ความแตกต่างระหว่างภาษาระดับสูงและระดับต่ าคือ ภาษาระดับต่ า ควบคุมอุปกรณ์ฮาร์ดแวร์คอมพิวเตอร์ได้ดีกว่า แต่เขียนยาก และยาวมาก

• ส่วนภาษาระดับสูงเขียนง่าย เข้าใจง่ายกว่า เพราะใกล้เคียงภาษามนุษย์ แตม่ีข้อจ ากัดในการควบคุมฮาร์ดแวร์

Page 7: Introduction toc

โปรแกรมที่เขียนขึ้นท างานได้อย่างไร ?

• โปรแกรมที่เขียนขึ้นมา ไม่ว่าจะเขียนโดยใช้อิดิเตอร์(editor) ใดก็ตาม จะไดซ้อร์สโค้ด(source code) ซึ่งจะเก็บในรูปแฟ้มข้อมูล ซึ่งจะมีนามสกุลแตกต่างกันไป เช่น

ภาษา นามสกลุ ตัวอย่าง

C++ C

Pascal Perl PHP Java

.c .cpp

.pas .pl

.php

.java

hello.c hello.cpp hello.pas hello.pl

hello.php hello.java

Page 8: Introduction toc

กระบวนการแปลโปรแกรม

---- ---- ----

ซอร์สโค้ด กระบวนการ แปลโปรแกรม

โปรแกรมที่สามารถ ท างานได้ โดยไม่ตอ้งม ี source code

Page 9: Introduction toc

ตัวแปลภาษา

• คอมไพเลอร(์compiler) • คอมไพเลอร์จะอ่านโปรแกรมทัง้หมดกอ่น เมื่อเจอข้อผิดพลาดก็จะแจ้งใหแ้กไ้ข

• แต่ถ้าไม่พบข้อผิดพลาดใดๆ ในโปรแกรม ก็จะแปลใหเ้ป็นโปรแกรม ที่พร้อมจะท างาน

Page 10: Introduction toc

ตัวแปลภาษา

ขอตรวจสอบดูก่อน

Main() { printf(“XX”); printf(“YY”); }

ซอรส์โคด้

กระบวนการแปลโปรแกรม

มีข้อผดิพลาด ไปแกไ้ขมาใหม่

ถูกต้อง ผ่านได ้

Page 11: Introduction toc

ตัวแปลภาษา

• อินเตอร์พรีเตอร(์interpreter)

• อินเตอร์พรเีตอร ์จะอ่านโปรแกรมมาทีละบรรทัดและท าตามค าสั่งแบบบรรทัดตอ่บรรทัด ถ้าเจอข้อผดิพลาดโปรแกรมจะหยดุและแจ้งให้ทราบว่าผดิพลาด

• ตัวอยา่งเช่น การแปลภาษา HTML

Page 12: Introduction toc

ไฟล์โปรแกรมที่ได้จากการแปลภาษา

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

• ไฟล์โปรแกรมที่ไดน้ั้นเป็นไฟล์แบบเลขฐานสอง หรือ ไบนารีไฟล์(.exe) เรียกว่าเอ็กซีคิวเทเบิ้ลไฟล์ (executable file)

Page 13: Introduction toc

สรุป

Editor

Preprocessor

Compiler

Linker

Loader

Memory

การเตรียมโปรแกรม

ภาษาซตีน้ฉบบั

การประมวลผล

ก่อน

การคอมไพล์

การเชือ่มโยงโปรแกรม

การบรรจุโปรแกรม

Page 14: Introduction toc

โครงสร้างพืน้ฐานของภาษาซี

โครงสร้างพื้นฐานของโปรแกรมภาษาซีจะต้องประกอบด้วยโปรแกรมย่อย (function) อย่างน้อย 1 ฟังก์ชัน มีรูปแบบดังนี้

void main ( ) // ส่วนหัวของฟงัก์ชนั

{

การประกาศตวัแปรทอ้งถิน่; // ส่วนการประกาศตวัแปร

ค าสั่งตา่งๆ; // ส่วนค าสัง่

}

ฟังก์ชัน main มีประกอบดว้ย 3 ส่วนหลัก คือ

1. ส่วนหัวของฟงัก์ชนั ประกอบดว้ย ชนิดข้อมลู void ชื่อฟังกช์นั main ตามดว้ยเครือ่งหมาย () 2. ส่วนการประกาศตวัแปร ใช้ส าหรบัประกาศตวัแปรชนิดตา่งๆ เพื่อเกบ็ข้อมลู 3. ส่วนค าสัง่ ประกอบดว้ยค าสัง่ทีเ่กีย่วขอ้งกบัการรับเขา้และการแสดงผลขอ้มลูและค าสัง่ประมวลผลอืน่ๆ

Page 15: Introduction toc

สรุปโครงสร้างโปรแกรม

Preprocessor directive

void main() { }

statement

Local definitions

global definitions

ทุกโปรแกรม ต้องมี

ใช้เรียกไฟล์ที่ต้องการกอ่นคอมไพล์ โปรแกรมทีพ่บไดแ้ก่ #include, #define เป็นตน้

ใช้ประกาศตวัแปรหรือฟังกช์นั ที่สามารถเรยีกใชไ้ด้ทุกส่วน

ตัวแปรและค าสัง่ตา่ง ๆ ที่ใช้ใน โปรแกรม

Page 16: Introduction toc

โครงสร้างพื้นฐานของภาษาซี

จุดผิดพลาดของโปรแกรมเรียกว่าบัก (bug)

ส่วนการแก้ไขข้อผิดพลาดให้ถูกต้องเรียกว่า (debug)

จุดบกพร่องของโปรแกรมจะมี 2 ประเภท

Syntax error หรือ coding error

Logic error

Page 17: Introduction toc

ตัวอย่างโปรแกรม : ส่วนประกอบของภาษาซ ี ส่วนประกอบของภาษาซสีามารถแบง่ออกได้เปน็2ส่วนใหญ่ๆ คือไฟลห์วัโปรแกรม (Header files) และสว่นของตวัโปรแกรม

ดตูัวอยา่ง /*Example Program */ #include <stdio.h> main() { clrscr(); printf("*********************\n"); printf("Example Program\n"); printf("*********************\n"); }

ส่วนของค าอธิบายไม่มีผลต่อการคอมไพล ์ไฟล์ส่วนหัวโปรแกรม ฟังก์ชันหลักของโปรแกรม ปีกกาเปิดเริ่มต้นการเขียนโปรแกรม ตัวโปรแกรมภาษาซี

ปีกกาปิด จบโปรแกรม

Page 18: Introduction toc

ไฟล์ .h ที่ตามหลัง include

ไฟลน์ามสกลุ .h เป็น Header file หรือไฟลส์่วนหวัทีร่วบรวมค าสัง่ตา่ง ๆ

ของภาษาซเีอาไว ้เพื่อให้ผูเ้ขยีนสามารถใช้ฟังกช์นัได ้ มีอยู่หลายไฟล์เช่น

stdio.h เก็บฟงักช์นัที่ใชง้านทั่วไป เช่น printf , scanf โปรแกรมสว่นมากจะใช้ไฟลน์ี้

conio.h เก็บฟงักช์นัควบคุมการแสดงผลต่าง ๆ

string.h เก็บฟงักช์นัที่ใชใ้นการประมวลผลกบัขอ้ความ

math.h เก็บฟงักช์นัทีใ่ชใ้นการค านวณทางคณติศาสตร์ เช่น sin,cos,log

Page 19: Introduction toc

printf()

control : เป็นส่วนควบคุมการแสดงผล ประกอบด้วยข้อความ รหัสควบคุม

(เช่น %d %f) และอักขระควบคุมการแสดงผล(\n)

value : ได้แก่ค่าตัวแปร นิพจน์ ที่ต้องการแสดงผล ถ้าหากมีมากกว่าหน่ึงตัวให้ใช้ comma คั่นระหว่างแต่ละตัว

printf (“ control “,value);

Page 20: Introduction toc

ตัวอย่าง : รหัสรูปแบบ (Format Code)

• %d แสดงเลขจ านวนเต็ม (int,short,unsigned ,….)

• %f แสดงเลขทศนิยม (float,double,…)

• %c แสดงตัวอักขระหนึ่งตัว

• %s แสดงผลเป็นข้อความ

• %p แสดงผลเป็นตัวชี้ต าแหน่ง (pointer)

Page 21: Introduction toc

ตัวอย่าง : รหัสควบคุมการ

แสดงผล

• \n ขึ้นบรรทัดใหม ่ • \t เว้นช่องว่างเป็นระยะ 1 tab หรือหกตัวอักขระ

• \r ใหเ้คอร์เซอร์ขึ้นบรรทัดใหม ่

• \f เว้นช่องว่างเป็นระยะหนึ่งหน้าจอ

• \a ส่งเสียง beep

Page 22: Introduction toc

ตัวแปร (variables) ตัวแปร เป็นชื่อของหน่วยความจ าที่ต าแหน่งต่าง ๆ ที่ผู้เขียนโปรแกรมก าหนด มีไว้ส าหรับเก็บข้อมูลต่าง ๆ ระหว่าง การท าโปรแกรม แบ่งตามประเภทได้ดังนี ้

• ตัวแปรเก็บข้อมูลชนิดจ านวนเต็ม

• ตัวแปรเก็บข้อมูลชนิดจ านวนจริง

• ตัวแปรเก็บข้อมูลชนิดตัวอักขระ

• ตัวแปรเก็บข้อมูลชนิดสายอักขระ (สตริง)

Page 23: Introduction toc

กฎการตั้งชื่อตัวแปร

• กฎข้อที่1 ชื่อตัวแปรต้องไม่มีตวัอักษรพิเศษ เช่น ! @ # $ % ^ & * (

• กฎข้อที่2 สามารถใช้เคร่ืองหมาย Underscore ( _ ) ได้

• กฎข้อที่3 ชื่อตัวแปรจะมีตัวเลขก็ได้ แต่ต้องไม่ขึ้นต้นด้วยตัวเลข

• กฎข้อที่4 ห้ามมีช่องว่าง (Space)

• กฎข้อที่5 สามารถใช้ตัวอักษรตัวเล็ก(a,b,…) และตัวอักษรตัวใหญ่ (A,B,…)

• กฎข้อที่6 ชื่อตัวแปรที่สะกดเหมือนกัน แต่ใช้ตัวอักษรเล็ก-ใหญ่ต่างกัน ถือว่าเป็นตัวแปรคนละตัวกัน

• กฎข้อที7่ ห้ามตั้งชื่อตัวแปรซ้ ากับค าสงวนหรือค าสั่งในภาษา C เช่น char, int, long, main เป็นต้น

Page 24: Introduction toc

ค าสงวน (Reserved Words) : ANSI C

auto extern sizeof break float static case for struct char goto switch const if typedef continue int union default long unsigned do register void double return volatile else short while enum signed

asm _cs _ds _es

_ss cdecl far huge

interrupt near pascal _export

Page 25: Introduction toc

กฎการตั้งชื่อตัวแปร

• อย่าเอาตัวเลขน าหน้า

• อย่าให้มาตรงกับค าสงวน

• อย่าให้มีเครื่องหมายใดไม่ควรมีช่องว่างใดๆ เลย

Page 26: Introduction toc

ชนิดข้อมูล (data type)

ชนิดข้อมูล การประกาศ ขนาด (Byte) ช่วงของข้อมลู

ตัวอักขระ char 1 -128 ถึง 127

unsigned char 1 0 ถึง 255

signed char 1 -128 ถึง 127

เลขจ านวนเต็ม int 2 -32,768 ถึง 32,767

unsigned int 2 0 ถึง 65,535

เลขจ านวนเต็ม long 4 -2,147,483 ถึง

2,147,483,647

เลขทศนิยม float 4 3.4 x 10-38

ถึง 3.4 x 1038

เลขทศนิยม double 8 1.7 x 10-308 ถึง 1.7x10 +308

เลขทศนิยม long double 10 3.4 x 10-4032 ถึง 3.4 x 104032

Page 27: Introduction toc

ตัวด าเนินการทางคณิตศาสตร ์

การค านวณ ตัวด าเนินการ ตัวอย่าง การท างาน

บวก + c = a + b; น า a บวก b ผลลัพธ์เก็บใน c

ลบ - c = a - b; น า a ลบ b แล้ว เก็บใน c

คูณ * c = a * b; น า a คูณ b แล้ว เก็บใน c

หาร / c = a / b; การหาร (ระวัง ขึ้นกับประเภท ของข้อมูลด้วย)

มอดูลัส % c = a % b; เป็นการหารที่ เก็บเศษไว้ใน c

Page 28: Introduction toc

ตวัด ำเนินกำรเอกภำค (unary operator)

เป็นกำรใชต้วัด ำเนินกำรกบัตวัแปรตวัเดียว มีกำรใชส้องแบบคือ

1. ตวัด ำเนินกำรเอกภำคเติมหลงั (postfix mode)

EX: a++;

2. ตวัด ำเนินกำรเอกภำคเติมหนำ้ (prefix mode)

EX: ++a;

Page 29: Introduction toc

ตัวด าเนินการประกอบ

ตัวด าเนินการประกอบ ตัวอย่าง การท างาน

+= x += 5 x = x + 5

-= x -= 5 x = x - 5

*= x *= y x = x * y

/= x /= y x = x / y

%= x %= 5 x = x % 5

+= x += y/8 x = x + y / 8

เป็นการใชต้วัด าเนินการหนึง่ตวัร่วมกบั เครื่องหมายเทา่กบั

Page 30: Introduction toc

ล าดับในการด าเนินการ

ถ้าหากมีการใช้ตัวด าเนินการประกอบและตัวด าเนินการเอกภาคหลายตัว จะมีล าดับท างานดังน้ี

1. () 2. ++ -- 3. * / % 4. + - 5. += *= /= -= %=

Page 31: Introduction toc

ตัวอย่างการใช้งาน ค าสั่ง x y

int x = 10, y = 20; 10 20 ++x; 11 20 y = - -x; 10 10 x = x-- +y; 19 10 y = x- ++x; 20 0

Page 32: Introduction toc

แหล่งที่มา www.samsenwit.ac.th/e-

book/computer/prapakorn/c/document/c.pps