7 1 dev c++

37
C Programming Overview of C Programming

Upload: supaksorn-tatongjai

Post on 12-Jul-2015

925 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 7 1 dev c++

C Programming

Overview of C Programming

Page 2: 7 1 dev c++

2

1. เครองคอมพวเตอรเปนอปกรณอเลกทรอนกสอยางหนง โดยการใหเครองคอมพวเตอรท างานจะตองปอนค าสงใหกบมน และตองเปนค าสงทเครองคอมพวเตอรเขาใจ 2. การน าค าสงมาเรยงตอกนใหท างานอยางใดอยางหนงเรยกวา โปรแกรม เมอโปรแกรมถกปอนเขาไปในเครองคอมพวเตอร ตวเครองจะท างานทละค าสง 3. ส าหรบการใชค าสงสงงานใหคอมพวเตอรท างานนนจะตองใชภาษาทคอมพวเตอรรหสเลขฐานสอง เมอมการปอนภาษานเขาไปในเครองคอมพวเตอร รหสเลขฐานสองจะถกเปลยนเปนสญญาณทางไฟฟาทคอมพวเตอรเขาใจ

ท ำไมตองเขยนโปรแกรมคอมพวเตอร

Page 3: 7 1 dev c++

3

การออกแบบตวอกษรภาษาองกฤษใหแทนค าสงรหสเลขฐานสอง เรยกวา รหสนโมนก

ภำษำคอมพวเตอร

เลขฐานสอง

ภาษาระดบสง ไดแก ภาษาเบสก ภาษาซ ภาษาปาสคาล โคบอล เปนตน

ภาษาระดบต า ไดแก ภาษาแอสเซมบล

ภาษาสมยใหม ไดแก VisualBasic, Visual C, Java, PHP , Paul

Page 4: 7 1 dev c++

4

ภำษำ BCPL

ภำษำ B

ภำษำ C

บนเครอง PDP-7 (UNIX) พ.ศ. 2513

พ.ศ. 2515

โดย เดนนช รทช

Basic Combined Programming Language

ประวตควำมเปนมำภำษำ ซ

Page 5: 7 1 dev c++

5

ภำษำซ (C Language)

เปนภาษาระดบสง

ไมขนกบระบบปฏบตการ (OS)

ไมขนกบชนดของเครองคอมพวเตอร

เปนภาษาโครงสราง (Structure Language)

คณสมบต

Page 6: 7 1 dev c++

6

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

1. สวนประมวลผลกอน 2. สวนประกาศสวนกลาง 3. สวนตนแบบฟงกชน 4. สวนของฟงกชน

โครงสรำงประกอบดวย สวนประมวลผลกอน

สวนประกาศสวนกลาง

สวนของฟงกชน

สวนตนแบบฟงกชน

Page 7: 7 1 dev c++

7

สวนท 1 เปนสวนทระบใหซคอมไพเลอรเตรยมการท างานท ก าหนดในสวนนไว โดยหนาค าสงจะมเครองหมาย # เชน เปนการระบใหน าไฟล stdio.h มารวมกบไฟลน เพอทจะสามารถใชค าสงทอยในไฟลนมาใชงานได หรอ เปนการก าหนดคาคงทใหกบตวแปร START โดยใหมคาเปน 0 หรอ เปนการก าหนดใหตวแปร temp มคาเทากบ 37

#include <stdio.h>

สวนประมวลผลกอน

#define START 0

#define temp 37

Page 8: 7 1 dev c++

8

สวนท 2 declaration เปนกำรก ำหนดชนดขอมลทจะใชใน โปรแกรมซงตวแปรหรอขอมลตำง ๆ น นจะตองถกประกำศ ในสวนนกอน จงจะสำมำรถน ำไปใชในโปรแกรมได เชน เปนกำรก ำหนดวำตวแปร name เปนขอมลชนดตวอกษร หรอ ขอควำม เปนตน

สวนประกำศสวนกลำง

char name;

Page 9: 7 1 dev c++

9

เปนกำรก ำหนดวำตวแปร stdno เปนขอมลชนดจ ำนวนเตม หรอ interger ซงอำจไดแกคำ 0,4,-1,-3,…. เปนตน เปนกำรก ำหนดวำตวแปร score เปนขอมลชนดเลขมจด ทศนยม (floating point)ซงอำจมคำ 0.23, 1.34 เปนตน

สวนประกำศสวนกลำง

int stdno;

float score;

Page 10: 7 1 dev c++

10

สวนท 3 เปนสวนทใชก ำหนดวำมฟงกช นอะไรบำง และมกำรประกำศพำรำมเตอรอยำงไร เชน เปนกำรประกำศฟงกช นตนแบบส ำหรบฟงกช นชอ main

