41
กกกกกกกกกกกกกกก กกกกกกกกกกกกกกก กกกกกกกกกก กกกกกกกกกก ณณณณณณณ ณณณณณณณณ ณณณณณณณณณณณณณณณณณณณณณณณณ ณณณณณณณณณ ณณณณณณณณณณณณณณณณณณณณณณณณ

ภาษาซี

Embed Size (px)

DESCRIPTION

สไลด์การเขียนโปรแกรมภาษาซี

Citation preview

การเขี�ยนโปรแกรมด้�วยการเขี�ยนโปรแกรมด้�วยภาษาซี�ภาษาซี�

ณั�ฐวุ�ฒิ� ปอโนนสู�งกลุ่��มสูาระฯการงานอาชี�พแลุ่ะเทคโนโลุ่ยี�

โรงเร�ยีนศร�สูะเกษวุ�ทยีาลุ่�ยี

2

เน��อหาเน��อหา•ประวุ�ติ�ควุามเป#นมาของภาษาซี�•แนวุทางการพ�ฒินาโปรแกรม•โฟลุ่(วุชีาร(ติแลุ่ะค)าสู�*งเท�ยีม•โครงสูร+างของโปรแกรมท�*เข�ยีนด้+วุยี

ภาษาซี�•ข+อม�ลุ่ในภาษาซี�•ติ�วุแปร•กลุ่ไกการท)างานเบื้01องติ+นของภาษาซี�

3

ตระหน�กสั�กน�ด้ตระหน�กสั�กน�ด้............• การเร�ยีนวุ�ชีาน�1ให้+ได้+ผลุ่ด้� ติ+องอ�าน

ท)าควุามเข+าในมาก�อนลุ่�วุงห้น+า แลุ่ะติ+อง ลุ่งม0อวุ�ธี�ค�ด้แก+ป5ญห้า ค�ด้โปรแกรม แลุ่ะ

ติ+องลุ่งม0อเข�ยีนด้+วุยีตินเอง• ยี�*งเข�ยีนโปรแกรมมาก ค�ด้แก+โจทยี(

ห้ลุ่ายีประเภทมาก ๆยี�*งเข+าใจมาก• ภาคเร�ยีนน�1 เห้ม0อนการห้�ด้ข�*จ�กรยีานให้+

เป#น ติ+องร� +แลุ่ะเข+าใจสู�วุนติ�าง ๆของจ�กรยีาน

4

ประว�ต�ความเป�นมาขีองประว�ต�ความเป�นมาขีองภาษาซี�ภาษาซี�•ค�ด้ค+นเป#นคร�1งแรกโด้ยี นายีเด้นน�สู ร�ท

ซี�*(Dennis Ritchie) ป9 ค.ศ.1972 •ป9 ค.ศ.1978 ได้+ร�บื้การพ�ฒินาแลุ่ะเผยี

แพร�อยี�างเป#นทางการ โด้ยี Brain Kernighan แลุ่ะ Dennis Ritchieได้+ร�บื้การยีอมร�บื้แลุ่ะใชี+งานอยี�างกวุ+างขวุาง จนเผยีแพร�ไปท�*วุโลุ่ก

•ป9 ค.ศ.1988 สูร+างมาติรฐานของภาษาซี�ข:1น เร�ยีกวุ�า ANSI C เพ0*อใชี+เป#นมาติรฐานในการสูร+างภาษาซี�ร�นติ�อ ๆไป

5

จุ ด้เด้!นขีองภาษาซี�จุ ด้เด้!นขีองภาษาซี�• เป#นภาษาท�*ม�การก)าห้นด้มาติรฐานสู)าห้ร�บื้เคร0*อง

คอมพ�วุเติอร(ท�กร� �น แลุ่ะระบื้บื้ปฏิ�บื้�ติ�การท�กชีน�ด้•ม�การพ�ฒินาติ�วุแปลุ่ภาษา C ข:1นมาใชี+มากมายี•โปรแกรมท�*เข�ยีนด้+วุยีภาษาซี� จะม�ขนาด้เลุ่<ก ท)างาน

ได้+เร<วุ•ภาษาซี� ม�โครงสูร+างทางภาษาท�*ด้�•สูามารถเข�ยีนค)าสู�*งควุบื้ค�มอ�ปกรณั(ฮาร(ด้แวุร(บื้าง

สู�วุนได้+•ม�ฟ5งก(ชี� *นสู)าเร<จร�ปสู)าห้ร�บื้งานติ�าง ๆให้+เลุ่0อกใชี+มาก

6

ป"ญหาขีองโปรแกรมเมอร$ป"ญหาขีองโปรแกรมเมอร$ม�อใหม!ม�อใหม!• ไม�ร� +สูภาพแวุด้ลุ่+อมของระบื้บื้วุ�าเป#นอยี�างไร( เปร�ยีบื้

เห้ม0อนก�บื้ไม�ร� +วุ�ฒินธีรรม) การร� +วุ�าระบื้บื้ประกอบื้ ด้+วุยีอะไรบื้+าง เป#นการท)าให้+เข�ยีนโปรแกรมติ�ด้ติ�อก�บื้

องค(ประกอบื้ท�*ติ+องการได้+อยี�างถ�กติ+อง• ไม�ร� +ห้ลุ่�กภาษา(เปร�ยีบื้เห้ม0อนก�บื้ไม�ร� +ห้ลุ่�กภาษา

อ�งกฤษ)• ไม�ร� +วุ�าจะน)าเสูนอแนวุค�ด้การแก+ป5ญห้า ท�*เราค�ด้ใน

ฐานะมน�ษยี( มาสู��กระบื้วุนการแก+ไขป5ญห้า ท�*เราค�ด้ แทนการท)างานของคอมพ�วุเติอร( ประเด้<นน�1เป#น

ประเด้<นห้ลุ่�กท�*สู)าค�ญมากกวุ�า สูองประเด้<นแรก ท�*ผ�+ เข�ยีนโปรแกรมม0อให้ม�ม�กจะประสูบื้ป5ญห้า ซี:*งเรา

สูามารถพ�ฒินาท�กษะได้+โด้ยีการท)าโจทยี(ป5ญห้าบื้�อยี ๆ แลุ่ะท)ามาก ๆ จะยี�*งเก�ด้ท�กษะ

