7 1 dev c++
TRANSCRIPT
C Programming
Overview of C Programming
2
1. เครองคอมพวเตอรเปนอปกรณอเลกทรอนกสอยางหนง โดยการใหเครองคอมพวเตอรท างานจะตองปอนค าสงใหกบมน และตองเปนค าสงทเครองคอมพวเตอรเขาใจ 2. การน าค าสงมาเรยงตอกนใหท างานอยางใดอยางหนงเรยกวา โปรแกรม เมอโปรแกรมถกปอนเขาไปในเครองคอมพวเตอร ตวเครองจะท างานทละค าสง 3. ส าหรบการใชค าสงสงงานใหคอมพวเตอรท างานนนจะตองใชภาษาทคอมพวเตอรรหสเลขฐานสอง เมอมการปอนภาษานเขาไปในเครองคอมพวเตอร รหสเลขฐานสองจะถกเปลยนเปนสญญาณทางไฟฟาทคอมพวเตอรเขาใจ
ท ำไมตองเขยนโปรแกรมคอมพวเตอร
3
การออกแบบตวอกษรภาษาองกฤษใหแทนค าสงรหสเลขฐานสอง เรยกวา รหสนโมนก
ภำษำคอมพวเตอร
เลขฐานสอง
ภาษาระดบสง ไดแก ภาษาเบสก ภาษาซ ภาษาปาสคาล โคบอล เปนตน
ภาษาระดบต า ไดแก ภาษาแอสเซมบล
ภาษาสมยใหม ไดแก VisualBasic, Visual C, Java, PHP , Paul
4
ภำษำ BCPL
ภำษำ B
ภำษำ C
บนเครอง PDP-7 (UNIX) พ.ศ. 2513
พ.ศ. 2515
โดย เดนนช รทช
Basic Combined Programming Language
ประวตควำมเปนมำภำษำ ซ
5
ภำษำซ (C Language)
เปนภาษาระดบสง
ไมขนกบระบบปฏบตการ (OS)
ไมขนกบชนดของเครองคอมพวเตอร
เปนภาษาโครงสราง (Structure Language)
คณสมบต
6
โครงสรำงของโปรแกรมภำษำซ
1. สวนประมวลผลกอน 2. สวนประกาศสวนกลาง 3. สวนตนแบบฟงกชน 4. สวนของฟงกชน
โครงสรำงประกอบดวย สวนประมวลผลกอน
สวนประกาศสวนกลาง
สวนของฟงกชน
สวนตนแบบฟงกชน
7
สวนท 1 เปนสวนทระบใหซคอมไพเลอรเตรยมการท างานท ก าหนดในสวนนไว โดยหนาค าสงจะมเครองหมาย # เชน เปนการระบใหน าไฟล stdio.h มารวมกบไฟลน เพอทจะสามารถใชค าสงทอยในไฟลนมาใชงานได หรอ เปนการก าหนดคาคงทใหกบตวแปร START โดยใหมคาเปน 0 หรอ เปนการก าหนดใหตวแปร temp มคาเทากบ 37
#include <stdio.h>
สวนประมวลผลกอน
#define START 0
#define temp 37
8
สวนท 2 declaration เปนกำรก ำหนดชนดขอมลทจะใชใน โปรแกรมซงตวแปรหรอขอมลตำง ๆ น นจะตองถกประกำศ ในสวนนกอน จงจะสำมำรถน ำไปใชในโปรแกรมได เชน เปนกำรก ำหนดวำตวแปร name เปนขอมลชนดตวอกษร หรอ ขอควำม เปนตน
สวนประกำศสวนกลำง
char name;
9
เปนกำรก ำหนดวำตวแปร stdno เปนขอมลชนดจ ำนวนเตม หรอ interger ซงอำจไดแกคำ 0,4,-1,-3,…. เปนตน เปนกำรก ำหนดวำตวแปร score เปนขอมลชนดเลขมจด ทศนยม (floating point)ซงอำจมคำ 0.23, 1.34 เปนตน
สวนประกำศสวนกลำง
int stdno;
float score;
10
สวนท 3 เปนสวนทใชก ำหนดวำมฟงกช นอะไรบำง และมกำรประกำศพำรำมเตอรอยำงไร เชน เปนกำรประกำศฟงกช นตนแบบส ำหรบฟงกช นชอ main
เปนการประกาศฟงกชนตนแบบส าหรบพงกชนชอ main โดยมคาทสงกลบเปนชนด interger และไมมการสงคาเขาไปในฟงกชนน
สวนประกำศตนแบบฟงกช น
main ( )
int main ( void );
11
สวนท 4 เปนสวนทใชก ำหนดรำยละเอยดของแตละฟงกช น วำมลกษณะกำรท ำงำนเปนอยำงไรบำง รบคำใดเขำไปในฟงกช นบำง และสงคำกลบเปนอะไร เชน เปนกำรประกำศฟงกช นชอ main ตำมฟงกช นตนแบบ ส ำหรบฟงกช น main นไมมกำรรบคำเขำในฟงกช น แตเมอท ำงำนเสรจแลวจะสงคำกลบมำเปน 0
สวนประกำศฟงกช น
int main ( void ) { printf ( “Hello World \n” ); return (0); }
12
กฎเกณฑของโปรแกรมภำษำซ
ประกอบดวยสวนยอย ๆ โดยใชปกกา ({ }) เปนตวก าหนดขอบเขต ฟงกชนแรกตองเปน main() เสมอ ใชเครองหมาย ; (semi colon) เปนตวก าหนดการ สนสดของค าสง ใชอกษรตวเลกในการเขยนโปรแกรม ใชเครองหมาย , (comma) เปนตวคนตวแปรและ พารามเตอร ใชเครองหมาย /* */ เปนการก าหนดขอความ ทไม ตองการใหคอมไพเลอรปฏบตงาน
กฎเกณฑ (Rules)
13
//Program name file.c #include <stdio.h> #include <stdlib.h> type variable; main () { ..............; ..............; system(“pause”); }
โครงสรางโปรแกรม
14
แบบขอมลหรอชนดของตวแปรตำง ๆ ทก ำหนดไวในภำษำซประกอบดวย char ชนดของตวอกษรหรออกขระ int ชนดจ ำนวนเตมปกต short ชนดจ ำนวนเตมปกต long ชนดจ ำนวนเตมทมควำมยำวเปน 2 เทำ unsigned ชนดของเลขทไมคดเครองหมำย float ชนดเลขมจดทศนยม double ชนดเลขทมจดทศนยมควำมยำว เปน 2 เทำ
ชนดและแบบของขอมลในภำษำซ
15
ชนดขอมล เนอทส าหรบเกบ(ไบต)
คาตวเลขทเกบ
Char 1 เกบตวอกษร ASCII ได 1 ตวหรอจ านวนเตมระหวาง 0 ถง 255
Int 2 คาตวเลขระหวาง –32768 ถง 32767
Short 2 คาตวเลขระหวาง –32768 ถง 32767
Long 4 คาตวเลขประมาณ 2000 ลาน
Unsigned Unsigned short = 2 Unsigned long = 4
คาตวเลขระหวาง 0 ถง 65535 คาตวเลขระหวาง 0 ถง 4000 ลาน
Float 4 ไดคาตวเลขยกก าลง 10x โดย x มคาระหวาง –37 ถง +38
Double 8 ความถกตองของตวเลขจะมคาสงขน
ตำรำงแสดงเนอทในหนวยควำมจ ำของชนดขอมล
16
ในกำรเขยนโปรแกรม แบบขอมลทใชจะแบงออกเปน 4 กลมใหญ ๆ ดงน ขอมลและตวแปรชนดอกขระ ขอมลและตวแปรชนดจ ำนวนเตม ขอมลและตวแปรชนดเลขมจดทศนยม ขอมลและตวแปรแบบสตรง
ชนดและแบบของขอมลในภำษำซ
17
อกขระแทนดวย char โดยอยภำยในเครองหมำย ‘ ’ เชน ‘a’ , ‘A’ , ‘9’ อกขระพเศษบำงตวไมสำมำรถใหคำไดโดยตรง แต จะใหคำเปนรหส ASCII ซงจะเขยนในรปของเลข ฐำนแปด เชน รหส BELL แทนดวย ASCII 007 เขยนแทนดวย BELL=‘\007’ หรอรหสควบคมกำร ข นบรรทดใหม ตวอกขระทก ำหนดใหกบรหส คอ n สำมำรถก ำหนดเปน newline = ‘\n’;
ชนดขอมลชนดอกขระ
18
จ ำนวนเตมในภำษำซสำมำรถใชแทนได 4 รปแบบ คอ int, short, long และ unsigned กำรก ำหนดตวแปรแบบ unsigned คอจ ำนวนเตม ทไมคดเครองหมำย ซงจะตองใชควบคกบรปแบบ ขอมลจ ำนวนเตมชนดอน คอ int , short หรอ long เชน
ชนดขอมลของเลขจ ำนวนเตม
unsigned int unsigned short
19
กำรก ำหนดขนดขอมลเลขจดทศนยมสำมำรถ ก ำหนดได 2 แบบ คอ float , double โดย double เกบคำไดเปน 2 เทำของ float ตวเลข
แบบนนยมใชกบงำนทำงวทยำศำสตรทตองกำร ควำมละเอยดในกำรเกบคำ กำรเกบขอมลในรปแบบน คอ เกบแบบเอกโพเนนซ ดงตวอยำงตอไปน ตวเลข แสดงแบบเอกโพเนนซ แสดงแบบวทยำศำสตร 9,000,000,000 9.0*109 9.0e9 345,000 3.45*105 3.45e5 0.00063 6.3*10-4 6.3e-4 0.00000924 9.24*10-6 9.24e-6
ชนดขอมลของเลขมจดทศนยม
20
สตรงหมำยถงกำรน ำตวอกขระหลำยตวมำประกอบ กนเปนขอควำม จะเรยกวำ array หรอแถวล ำดบของตวอกขระ น นเอง ในกำรใชงำนชนดขอมลแบบสตรงน นอกขระตว สดทำยจะเกบรหส null คอ \0 หมำยถงจดจบของ ขอควำม เชน
ชนดขอมลแบบสตรง
H e l l o \0
1 2 3 4 5 6
21
ตวแปร คอ กำรจองเนอทในหนวยควำมจ ำและต งชอไว เพอเรยกใชงำนในขณะปฏบตงำน กำรก ำหนดชอตวแปร มหลกกำรดงน 1. ตองขนตนดวยตวอกษร 2. หำมใชเครองหมำยทำงคณตศำสตรในชอ
ตวแปร 3. สำมำรถใชเครองหมำย underline ‘_’ ได 4. หำมใช reserved words เชน int, float,etc.
ตวแปรในภำษำซ
22
กำรประกำศชอตวแปรในภำษำซสำมำรถท ำไดดงน
กำรประกำศตวแปรในภำษำซ
<ชนดขอมล> <ชอตวแปร>;
ตวอยำงเชน
char ch;
int num;
float width;
double height;
unsigned int a;
long int b;
23
กำรเขยนประโยคค ำส งในภำษำซ แตละค ำส งจะ ประกอบดวย ตวระบ (Identifier) ค ำสงวน ตวแปร ชอฟงกช น และตวด ำเนนกำร (operator) ตำง ๆ แตละค ำส งจบลงดวยเครองหมำยอฒภำค (;) เชน
กำรเขยนประโยคค ำส ง
printf ( “Hello” ); printf ( “ C \n” );
อำจเขยนในบรรทดเดยวกนกได เชน
printf ( “Hello” );printf ( “ C \n” );
ท งสองแบบใหผลลพธเหมอนกน
24
กำรแสดงผลลพธในภำษำซจะใชฟงกช น printf โดยทฟงกช น printf มรปแบบดงน
o สวนควบคมกำรพมพ จะเปนขอควำมและรปแบบ ของกำรพมพโดยอยในเครองหมำย “ ” o อำรกวเมนต เปนสวนทจะน ำขอมลมำพมพ ตำมรปแบบทก ำหนดมำในสวนควบคมกำรพมพ
กำรแสดงผลลพธในภำษำซ
printf( สวนควบคมกำรพมพ, อำรกวเมนต, …)
25
รปแบบกำรพมพส ำหรบตวเลขมดงน %d พมพขอมลจ ำนวนเตมดวยเลขฐำนสบ %o พมพขอมลดวยเลขฐำนแปด %x พมพขอมลดวยเลขฐำนสบหก %u พมพขอมลดวยเลขฐำนสบแบบไมคด เครองหมำย %e พมพขอมลดวยตวเลขแบบวทยำศำสตร เชน 2.13e45 %f พมพขอมลดวยตวเลขมจดทศนยม %g พมพขอมลดวยรปแบบ %e หรอ %f โดยเลอกแบบทส นทสด
รปแบบทใชก ำหนดกำรพมพใน printf
26
รปแบบกำรพมพส ำหรบสตรงมดงน %c พมพดวยตวอกษรตวเดยว %s พมพดวยขอควำม ตวอยำงกำรค ำส ง printf เชน
รปแบบทใชก ำหนดกำรพมพใน printf
printf ( “%d %f %s“ , 20 , 25.5 , “Hello” );
คท 1
คท 2
คท 3
27
เครองหมำยส ำหรบปรบเปลยนรปแบบของขอมล ในกำรแสดงผล
o เครองหมำยลบ ใหพมพขอมลชดขอบซำย (ปกตขอมลท งหมดจะพมพชดขวำ)
o สตรงตวเลข ระบควำมกวำงของฟลด o จดทศนยม เปนกำรก ำหนดควำมกวำงของ จดทศนยม
ตวอยำงกำรใชเครองหมำยปรบเปลยนรปแบบของ กำรแสดงผล
เครองหมำยปรบเปลยนรปแบบขอมล
printf ( “%3d %-6.0f “ , 20 , 25.5 );
28
กำรรบขอมลเขำมำใชงำนในภำษำซจะใชฟงกช น scanf รปแบบของ scanf ( )
o สวนควบคมขอมล เปนกำรก ำหนดรปแบบ ขอมลในเครองหมำย “ ” o อำรกวเมนต เปนสวนทจะน ำขอมลมำเกบ (ในตวแปร) ซงชนดของขอมลตองตรงตำม รปแบบทก ำหนดในสวนควบคมขอมล
กำรรบขอมลเขำในภำษำซ
scanf( สวนควบคมขอมล, อำรกวเมนต,...)
29
กำรก ำหนดลกษณะอำรกวเมนตมได 2 แบบดงน o ถำขอมลน นอำจจะน ำไปใชในกำรค ำนวณ
จะใสเครองหมำย & หนำตวแปร o ถำขอมลน นเปนขอควำมทจะน ำไปเกบไวในตว แปรเลยไมจ ำเปนตองใสเครองหมำย & หนำ ตวแปร
ตวอยำงกำรใชฟงกช น scanf
กำรรบขอมลเขำในภำษำซ
scanf ( “%d “,&num);
scanf ( “%s “,str);
30
เครองหมำยทใชค ำนวณในภำษำซเรยกวำ ตวด ำเนนกำร (Operator) มดงน
เครองหมำยทใชค ำนวณในภำษำซ
ตวด าเนนการ ความหมาย ตวอยาง ผลลพธ
+ การบวก 6 + 8 14
- การลบ 7 – 5 2
* การคณ 3 * 4 12
/ การหาร 8/2 4
- ลบ (ยนารเครองหมายลบ) -5 -5
% โมดลส
(หาเศษเหลอจากการหาร)
7 % 2 1
4 % 2 0
31
ท ำไดโดยระบชนดทตองกำรเปลยนภำยใน เครองหมำย ( ) แลววำงหนำตวแปรหรอขอมล ทตองกำรเปลยนแปลงชนด ตวอยำง ถำในโปรแกรมภำษำซมกำรประกำศ ตวแปรเปน ตองกำรเปลยนตวแปร float ไปเปน integer ท ำไดดงน
กำรเปลยนชนดของขอมล
float money;
(int) money;
32
นพจนก ำหนดคำ (Assignment expression) เครองหมำยทใชก ำหนดคำคอ = โดยเปนกำร ก ำหนดคำทำงขวำของเครองหมำย ใหกบตวแปร ทอยทำงซำย เชน
นพจนก ำหนดคำ
j = 7+2;
k = k + 4;
หรอ
33
นพจนก าหนดคา
สญลกษณ ควำมหมำย
> มำกกวำ
< นอยกวำ
>= มำกกวำหรอเทำกบ
<= นอยกวำหรอเทำกบ
== เทำกบ
!= ไมเทำกบ
34
ควำมแตกตำงของเครองหมำย = และ == o เครองหมำย = เปนตวก ำหนดคำ o เครองหมำย == เปนเครองหมำยเปรยบเทยบ
ตวอยำงเชน หมำยถง เปนกำรก ำหนดคำใหกบตวแปร point ใหมคำเทำกบ 44 หมำยถง เปนกำรตรวจสอบวำคำ point มคำเทำกบ 44 หรอไม
นพจนก ำหนดคำ
point = 44;
point == 44;
35
เครองหมำยและนพจนเปรยบเทยบแบบ ตรรกศำสตร && หมำยถง และ (and) | | หมำยถง หรอ (or) ! หมำยถง ไม (not) ตวอยำงเชน จะไดคำควำมจรงเปนจรงกตอเมอ a และ b เปนจรงท งค จะไดคำควำมจรงเปนเทจกตอเมอ a และ b เปนเทจท งค
เครองหมำยและนพจนแบบตรรกศำสตร
a && b
a || b
36
สำมำรถใชเครองหมำยตอไปนแทนกำรเพมหรอ ลดคำของตวแปร ++ เปนกำรเพมคำใหกบตวแปรทละ 1 -- เปนกำรลดคำตวแปรทละ 1 ตวอยำงเชน ++n เปนกำรเพมคำ n อก 1 --n เปนกำรลดคำ n ลง 1 ควำมแตกตำงระหวำง n++ และ ++n เชน n = 5; x = n++; จะไดคำ x เทำกบ 5 แลวคำ n เทำกบ 6 แตถำ x = ++n; จะไดคำ x เทำกบ 6
กำรเพมคำและลดคำตวแปร
END
Department of Computer Science