เปนการประกาศฟงกชนตนแบบส าหรบพงกชนชอ main โดยมคาทสงกลบเปนชนด interger และไมมการสงคาเขาไปในฟงกชนน

สวนประกำศตนแบบฟงกช น

main ( )

int main ( void );

Page 11: 7 1 dev c++

11

สวนท 4 เปนสวนทใชก ำหนดรำยละเอยดของแตละฟงกช น วำมลกษณะกำรท ำงำนเปนอยำงไรบำง รบคำใดเขำไปในฟงกช นบำง และสงคำกลบเปนอะไร เชน เปนกำรประกำศฟงกช นชอ main ตำมฟงกช นตนแบบ ส ำหรบฟงกช น main นไมมกำรรบคำเขำในฟงกช น แตเมอท ำงำนเสรจแลวจะสงคำกลบมำเปน 0

สวนประกำศฟงกช น

int main ( void ) { printf ( “Hello World \n” ); return (0); }

Page 12: 7 1 dev c++

12

กฎเกณฑของโปรแกรมภำษำซ

ประกอบดวยสวนยอย ๆ โดยใชปกกา ({ }) เปนตวก าหนดขอบเขต ฟงกชนแรกตองเปน main() เสมอ ใชเครองหมาย ; (semi colon) เปนตวก าหนดการ สนสดของค าสง ใชอกษรตวเลกในการเขยนโปรแกรม ใชเครองหมาย , (comma) เปนตวคนตวแปรและ พารามเตอร ใชเครองหมาย /* */ เปนการก าหนดขอความ ทไม ตองการใหคอมไพเลอรปฏบตงาน

กฎเกณฑ (Rules)

Page 13: 7 1 dev c++

13

//Program name file.c #include <stdio.h> #include <stdlib.h> type variable; main () { ..............; ..............; system(“pause”); }

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

Page 14: 7 1 dev c++

14

แบบขอมลหรอชนดของตวแปรตำง ๆ ทก ำหนดไวในภำษำซประกอบดวย char ชนดของตวอกษรหรออกขระ int ชนดจ ำนวนเตมปกต short ชนดจ ำนวนเตมปกต long ชนดจ ำนวนเตมทมควำมยำวเปน 2 เทำ unsigned ชนดของเลขทไมคดเครองหมำย float ชนดเลขมจดทศนยม double ชนดเลขทมจดทศนยมควำมยำว เปน 2 เทำ

ชนดและแบบของขอมลในภำษำซ

Page 15: 7 1 dev c++

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 ความถกตองของตวเลขจะมคาสงขน

ตำรำงแสดงเนอทในหนวยควำมจ ำของชนดขอมล

Page 16: 7 1 dev c++

16

ในกำรเขยนโปรแกรม แบบขอมลทใชจะแบงออกเปน 4 กลมใหญ ๆ ดงน ขอมลและตวแปรชนดอกขระ ขอมลและตวแปรชนดจ ำนวนเตม ขอมลและตวแปรชนดเลขมจดทศนยม ขอมลและตวแปรแบบสตรง

ชนดและแบบของขอมลในภำษำซ

Page 17: 7 1 dev c++

17

อกขระแทนดวย char โดยอยภำยในเครองหมำย ‘ ’ เชน ‘a’ , ‘A’ , ‘9’ อกขระพเศษบำงตวไมสำมำรถใหคำไดโดยตรง แต จะใหคำเปนรหส ASCII ซงจะเขยนในรปของเลข ฐำนแปด เชน รหส BELL แทนดวย ASCII 007 เขยนแทนดวย BELL=‘\007’ หรอรหสควบคมกำร ข นบรรทดใหม ตวอกขระทก ำหนดใหกบรหส คอ n สำมำรถก ำหนดเปน newline = ‘\n’;

ชนดขอมลชนดอกขระ

Page 18: 7 1 dev c++

18

จ ำนวนเตมในภำษำซสำมำรถใชแทนได 4 รปแบบ คอ int, short, long และ unsigned กำรก ำหนดตวแปรแบบ unsigned คอจ ำนวนเตม ทไมคดเครองหมำย ซงจะตองใชควบคกบรปแบบ ขอมลจ ำนวนเตมชนดอน คอ int , short หรอ long เชน

ชนดขอมลของเลขจ ำนวนเตม

unsigned int unsigned short

Page 19: 7 1 dev c++

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

ชนดขอมลของเลขมจดทศนยม

Page 20: 7 1 dev c++

20