7

คอมพิ�วเตอร$ทำ(างานอะไรคอมพิ�วเตอร$ทำ(างานอะไรได้�บ้�างได้�บ้�าง•ท)าห้น+าท�*ค)านวุณั

•ท)าห้น+าท�*ร �บื้ข+อม�ลุ่•แสูด้งผลุ่ข+อม�ลุ่•พ�กข+อม�ลุ่ชี�*วุคราวุระห้วุ�างการ

ค)านวุณั

8

ขี��นตอนการทำ(างานขีองขี��นตอนการทำ(างานขีองโปรแกรมภาษาซี�โปรแกรมภาษาซี�

# include<stdio.h>main(){ printf(“Hello world”) ;}

# include<stdio.h>main(){ printf(“Hello world”) ;}

C compilertest.obj

ฟ5งก(ชี�นจากไลุ่บื้ราร�*ในภาษาซี�

linkerBinary file

.exetest.c

ไฟล์$ชื่�.อ test.c

คอมไพิล์$ ล์�งค$

9

ขี��นตอนการพิ�ฒนาขี��นตอนการพิ�ฒนาโปรแกรมเบ้��องต�นโปรแกรมเบ้��องต�น

สู)าห้ร�บื้ในรายีวุ�ชีาน�1 เราจะไม�ลุ่งลุ่:กในกระบื้วุนการ ออกแบื้บื้เชี�งวุ�ติถ� แติ�จะห้ยี�บื้เอาเพ�ยีงบื้างสู�วุนของ

กระบื้วุนการมาใชี+เท�าน�1น กระบื้วุนการท�*เราจะเข�ยีนโปรแกรมในรายีวุ�ชีาน�1 จะยี:ด้

ห้ลุ่�กติ�อไปน�1• การวุ�เคราะห้(ป5ญห้า แลุ่ะควุามติ+องการของผ�+ใชี+งาน• การออกแบื้บื้อ�ลุ่กอร�ท:มของโปรแกรม• การพ�ฒินาลุ่งบื้นคอมพ�วุเติอร(

- แปลุ่งอ�ลุ่กอร�ท:มแลุ่ะข+อก)าห้นด้ของข+อม�ลุ่ ให้+มาอยี��ในร�ปโปรแกรม

• ทด้สูอบื้การท)างานของโปรแกรม

10

การน(าเสันออ�ล์กอร�ทำ1มการน(าเสันออ�ล์กอร�ทำ1ม• ในการเข�ยีนโมเด้ลุ่ของระบื้บื้ สู�วุนท�*จ)าเป#น

อยี�างห้น:*งค0อ สู�วุนอธี�บื้ายีกลุ่ไกการท)างานของโปรแกรม โด้ยีอธี�บื้ายีในลุ่�กษณัะของข�1นติอนการท)างานวุ�าม�ลุ่)าด้�บื้อยี�างไร ม�ท�ศทางการท)างานอยี�างไร

•ข�1นติอนการท)างานของโปรแกรมน�1เอง เร�ยีกวุ�า อ�ลุ่กอร�ท:ม (Algorithm)

