Upload
nattawut-pornonsung
View
5.196
Download
1
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--