สตรงหมำยถงกำรน ำตวอกขระหลำยตวมำประกอบ กนเปนขอควำม จะเรยกวำ array หรอแถวล ำดบของตวอกขระ น นเอง ในกำรใชงำนชนดขอมลแบบสตรงน นอกขระตว สดทำยจะเกบรหส null คอ \0 หมำยถงจดจบของ ขอควำม เชน

ชนดขอมลแบบสตรง

H e l l o \0

1 2 3 4 5 6

Page 21: 7 1 dev c++

21

ตวแปร คอ กำรจองเนอทในหนวยควำมจ ำและต งชอไว เพอเรยกใชงำนในขณะปฏบตงำน กำรก ำหนดชอตวแปร มหลกกำรดงน 1. ตองขนตนดวยตวอกษร 2. หำมใชเครองหมำยทำงคณตศำสตรในชอ

ตวแปร 3. สำมำรถใชเครองหมำย underline ‘_’ ได 4. หำมใช reserved words เชน int, float,etc.

ตวแปรในภำษำซ

Page 22: 7 1 dev c++

22

กำรประกำศชอตวแปรในภำษำซสำมำรถท ำไดดงน

กำรประกำศตวแปรในภำษำซ

<ชนดขอมล> <ชอตวแปร>;

ตวอยำงเชน

char ch;

int num;

float width;

double height;

unsigned int a;

long int b;

Page 23: 7 1 dev c++

23

กำรเขยนประโยคค ำส งในภำษำซ แตละค ำส งจะ ประกอบดวย ตวระบ (Identifier) ค ำสงวน ตวแปร ชอฟงกช น และตวด ำเนนกำร (operator) ตำง ๆ แตละค ำส งจบลงดวยเครองหมำยอฒภำค (;) เชน

กำรเขยนประโยคค ำส ง

printf ( “Hello” ); printf ( “ C \n” );

อำจเขยนในบรรทดเดยวกนกได เชน

printf ( “Hello” );printf ( “ C \n” );

ท งสองแบบใหผลลพธเหมอนกน

Page 24: 7 1 dev c++

24

กำรแสดงผลลพธในภำษำซจะใชฟงกช น printf โดยทฟงกช น printf มรปแบบดงน

o สวนควบคมกำรพมพ จะเปนขอควำมและรปแบบ ของกำรพมพโดยอยในเครองหมำย “ ” o อำรกวเมนต เปนสวนทจะน ำขอมลมำพมพ ตำมรปแบบทก ำหนดมำในสวนควบคมกำรพมพ

กำรแสดงผลลพธในภำษำซ

printf( สวนควบคมกำรพมพ, อำรกวเมนต, …)

Page 25: 7 1 dev c++

25

รปแบบกำรพมพส ำหรบตวเลขมดงน %d พมพขอมลจ ำนวนเตมดวยเลขฐำนสบ %o พมพขอมลดวยเลขฐำนแปด %x พมพขอมลดวยเลขฐำนสบหก %u พมพขอมลดวยเลขฐำนสบแบบไมคด เครองหมำย %e พมพขอมลดวยตวเลขแบบวทยำศำสตร เชน 2.13e45 %f พมพขอมลดวยตวเลขมจดทศนยม %g พมพขอมลดวยรปแบบ %e หรอ %f โดยเลอกแบบทส นทสด

รปแบบทใชก ำหนดกำรพมพใน printf

Page 26: 7 1 dev c++

26

รปแบบกำรพมพส ำหรบสตรงมดงน %c พมพดวยตวอกษรตวเดยว %s พมพดวยขอควำม ตวอยำงกำรค ำส ง printf เชน

รปแบบทใชก ำหนดกำรพมพใน printf

printf ( “%d %f %s“ , 20 , 25.5 , “Hello” );

คท 1

คท 2

คท 3

Page 27: 7 1 dev c++

27

เครองหมำยส ำหรบปรบเปลยนรปแบบของขอมล ในกำรแสดงผล

o เครองหมำยลบ ใหพมพขอมลชดขอบซำย (ปกตขอมลท งหมดจะพมพชดขวำ)

o สตรงตวเลข ระบควำมกวำงของฟลด o จดทศนยม เปนกำรก ำหนดควำมกวำงของ จดทศนยม

ตวอยำงกำรใชเครองหมำยปรบเปลยนรปแบบของ กำรแสดงผล

เครองหมำยปรบเปลยนรปแบบขอมล

printf ( “%3d %-6.0f “ , 20 , 25.5 );

Page 28: 7 1 dev c++

28

กำรรบขอมลเขำมำใชงำนในภำษำซจะใชฟงกช น scanf รปแบบของ scanf ( )