• เราน�ยีมเข�ยีนอ�ลุ่กอร�ท:มอธี�บื้ายีในร�ปแบื้บื้ภาษาท�*มน�ษยี(เข+าใจ ไม�ข:1นก�บื้ภาษาคอมพ�วุเติอร(ใด้

11

การน(าเสันออ�ล์กอร�ทำ1มการน(าเสันออ�ล์กอร�ทำ1มการเข�ยีนอธี�บื้ายีอ�ลุ่กอร�ท:ม สูามารถ

ท)าได้+ 2 ลุ่�กษณัะค0อ1 .ลุ่�กษณัะการเข�ยีนอธี�บื้ายีด้+วุยี

ข+อควุาม ซี:*งเร�ยีกวุ�า Pseudo code ห้ร0อ Psedo algorithm

2. ลุ่�กษณัะการเข�ยีนอธี�บื้ายีด้+วุยีแผนภาพ เร�ยีกวุ�า Flowcharg ห้ร0อ Flow diagram

12

Pseudo AlgorithmPseudo Algorithmโจทยี( จงเข�ยีนโฟลุ่(วุชีาร(ติโปรแกรมร�บื้ค�าเลุ่ขจ)านวุนเติ<ม 2 จ)านวุน แลุ่ะห้าผลุ่บื้วุกของเลุ่ขท�1ง 2 จ)านวุนน�1น

STARTREAD XREAD Y

COMPUTE SUM= X + YPRINTF SUM

STOP

STARTSTART

STOPSTOP

INPUT X,YINPUT X,Y

PRINT SUMPRINT SUM

SUM=X+YSUM=X+Y

การเขี�ยนอ�ล์กอร�ทำ1มโด้ยใชื่�ประโยคภาษา

อ�งกฤษ

FLOWCHART

13

สั�ญญล์�กษณ์$ร4ปภาพิขีองสั�ญญล์�กษณ์$ร4ปภาพิขีองโฟล์ว$ชื่าร$ตโฟล์ว$ชื่าร$ต โฟลุ่วุ(ชีาร(ติ ค0อ การแสูด้งข�1นติอนการท)างานโด้ยี

ใชี+สู�ญลุ่�กษณั(ร�ปภาพเป#นติ�วุสู0*อควุามห้มายี แลุ่ะใชี+ลุ่�กศรก)าห้นด้ท�ศทางการท)างานในแติ�ลุ่ะข�1นติอน

จ�ด้เร�*มติ+น ห้ร0อจ�ด้สู�1นสู�ด้

ท�ศทาง

จ�ด้เชี0*อมติ�อ

แสูด้งผลุ่ออกทางเคร0*องพ�มพ( ร�บื้ข+อม�ลุ่ ห้ร0อ

แสูด้งข+อม�ลุ่ร�บื้ข+อม�ลุ่เข+าจาก

ค�ยี(บื้อร(ด้การท)างาน 1 ข� 1น

ติอน การติ�ด้สู�นใจ ห้ร0อเปร�ยีบื้

เท�ยีบื้

14

Flow diagramFlow diagramSTART

STOP

ก)าห้นด้เลุ่ขรถ

รถมา

ห้มายีเลุ่ขรถ=ท�*ก)าห้นด้

เด้�นขี1�นรถ

มายี�ง

ไม!ใชื่!

ใชี�

15

ต�วอย!างโปรแกรมภาษาซี�ต�วอย!างโปรแกรมภาษาซี�/*say hello to user */#include<stdio.h>main(){printf(“Hello C programmer”);

}

สู�วุนห้�วุของโปรแกรม(Head)

สู�วุนติ�วุโปรแกรม(Body)

16

ร4ปแบ้บ้การเขี�ยนค(าสั�.งร4ปแบ้บ้การเขี�ยนค(าสั�.งภาษาซี�ภาษาซี�

•ค)าสู�*งในภาษาซี� จะติ+องเข�ยีนด้+วุยีติ�วุอ�กษรติ�วุเลุ่<ก เชี�น printf( );

•ท�กค)าสู�*งติ+องลุ่งท+ายีด้+วุยีเคร0*องห้มายี ; (semi-colon)

•เราสูามารถเข�ยีนค)าสู�*งให้+ติ�อเน0*องก�นไปก<ได้+ แติ�ไม�สูะด้วุกในการติรวุจสูอบื้ จ:งน�ยีมเข�ยีนค)าสู�*งเพ�ยีงห้น:*งค)าสู�*งในแติ�ลุ่ะบื้รรท�ด้

17

โครงสัร�างขีองโปรแกรมโครงสัร�างขีองโปรแกรมภาษาซี�ภาษาซี�

• สู�วุนห้�วุของโปรแกรม จะเร�*มติ+นติ�1งแติ�บื้รรท�ด้แรกของโปรแกรม จนมาถ:งก�อนบื้รรท�ด้ ฟ5งก(ชี� *น main() ประกอบื้ด้+วุยี

-Preprocessing Directive เชี�น #include ,#define

- สู�วุนการน�ยีามชี0*อ(การประกาศติ�วุแปร)• สู�วุนติ�วุของโปรแกรม ประกอบื้ด้+วุยีค)าสู�*งติ�างๆ

ในโปรแกรม- ค)าสู�*งเด้�*ยีวุ- ฟ5งก(ชี� *น

18

Preprocessing Preprocessing Directive(#)Directive(#)•Preprocessing Directive ค0อ

เคร0*องห้มายีท�*แจ+งให้+คอมไพเลุ่อร(กระท)าการอยี�างใด้อยี�างห้น:*ง (เม0*อท)าเสูร<จ ณั จ�ด้น�1นแลุ่+วุ จ:งค�อยีๆ แปลุ่โปรแกรมติ�อไป

•อยี�าลุ่0มวุ�า กระบื้วุนการท�*เก�ด้ข:1นโด้ยี Preprocessing Directive น�1นเก�ด้แก�ติ�วุคอมไพเลุ่อร((ผ�+เข�ยีนโปรแกรมภาษาซี�สู�*งให้+คอมไพเลุ่อร(ท)า ) แลุ่ะเก�ด้ในขณัะแปลุ่โปรแกรม ไม�ใชี�ติอนท�*โปรแกรมร�น

•ค)าสู�*งท�*เราสู�*งคอมไพเลุ่อร(น�1 จะข:1นติ+นด้+วุยีเคร0*องห้มายี # เสูมอ

19

#Include Directive#Include Directive• #Include directive เป#นได้เรคท�พท�*ท)าห้น+าท�*บื้อกให้+

คอมไพเลุ่อร(ไปเป@ด้ไฟลุ่(อ0*นเข+ามาแปลุ่ร�วุมด้+วุยี• ไฟลุ่(ท�*จะน)ามาแปลุ่ร�วุมด้+วุยี จะติ+องเข�ยีนอยี��ภายีใติ+กฎ

โครงสูร+างภาษาซี�• ไฟลุ่(.h ยี�อมาจาก header file ห้ร0อไฟลุ่(สู�วุนห้�วุ ซี:*ง

เป#นไฟลุ่(ติ+นฉบื้�บื้(source code) ท�*น�ยีามชี0*อฟ5งก(ชี� *นห้ร0อชี0*อติ�าง ๆ ไวุ+สู)าห้ร�บื้ใชี+ในโปรแกรม

• เวุลุ่าคอมไพเลุ่อร(เจอ #include< > ห้ร0อ #include” “ คอมไพเลุ่อร(จะไปเป@ด้ไฟลุ่(ด้�งกลุ่�าวุท�*ได้เรคทอร�* include (ห้ร0อกรณั� “ “ จะพยีายีามเป@ด้ได้เรคทอร�*เด้�ยีวุก�นก�บื้ไฟลุ่(ติ+นฉบื้�บื้ก�อน ) เพ0*อด้:งเอาข+อควุามในน�1นมาคอมไพลุ่( เม0*อห้มด้สู�1นแลุ่+วุ จ:งคอมไพลุ่(ติ�อจากท�*ค+างไวุ+ติ�อไป

20

#Include Directive#Include Directive•ภาษาซี� ใชี+การเร�ยีกใชี+ Header file เพ0*อให้+

โปรแกรมท�*เราเข�ยีนข:1นร� +จ�กฟ5งก(ชี�*นท�*น�ยีามไวุ+เป#นมาติรฐานในติ�วุภาษาซี�

•ด้�งน�1น ผ�+เข�ยีนโปรแกรมจะติ+องทราบื้วุ�าจะติ+องใชี+ฟ5งก(ชี�*นใด้ ชี0*อใด้จะติ+องเร�ยีกใชี+ Header file ติ�วุใด้ ห้ากไม�ร� +ก<สูามารถค+นห้าจาก Help ของคอมไพเลุ่อร(ได้+

#include<stdio.h> อ�านไฟลุ่(จากได้เรคทอร�ห้ลุ่�ก

#include”file name” อ�านไฟลุ่(จากได้เรคทอร�*ป5จจ�บื้�น ห้ร0อท�*ก)าห้นด้

21

#define Directive#define Directive• #define Directive ใชี+สู)าห้ร�บื้น�ยีามชี0*อแทน

สู�วุนของโปรแกรม• เวุลุ่าท�*คอมไพเลุ่อร(แปลุ่ไปจนพบื้ชี0*อท�*น�ยีามด้+วุยี

#define เม0*อไห้ร�ก<จะเปลุ่�*ยีนชี0*อน�1นเป#นสู�วุนท�*น�ยีามไวุ+ แลุ่+วุจ:งค�อยีแปลุ่ติ�อไป

• ประโยีชีน(ของ #define ค0อแทนท�*เราจะก)าห้นด้ค�า ห้ร0อบื้างสู�*งบื้างอยี�างท�*ห้มายีถ:งสู�*งเด้�ยีวุก�นซี)1า ๆ ในห้ลุ่ายี ๆจ�ด้ของโปรแกรม แลุ่+วุเม0*อติ+องการแก+ไข จะติ+องติามไปแก+ท�กจ�ด้ ท)าให้+เสู�ยีเวุลุ่า ไม�สูะด้วุก การใชี+ #define จะท)าให้+เราน�ยีามไวุ+จ�ด้เด้�ยีวุ สูามารถแก+ไขได้+ท�กจ�ด้ในโปรแกรม

22

หมายเหต หมายเหต (comment)(comment)• ห้มายีเห้ติ� ค0อ องค(ประกอบื้ภายีในโปรแกรม

ติ+นฉบื้�บื้(Source code) ท�*เราเข�ยีนข:1น แติ�ไม�ติ+องการให้+คอมไพเลุ่อร(กระท)าการใด้ ๆ

• การเข�ยีนห้มายีเห้ติ�สูามารถท)าได้+ 2 ลุ่�กษณัะค0อ- ใชี+เคร0*องห้มายี /* แลุ่ะ */ คร�อมพ01นท�*ท�*เป#นห้มายีเห้ติ�- ใชี+เคร0*องห้มายี // น)าห้น+าข+อควุามท�*เป#นห้มายีเห้ติ�ในบื้รรท�ด้น�1นๆ

/*say hello to user*/#include<stdio.h> //header filemain(){

printf(“Hello C programmer”);}

ระห้วุ�างเคร0*องห้มายี/*แลุ่ะ*/

ค0อห้มายีเห้ติ�ติ�1งแติ�ติรงน�1เป#นติ+นไปค0อ

ห้มายีเห้ติ�

23

องค$ประกอบ้ขีองฟ"งก$ชื่�.นองค$ประกอบ้ขีองฟ"งก$ชื่�.น• โปรแกรมภาษาซี� จะท)างานได้+สูมบื้�รณั(ติ+องม�ฟ5ง

ก(ชี�*น main() เป#นฟ5งก(ชี�*นห้ลุ่�กของโปรแกรม• ฟ5งก(ชี�*นม�องค(ประกอบื้ด้�งน�1

- สู�วุนห้�วุของฟ5งก(ชี�*น ท)าห้น+าท�*ก)าห้นด้ชี0*อฟ5งก(ชี�*นไวุ+อ+างอ�ง แลุ่ะก)าห้นด้การร�บื้ค�าเข+ามาค)านวุณั แลุ่ะสู�งค�ากลุ่�บื้ออกมาเป#นผลุ่ลุ่�พท(- สู�วุนติ�วุของฟ5งก(ชี�*น ท)าห้น+าท�*ก)าห้นด้การท)างาน แลุ่ะอ0*นใด้ท�*จะม�ผลุ่เฉพาะในฟ5งก(ชี�*น

24

องค$ประกอบ้ขีองฟ"งก$ชื่�.นองค$ประกอบ้ขีองฟ"งก$ชื่�.นชีน�ด้ค�าสู�งกลุ่�บื้ ชี0*อฟ5งก(ชี� *น(พาราม�เติอร(ร�บื้ค�าเข+า){

สู�วุนก)าห้นด้ติ�วุแปรใชี+ในฟ5งก(ชี� *นสู�วุนค)าสู�*ง

}int main(){

int a;printf(“Hello world\n”);return 0;

}

ห้�วุฟ5งก(ชี�*น

ติ�วุฟ5งก(ชี�*น

ก)าห้นด้ติ�วุแปรใชี+

ภายีใน

สู�วุนค)าสู�*ง

25

องค$ประกอบ้ขีองฟ"งก$ชื่�.นองค$ประกอบ้ขีองฟ"งก$ชื่�.นจากติ�วุอยี�าง จะเห้<นวุ�า- พาราม�เติอร(ท�*ใชี+ผ�านค�าเป#น void ในท�*น�1ห้มายี

ถ:ง ไม�ม�ค�าสู�งเข+า ” ” (ภาษาซี� ก)าห้นด้ควุามห้มายีของ void ไวุ+ 2 อยี�างค0อ ไม�ม� ห้ร0อ ไม�” ” “เจาะจง กรณั�ห้ลุ่�งม�ค�า แติ�ไม�ทราบื้ชีน�ด้แน�นอน ” (เราจะมาศ:กษาภายีห้ลุ่�ง)

- ค�าสู�งกลุ่�บื้เป#น int แสูด้งวุ�าเม0*อฟ5งก(ชี� *นน�1ท)างานเสูร<จจะ ให้+ค�า ออกมาค�าห้น:*ง ม�ชีน�ด้เป#น ” ” int

- สู�วุนติ�วุของฟ5งก(ชี� *น ติ�1งแติ�เคร0*องห้มายี { ถ:ง }อ�นก)าห้นด้ขอบื้เขติของ กลุ่��มค)าสู�*ง ” ” (compound statement)กลุ่��มค)าสู�*งในภาษาซี� ม�ควุามห้มายีเท�าก�บื้ ห้น:*งค)าสู�*ง

26

องค$ประกอบ้ขีองฟ"งก$ชื่�.นองค$ประกอบ้ขีองฟ"งก$ชื่�.น- ภายีในสู�วุนค)าสู�*ง ม�การก)าห้นด้ติ�วุแปรใชี+

ภายีใน จากติ�วุอยี�างก)าห้นด้ให้+ a เป#นติ�วุแปรชีน�ด้ int แลุ่ะม�สู�วุนค)าสู�*งการท)างาน 2 ค)าสู�*ง แลุ่ะจบื้ค)าสู�*งด้+วุยีเคร0*องห้มายี ;

27

ชื่�.อชื่�.อ((Identifiers)Identifiers)• ชี0*อ(Identifiers) ในภาษาซี�ห้มายีถ:ง การเอา

ติ�วุอ�กขระมาเข�ยีนก)าห้นด้ ติ�ด้ติ�อก�นติ�อเน0*องเป#นค)า เพ0*อใชี+ในการน)าเสูนอสู�*งติ�าง ๆในโปรแกรม

• ชี0*อม� 2 ประเภท- ค)าสูงวุน (keyword) ค0อค)าท�*ภาษาซี�ก)าห้นด้ไวุ+ก�อนแลุ่+วุ เราจะน�ยีามซี)1าไม�ได้+- ค)าท�*ผ�+ใชี+ติ�1งข:1นให้ม� (user define words) เป#นค)าท�*ภาษาซี�ไม�ได้+ก)าห้นด้ไวุ+ ผ�+เข�ยีนโปรแกรมสูามารถติ�1งชี0*อให้ม�ได้+ เพ0*อใชี+สู0*อสูารในโปรแกรม

28

ชื่�.อชื่�.อ((Identifiers)Identifiers)ชี0*อ(Identifiers) ม�กฎการก)าห้นด้ไวุ+ด้�งน�1- ติ+องข:1นติ+นด้+วุยีติ�วุอ�กษร A-Z ห้ร0อ a-z

ห้ร0อเคร0*องห้มายี _ (underscore) เท�าน�1น- ภายีในชี0*อติ�วุแปรให้+ใชี+ติ�วุอ�กษร A-Z ห้ร0อ a-

z ห้ร0อเคร0*องห้มายี _ (underscore)- ห้+ามเวุ+นชี�องวุ�างภายีในติ�วุแปร ห้ร0อใชี+

สู�ญลุ่�กษณั(อ0*นนอกเห้น0อจากท�*ก)าห้นด้ไวุ+ในข+อ 2

- การใชี+อ�กขระเลุ่<กให้ญ� ภาษาซี� ถ0อวุ�าแติกติ�างก�น เชี�น Test จะถ0อวุ�าเป#นคนลุ่ะติ�วุก�บื้ test

29

ต�วแปรต�วแปร(Variables)(Variables)• ติ�วุแปร(Variables) ค0อพ01นท�*ห้น�วุยีควุามจ)าท�*

ก)าห้นด้ข:1นเพ0*อเก<บื้ข+อม�ลุ่ (เป#นการชี�*วุคราวุสู)าห้ร�บื้ใชี+ในโปรแกรม ) โด้ยีการน�ยีามติ�วุแปรค0อ การก)าห้นด้พ01นท�*เก<บื้ข+อม�ลุ่ โด้ยีม�การติ�1งชี0*อเพ0*อเร�ยีกพ01นท�*ด้�งกลุ่�าวุด้+วุยี

• การก)าห้นด้ติ�วุแปร สูามารถก)าห้นด้ได้+ 2 ระด้�บื้ค0อ- การก)าห้นด้นอกน�ยีามฟ5งก(ชี�*น ซี:*งท)าให้+ได้+ติ�วุแปรแบื้บื้ Global variables โด้ยีติ�วุแปรชีน�ด้น�1สูามารถเร�ยีกใชี+ท�กฟ5งก(ชี� *น- การก)าห้นด้เป#นสู�วุนห้น:*งในการน�ยีามฟ5งก(ชี� *น ซี:*งจะท)าให้+ได้+ติ�วุแปรแบื้บื้โลุ่คอลุ่(Local variables) โด้ยีติ�วุแปรชีน�ด้น�1สูามารถเร�ยีกใชี+ได้+ภายีในฟ5งก(ชี� *นเท�าน�1น