o สวนควบคมขอมล เปนกำรก ำหนดรปแบบ ขอมลในเครองหมำย “ ” o อำรกวเมนต เปนสวนทจะน ำขอมลมำเกบ (ในตวแปร) ซงชนดของขอมลตองตรงตำม รปแบบทก ำหนดในสวนควบคมขอมล

กำรรบขอมลเขำในภำษำซ

scanf( สวนควบคมขอมล, อำรกวเมนต,...)

Page 29: 7 1 dev c++

29

กำรก ำหนดลกษณะอำรกวเมนตมได 2 แบบดงน o ถำขอมลน นอำจจะน ำไปใชในกำรค ำนวณ

จะใสเครองหมำย & หนำตวแปร o ถำขอมลน นเปนขอควำมทจะน ำไปเกบไวในตว แปรเลยไมจ ำเปนตองใสเครองหมำย & หนำ ตวแปร

ตวอยำงกำรใชฟงกช น scanf

กำรรบขอมลเขำในภำษำซ

scanf ( “%d “,&num);

scanf ( “%s “,str);

Page 30: 7 1 dev c++

30

เครองหมำยทใชค ำนวณในภำษำซเรยกวำ ตวด ำเนนกำร (Operator) มดงน

เครองหมำยทใชค ำนวณในภำษำซ

ตวด าเนนการ ความหมาย ตวอยาง ผลลพธ

+ การบวก 6 + 8 14

- การลบ 7 – 5 2

* การคณ 3 * 4 12

/ การหาร 8/2 4

- ลบ (ยนารเครองหมายลบ) -5 -5

% โมดลส

(หาเศษเหลอจากการหาร)

7 % 2 1

4 % 2 0

Page 31: 7 1 dev c++

31

ท ำไดโดยระบชนดทตองกำรเปลยนภำยใน เครองหมำย ( ) แลววำงหนำตวแปรหรอขอมล ทตองกำรเปลยนแปลงชนด ตวอยำง ถำในโปรแกรมภำษำซมกำรประกำศ ตวแปรเปน ตองกำรเปลยนตวแปร float ไปเปน integer ท ำไดดงน

กำรเปลยนชนดของขอมล

float money;

(int) money;

Page 32: 7 1 dev c++

32

นพจนก ำหนดคำ (Assignment expression) เครองหมำยทใชก ำหนดคำคอ = โดยเปนกำร ก ำหนดคำทำงขวำของเครองหมำย ใหกบตวแปร ทอยทำงซำย เชน

นพจนก ำหนดคำ

j = 7+2;

k = k + 4;

หรอ

Page 33: 7 1 dev c++

33

นพจนก าหนดคา

สญลกษณ ควำมหมำย

> มำกกวำ

< นอยกวำ

>= มำกกวำหรอเทำกบ

<= นอยกวำหรอเทำกบ

== เทำกบ

!= ไมเทำกบ

Page 34: 7 1 dev c++

34

ควำมแตกตำงของเครองหมำย = และ == o เครองหมำย = เปนตวก ำหนดคำ o เครองหมำย == เปนเครองหมำยเปรยบเทยบ

ตวอยำงเชน หมำยถง เปนกำรก ำหนดคำใหกบตวแปร point ใหมคำเทำกบ 44 หมำยถง เปนกำรตรวจสอบวำคำ point มคำเทำกบ 44 หรอไม

นพจนก ำหนดคำ

point = 44;

point == 44;

Page 35: 7 1 dev c++

35

เครองหมำยและนพจนเปรยบเทยบแบบ ตรรกศำสตร && หมำยถง และ (and) | | หมำยถง หรอ (or) ! หมำยถง ไม (not) ตวอยำงเชน จะไดคำควำมจรงเปนจรงกตอเมอ a และ b เปนจรงท งค จะไดคำควำมจรงเปนเทจกตอเมอ a และ b เปนเทจท งค

เครองหมำยและนพจนแบบตรรกศำสตร

a && b

a || b

Page 36: 7 1 dev c++

36

สำมำรถใชเครองหมำยตอไปนแทนกำรเพมหรอ ลดคำของตวแปร ++ เปนกำรเพมคำใหกบตวแปรทละ 1 -- เปนกำรลดคำตวแปรทละ 1 ตวอยำงเชน ++n เปนกำรเพมคำ n อก 1 --n เปนกำรลดคำ n ลง 1 ควำมแตกตำงระหวำง n++ และ ++n เชน n = 5; x = n++; จะไดคำ x เทำกบ 5 แลวคำ n เทำกบ 6 แตถำ x = ++n; จะไดคำ x เทำกบ 6

กำรเพมคำและลดคำตวแปร

Page 37: 7 1 dev c++

END

Department of Computer Science