30

ร4ปแบ้บ้การประกาศร4ปแบ้บ้การประกาศต�วแปรต�วแปร

• การสูร+างติ�วุแปรข:1นมาใชี+งาน ในภาษาซี�จะเร�ยีกวุ�าการประกาศติ�วุแปร(Variable Declaration) ซี:*งจะติ+องท)าให้+ถ�กติ+องติามร�ปแบื้บื้ภาษาซี�ท�*ก)าห้นด้

ชีน�ด้ของติ�วุแปร ชี0*อติ�วุแปรท�*ติ+องการจะใชี+เชี�น int num; //สูร+างติ�วุแปรชี0*อ num เพ0*อเก<บื้ข+อม�ลุ่ชีน�ด้ติ�วุเลุ่ขจ)านวุนเติ<ม

float y; //สูร+างติ�วุแปรชี0*อ y เพ0*อเก<บื้ข+อม�ลุ่ชีน�ด้ติ�วุเลุ่ขทศน�ยีม

การก)าห้นด้ข+างบื้น ห้มายีถ:งการจองพ01นท�*ในห้น�วุยีควุามจ)า แติ�ไม�ได้+ก)าห้นด้ค�าเร�*มติ+นให้+ก�บื้พ01นท�* ถ+าเราจะก)าห้นด้ค�าเร�*มติ+นให้+ด้+วุยี ท)าได้+โด้ยีใชี+เคร0*องห้มายี = ติามด้+วุยีค�าคงท�*ประจ)าติ�วุแปรน�1น ๆ

เชี�น int num = 20;

31

น�พิจุน$น�พิจุน$((Expressions)Expressions)• น�พจน((Expressions) ค0อ การกระท)าใด้ๆ เพ0*อ

ให้+ได้+ค�าของการกระท)าออกมาห้น:*งค�า• น�พจน(ห้น:*ง ๆประกอบื้ด้+วุยีองค(ประกอบื้ 2 สู�วุน

ค0อ ติ�วุกระท)า(Operator) แลุ่ะติ�วุถ�กกระท)า(Operand) ร�ปแบื้บื้การจ�ด้วุางของน�พจน(ประกอบื้ไปด้+วุยีติ�วุกระท)า แลุ่ะติ�วุถ�กกระท)า จะม�ร�ปแบื้บื้ใด้ร�ปแบื้บื้ห้น:*ง เชี�น

ติ�วุถ�กกระท)า ติ�วุกระท)า ติ�วุถ�กกระท)าติ�วุกระท)า ติ�วุถ�กกระท)าติ�วุถ�กกระท)า ติ�วุกระท)า

ติ�วุถ�กกระท)า ติ�วุกระท)า ติ�วุถ�กกระท)า ติ�วุกระท)า.....

32

น�พิจุน$น�พิจุน$((Expressions)Expressions)• ติ�วุถ�กกระท)าของน�พจน( อาจเป#นค�าคงท�* ติ�วุแปร

น�พจน( ห้ร0อฟ5งก(ชี� *นท�*ม�ค�าสู�งกลุ่�บื้ อยี�างใด้อยี�างห้น:*ง• การเข�ยีนน�พจน(ซี+อนน�พจน(กระท)าได้+ เพราะติ�วุถ�ก

กระท)าของน�พจน( อาจเป#นน�พจน(ของอ�กติ�วุห้น:*งก<ได้+ • ลุ่)าด้�บื้ก�อนห้ลุ่�งของการกระท)า ม�ข+อก)าห้นด้เฉพาะ

ของโปรแกรม อาจไม�เป#นท�*ติ+องการของผ�+เข�ยีนโปรแกรมก<ได้+ ซี:*งเราสูามารถบื้�งค�บื้ให้+การซี+อนน�พจน( ห้ร0อการกระท)าก�อนห้ลุ่�งของติ�วุกระท)าเป#นไปอยี�างถ�กติ+อง โด้ยีการใชี+เคร0*องห้มายีวุงเลุ่<บื้ควุบื้ค�มได้+ เชี�น

(6+5)*(7*(2+3))

33

น�พิจุน$น�พิจุน$((Expressions)Expressions)• การเข�ยีนน�พจน(ในภาษาซี� ค0อ การน)าข+อม�ลุ่ห้ร0อติ�วุแปรในภาษาซี� มา

ด้)าเน�นการโด้ยีใชี+เคร0*องห้มายีทางคณั�ติศาสูติร( ติรรกศาสูติร( ห้ร0อ เคร0*องห้มายีเปร�ยีบื้เท�ยีบื้ท�*ม�ควุามห้มายีในภาษาซี� เป#นติ�วุสู�*งงาน

• น�พจน(ทางคณั�ติศาสูติร( การเข�ยีนน�พจน(ทางคณั�ติศาสูติร(ในภาษาซี� เห้ม0อนก�บื้การเข�ยีนน�พจน(ทางคณั�ติศาสูติร(ปกติ� เพ�ยีงแติ�เปลุ่�*ยีนมา

ใชี+เคร0*องห้มายีทางคณั�ติศาสูติร(ของภาษาซี�แทน

น�พจน(ทางคณั�ติศาสูติร(ปกติ�

น�พจน(ทางคณั�ติศาสูติร(ในภาษาซี�

x+y-z x+y-z2xy+4z 2*x*y+4*z2r 2*r

34

น�พิจุน$ถ!ายน�พิจุน$ถ!ายค!าค!า((Assignment Assignment Expressions)Expressions)• น�พจน(ถ�ายีค�า (Assignment

Exprissions) ค0อน�พจน(ท�*ประกอบื้ด้+วุยีติ�วุถ�กกระท)าทางซี+ายี เคร0*องห้มายีเท�าก�บื้(=) แลุ่ะติ�วุถ�กกระท)าทางขวุา ด้�งร�ป

• การกระท)าของน�พจน(ถ�ายีค�า ค0อการท)าสู)าเนา(Copy) ค�าท�*ได้+จากติ�วุถ�กกระท)าทางขวุา มาบื้รรจ�ไวุ+ในห้น�วุยีควุามจ)าท�*ทางซี+ายี เชี�นa = 3+5

Lvalue = Rvalue

กระท)า 3 5+ ได้+ผลุ่ลุ่�พธี( 8 น)าไปเก<บื้ไวุ+ในพ01นท�*ห้น�วุยีควุามจ)าของติ�วุแปร a

35

ค(าสั�.ง ค(าสั�.งว!าง แล์ะกล์ !ม ค(าสั�.ง ค(าสั�.งว!าง แล์ะกล์ !มค(าสั�.งว!างค(าสั�.งว!าง

• ค)าสู�*ง(Statements) ค0อ ข�1นติอนในการท)างานห้น:*งข�1นติอน

• ค)าสู�*งวุ�าง (Null statements) ค0อ ค)าสู�*งท�*ม�แติ�เคร0*องห้มายี ; อ�นห้มายีถ:งการไม�ท)าอะไรเลุ่ยี ซี:*งม�ประโยีชีน(แฝงติ�อไป เชี�น การวุนรอบื้ห้น:*งห้ม0*นคร�1ง แติ�ลุ่ะคร�1งไม�ท)าอะไรเลุ่ยี เท�าก�บื้โปรแกรมจะเสู�ยีเวุลุ่าเท�าก�บื้การท�*คอมพ�วุเติอร(ใชี+ในการวุนรอบื้แติ�ลุ่ะคร�1งเป#นจ)านวุนห้ม0*นคร�1ง

• กลุ่��มค)าสู�*ง(Compound Statements) ค0อการน)าเอาค)าสู�*งห้ลุ่ายีค)าสู�*งมาเข�ยีนเร�ยีงก�น แลุ่+วุป@ด้ด้+วุยีเคร0*องห้มายี { } โด้ยีภาษาซี�จะพ�จารณัากลุ่��มค)าสู�*งม�ลุ่�กษณัะเท�ยีบื้เท�าก�บื้ค)าสู�*งเพ�ยีงค)าสู�*งเด้�ยีวุ

• กลุ่��มค)าสู�*งวุ�าง (Null Compound Statements) ค0อ กลุ่��มค)าสู�*งท�*เข�ยีนแติ� { } เท�าน�1น

36

ขี�อควรจุ(าในการเขี�ยนขี�อควรจุ(าในการเขี�ยนน�พิจุน$ภาษาซี�น�พิจุน$ภาษาซี�

• ค�าท�*ได้+จากการกระท)าของน�พจน(ใด้ ๆ จะม�ค�าผลุ่ลุ่�พธี(ออกมาเพ�ยีงห้น:*งค�าเม0*อค)านวุณัเสูร<จสู�1น

• การเข�ยีนน�พจน(อาจจะใชี+ห้ลุ่ายีบื้รรท�ด้ก<ได้+ โด้ยีการข:1นบื้รรท�ด้ ณั จ�ด้ท�*อยี��ระห้วุ�างติ�วุกระท)า แลุ่ะติ�วุถ�กกระท)า เชี�น

(5 *b) /3 + a – 2

ม�ค�าเท�าก�บื้การเข�ยีน(5*b)/3 +a-2

37

ขี�อควรจุ(าในการเขี�ยนขี�อควรจุ(าในการเขี�ยนน�พิจุน$ภาษาซี�น�พิจุน$ภาษาซี�• ภาษาซี�ไม�ม�การติรวุจสูอบื้ชีน�ด้ของติ�วุถ�กกระท)าวุ�าสูอด้คลุ่+อง

ระห้วุ�างการกระท)าห้ร0อไม� เชี�น เราสูามารถเอาค�าชีน�ด้ int ก�บื้ float มาค�ณัก�นได้+ ในบื้างกรณั�จะท)าให้+การค)านวุณัผ�ด้พลุ่าด้ได้+ เพ0*อไม�ให้+เก�ด้ป5ญห้า เราจะใชี+การแปลุ่งชีน�ด้ของข+อม�ลุ่มาชี�วุยี โด้ยีการเข�ยีนชีน�ด้ของข+อม�ลุ่ท�*ติ+องการไวุ+ในวุงเลุ่<บื้ วุางห้น+าติ�วุถ�กกระท)าท�*ติ+องการแปลุ่งชีน�ด้ท�*สู�งออกมา เชี�นint a = 7;float b = 4.3;

……a = (int)b+5;b = (float) a-2.3;

ค�าใน b ยี�งคงเป#น 43.เห้ม0อนเด้�ม แติ�ค�าท�*น)ามาบื้วุก

5 ค0อ 4ติ�ด้ทศน�ยีมท�1งห้มด้)

ค�าใน a ยี�งคงเป#น 7 เห้ม0อนเด้�ม แติ�ค�าท�*น)ามาลุ่บื้ 23.ค0อ 70. (เติ�ม 0 เข+าไป)

38

การค(านวณ์ สัมการแล์ะ การค(านวณ์ สัมการแล์ะน�พิจุน$น�พิจุน$• คอมพ�วุเติอร(ม�ห้น+าท�*ห้ลุ่�กค0อการค)านวุณั ด้�งน�1นเราจ:งอาจ

กลุ่�าวุได้+วุ�า การค)านวุณัค0อห้�วุใจของโปรแกรม• ในการค)านวุณัเราอาจน:กถ:งสูมการคณั�ติศาสูติร( เชี�น

y=f(x) ซี:*งห้มายีถ:งการท�*ฟ5งก(ชี� *น x ร�บื้ค�า x เข+าไปค)านวุณั แลุ่+วุได้+ผลุ่ลุ่�พธี(ออกมาเก<บื้ไวุ+ท�* y

• การค)านวุณัในภาษาซี� เปร�ยีบื้ได้+ก�บื้รากฐานของสูมการคณั�ติศาสูติร( แติ�การค)านวุณัห้ร0อการกระท)า(operation)ของภาษาซี�น�1นกวุ+างขวุางกวุ�าการค)านวุณัทางคณั�ติศาสูติร(น�ก

• ข+อสู�งเกติของการค)านวุณั ห้ร0อการกระท)าในภาษาซี� จะม�องค(ประกอบื้ด้�งน�1- การกระท)าในภาษาซี�จะติ+องประกอบื้ไปด้+วุยี ติ�วุกระท)า (operator) แลุ่ะติ�วุถ�กกระท)า (operand) โด้ยีจะประกอบื้ข:1นมาเป#นองค(รวุมเร�ยีกวุ�า น�พจน( (Expression) - การกระท)าของน�พจน(ใด้ ๆ ในภาษาซี� จะได้+ผลุ่ลุ่�พธี(ออกมาห้น:*งค�า

39

การค(านวณ์ สัมการแล์ะ การค(านวณ์ สัมการแล์ะน�พิจุน$น�พิจุน$• ติ�วุถ�กกระท)าในน�พจน(อาจเป#นได้+ติ�1งแติ� ค�า

คงท�* ติ�วุแปร (ใชี+ค�าในติ�วุแปรเพ0*อมากระท)า )น�พจน((ใชี+ค�าผลุ่ลุ่�พธี(ของน�พจน(เพ0*อมากระท)า ) ฟ5งก(ชี�*น (ใชี+ค�าท�*สู�งกลุ่�บื้มาจากฟ5งก(ชี�*นเพ0*อน)ามากระท)า)

• เม0*อน)าน�พจน(ใด้ๆ มาติ�อท+ายีด้+วุยีเคร0*องห้มายี ; จะท)าให้+น�พจน(น�1นกลุ่ายีเป#นค)าสู�*ง (statement)

40

น�พิจุน$น�พิจุน$• น�พจน(ในภาษาซี�ม�ร�ปแบื้บื้การเร�ยีงติ�วุ

กระท)า(opertor)แลุ่ะติ�วุถ�กกระท)า (operand) อยี�างใด้อยี�างห้น:*งด้�งน�1

ติ�วุกระท)า ติ�วุถ�กกระท)าติ�วุถ�กกระท)า ติ�วุกระท)า

ติ�วุถ�กกระท)า ติ�วุกระท)า ติ�วุถ�กกระท)าติ�วุถ�กกระท)า ติ�วุกระท)า ติ�วุถ�กกระท)า ติ�วุกระท)า ติ�วุถ�ก

กระท)า...&a

a++a*3

(a>5)?(b+2):0a++, b+=10,c-=0.5,d--

41

ต�วอย!างน�พิจุน$ต�วอย!างน�พิจุน$ 7 5+

a + b(a*3)+5

20* sin(2.12)