You are on page 1of 24

Chng 1.

T ng quan v ngn ng l p trnh C

1-6/2005

Chng 1. T ng quan v NNLT C


Mai C ng Th The C programming language course Dept. of CS, UoF

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u v i scanf v printf

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

1. Gi i thi u ngn ng l p trnh C


Tc gi : Dennis Ritchie , nm 1972 t i phng th nghi m Bell Telephone c a AT&T, USA. M c ch ban u c a C l vi t h i u hnh Unix. c t tn l C v tr c c ngn ng B t i Bell. C c nhi u u i m, c bi t l tnh m m d o cao nn nhanh chng tr thnh ngn ng chnh th ng. C nhi u phin b n v trnh d ch C khc nhau:
ANSI C ISO C Turbo C
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 3

M t s u i m c a C
L ngn ng l p trnh a nng, m nh v m m d o. Chng trnh vi t b ng C ch y kh nhanh (so snh v i Pascal). Th ng c s d ng l p trnh h th ng (h i u hnh). L ngn ng d thch nghi v i nh ng mi tr ng (h my) khc nhau. L ngn ng c c u trc m-un (chng trnh = cc hm). Ni chung, l p trnh C kh kh n u cha h c Pascal.
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 4

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

M t s quy t c: B k t v T kho
B k t :
Ch ci: A..Z, a..z; ch s : 0..9. Cc d u v k hi u: , . ; : / ? [ ] { } ! @ # $ % ^ & * ( ) + = - < > . D u cch, d u tab, d u g ch d i _

T kho:
auto, break, case, char, continue, default, do, double, else, extern, float, for, goto, if, int, long, register, return, short, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while _cs, _ds, _es, _ss, _AH, _AL, _AX, _BH, _BL, _BX, _CH, _CL, _CX, _DH, _DL, _DX, _BP, _DI, _SI, _SP
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 5

M t s quy t c: Tn v Ch thch
Tn v cch t tn:
Quy t c gi ng ngn ng Pascal. C phn bi t ch hoa v ch th ng. Ni chung, nn s d ng ch th ng khi t tn.

Ch thch:
/* Noi dung chu thich */ C++: ch thch cho m t dng b ng //
// Chu thich cua dong 1 // Chu thich cua dong 2

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

M t s quy t c: D u ch m ph y v c p { }
Cu l nh v d u ch m ph y:
Ni chung, m i cu l nh n nn vi t trn m t dng. K t thc cu l nh b ng d u ch m ph y M t s ch d n (khng ph i cu l nh) khng c n d u ;
#include stdio.h #include conio.h

C p { } c gi tr nh BEGIN v END trong Pascal.

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u v i scanf v printf

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

C u trc chung c a chng trnh C


#include #define typedef Khai bo prototype hm Function prototype Khai bo prototype hm Khai bo cc bi n ngoi (external) Hm chnh (chng trnh chnh) main() { } Cc hm khc function Cc ch d n

nh ngha ki u d li u

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

M t s v d n gi n
#include "stdio.h //standard io #include "conio.h //console io void main() { clrscr(); printf("Hello World!"); getch(); }
#include "stdio.h" #include "conio.h" void main() { int a,b,c; clrscr(); printf("Nhap vao hai so nguyen:\n"); scanf("%d%d",&a,&b); c=a+b; printf("Tong hai so la: %d",c); getch(); }

hello.c
1-6/2005 Chng 1. T ng quan v ngn ng

add2num.c
l p trnh C 10

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

11

C++ (C plus plus)


Tc gi : GS. Bjarne Stroustrap, nm 1983 (ci t thm kh nng l p trnh h ng i t ng vo C). T t c cc chng trnh vi t b i C u ch y c trn C++. L p trnh h ng i t ng (Object oriented programming): S g n k t gi a d li u v cc hm x l d li u t o thnh i t ng. M i i t ng bao g m:
Thu c tnh (attributes, properties) l d li u c a i t ng. Hnh vi (methods): th hi n cc hm trn i t ng.

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

12

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Trnh d ch Turbo C++ 3.0


Pht tri n b i hng Borland. Nh g n, d dng, t l i. Giao di n v cc t h p phm kh gi ng Turbo Pascal.

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

13

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u v i scanf v printf

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

14

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Khi ni m v bi n v ki u d li u
Bi n l i l ng m gi tr c th b thay i trong chng trnh (qua cu l nh). Ki u d li u bao g m:
T p h p cc gi tr m ph n t thu c v m t ki u c th nh n. Cc php ton c xc nh trn ki u .

V d : S nguyn l m t ki u d li u bao g m cc gi tr nguyn v trn xc nh cc php ton +,,*,/


1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 15

Khai bo bi n trong C
C php chung
Khai bo bi n bnh th ng: ki u_d _li u danh_sch_bi n; Khai bo bi n v i gi tr kh i t o: ki u_d _li u tn_bi n = gi_tr _ u;

V d :
int i,j,m; int i=0,m=5; //i ban u c gi tr 0

Khi khai bo bi n khng ch r gi tr u th gi tr c a bi n l khng xc nh (ch !!!). Bi n trong C khng nh t thi t ph i khai bo t i m t vng nh t nh c a chng trnh (VAR trong Pascal), mi n l khai bo tr c khi s d ng.
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 16

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Ki u d li u s nguyn
Ki u bi n
Character Integer Short integer Long integer Unsigned character Unsigned integer Unsigned short integer Unsigned long integer
1-6/2005

T kho char int short long unsigned int

K.T D i g/tr 1 2 2 4 2
-127 -32768 -32768 -231 0 0 0 0 128 32767 32767 231 1 255 65535 65535 232 - 1
17

unsigned char 1 unsigned short 2 unsigned long 4


Chng 1. T ng quan v ngn ng l p trnh C

Cc php ton v i s nguyn


Php ton C ng Tr Nhn Chia l y ph n nguyn Chia l y s d Tng m t n v Gi m m t n v
1-6/2005

K hi u + * / % ++ -Chng 1. T ng quan v ngn ng l p trnh C

V d

5/2=2 5%2=1 i++; --i i--; --I


18

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Ki u s th c
Ki u bi n S th c v i chnh xc n S th c v i chnh xc kp T kho float double K/th c D i gi tr (B) (ph n >0) 4 8 10 1.2E-38 3.4E+38 2.2E-308 1.8E+308 3.4E-4932 3.4E+4932

S th c v i chnh long double xc kp, di l n

*Cc php ton +,-,*,/ c hi u theo ng ngha c a php ton


1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 19

Ki u k t
H ng k t :
Vi t trong c p nhy n Vd: A, m.

M t s k t c bi t:
tab: \t xu ng dng: \n d u : \ d u : \ d u ?: \? d u \: \\ m null: \0

T kho: char H ng xu k t :
Vi t trong c p nhy kp. Vd: Ha noi.

Hm x l <ctype.h>
toASCII(c): l y m ASCII. tolower(c): ch th ng. toupper(c): ch hoa.
1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

20

10

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Ki u Boolean
Khng c nh ngha t ng minh trong C.
M t gi tr b ng 0 c coi l sai (false). M t gi tr khc 0 c coi l ng (true)

Nh v y, c th coi:
0 l false. 1 l true.

khai bo bi n Boolean, ta khai bo m t bi n nguyn (char, int). Php ton: &&(and); ||(or); !(not)
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 21

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u v i scanf v printf

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

22

11

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

H ng
H ng l i l ng c gi tr khng thay i trong su t chng trnh,c th c c p pht ho c khng c p pht b nh (tu thu c cch khai bo). Khai bo h ng t ng trng:
#define tn_h ng gi_tr
//khng c d u ch m ph y cu i. Vd: #define PI 3.14

Khai bo h ng c c p pht b nh :
const ki u_d _li u tn_h ng = gi_tr ;
Vd: const float PI = 3.14;
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 23

Bi u th c (expression)
Bi u th c l cng th c tnh ton m k t qu l m t ki u d li u no .
Bi u th c s h c: K t qu l ki u s . Bi u th c logic:
K t qu l ki u logic. Tr ng h p ph bi n: bi u th c quan h (so snh).

Bi u th c l s k t h p c a:
Ton h ng (operand): h ng, bi n, hm, bi u th c. Ton t (operator): +,-,*,/,so snh
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 24

12

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Cc php ton quan h


K hi u == != > < >= <=
1-6/2005

ngha So snh b ng So snh khc nhau So snh l n hn So snh nh hn So snh l n hn ho c b ng So snh nh hn ho c b ng


Chng 1. T ng quan v ngn ng l p trnh C

Ki u k t qu Boolean(0,1) Boolean Boolean Boolean Boolean Boolean


25

Th t u tin cc php ton


Php ton ( ) ++ -[ ] ! + << < <= == & ^ | && | | ?: = += -= *= /= %= &= ^= |= <<= >>=
l p trnh C

Chi u tnh ton -> sizeof() L R L L L >= L L L L L L L R R R L R R R R R R R R R R L L


26

~ >> > !=

* / %

1-6/2005

Chng 1. T ng quan v ngn ng

13

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

V d minh ho trnh t php ton


7 + 3*5 = 22. (100>76) && (B<A) = 1 && 0 = 0. !(49+2<50) || (2>4/2)= !( 51 <50) || (2> 2 )= !( 0 ) || ( 0 )= 1 || 0 = 1.

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

27

Cu l nh
Cu l nh n gi n:
Php gn L i g i hm (trong C ch c hm).

Kh i l nh:
N m trong c p {}

Cu l nh c c u trc:
R nhnh L p
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 28

14

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Php gn
C php:
tn_bi n = bi u_th c;

V d :
int a,b,c; a=3;b=4; c=a+b;

Khi tnh ton v i bi u th c s , n u gi tr c a bi u th c v t qu ph m vi c a ton h ng th c s hi u ch nh k t qu theo chi u:


int long float double long double

Ki u char c s d ng trong bi u th c s th c coi nh ki u nguyn v i gi tr b ng m k t .


1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 29

Chuy n i ki u d li u
C t ng chuy n i ki u d li u khi c n (s hi u ch nh). C cho php ng i l p trnh p ki u d li u
K php: tn_ki u (bi n ho c bi u th c) Vd:
int i; float f, z; f=5.5; i=int(f);//sau y, i c gi tr 5 f=float(i)/2;//sau y, f c gi tr
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C

2.5
30

15

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

M t s hm s h c chu n <math.h>
abs(int): tr tuy t i fabs(double): tr tuy t i sin(double): sin cos(double): cos tan(double): tang exp(double): ex log(double): ln floor(double): c t trn s ceil(double): lm trn s sqrt(double): cn b c hai pow(d1,d2): d1d2
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 31

Cc php ton v i bit


Logic
&: AND | : OR ^ : XOR ~ : NOT

Cc php tnh ny khng dng cho s th c! Php d ch bit


>>: d ch ph i; vd: i>>2 ngha l d ch i sang ph i 2 bit. <<: d ch tri
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 32

16

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Php gn m r ng, php ++, -V i op l php ton, th:


x op = y; tng ng x = x op y; V d : x+=y; x-=y; x%=y;

Gn nhi u bi n m t lc:
x=y=z=4; //sau php gn ny, x;y;z u c gi tr 4.

Php tng gi m 1 n v : ++i; //j=++i => j==i i++; //j=i++ => j==(i-1)
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 33

Ton t sizeof v ton t i u ki n


sizeof (x) tr v s byte m tham s x chi m
vd: sizeof(int) == 2; sizeof (i) ==2 v i i ki u int.

Ton t i u ki n:?:
C php: i u_ki n:gtr 1?gtr 2 Vd: max = a>b:a?b;
N u a>b th bth c max nh n gtr a, n u khng th nh n gtr b.

Php l y a ch bi n (&).
&x s tr v a ch c a bi n x trong b nh (s tm hi u k hn).

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

34

17

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Ch1. T ng quan v NNLT C


1. 2. 3. 4. 5. 6.

Gi i thi u ngn ng C. C u trc chung c a chng trnh C C++ v chng trnh d ch Turbo C++ Cc ki u d li u c s H ng, bi u th c, cu l nh v php ton Vo/ra d li u v i scanf v printf

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

35

Xu t d li u ra mn hnh v i printf
C php
printf(xu_ nh_d ng, danh_sch_ i_l ng);

ngha:
Vi t ra mn hnh danh sch i l ng v i nh d ng c ch ra b i xu nh d ng

Xu nh d ng:
L xu c ch a m nh d ng. M nh d ng l s k t h p c a d u % v m chuy n i ki u d li u: %d, %f, %c, %s, %ld, %x, %o
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 36

18

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

M t s v d s d ng printf
printf(%d,45); printf(%d\n,45); 45_ 45 _ a=4.500000_ a=4,b=4.500000 _ 65_
Chng 1. T ng quan v ngn ng l p trnh C 37

printf(a=%f,4.5); printf(a=%d,b=%f\n,4,4.5);

printf(%d, A);
1-6/2005

Xu t d li u c quy cch
In ra s nguyn c quy cch:
C php: printf(%md, i_l ng_nguyn); ngha: In ra mn hnh s nguyn v i m ch . Vd: printf(a = %5d\n,4) //a=^^^^4

In s nguyn d ng Hexa
S d ng %x (th ng) ho c %X (vi t hoa).

In ra s nguyn d ng Octa
S d ng %o

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

38

19

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Vi t s th c c quy cch (ti p)


In ra s th c v i s ch nh t nh:
C php: printf(%m.nf, i_l ng_th c); ngha: In ra mn hnh s th c v i m ch v n ch sau d u ch m. Vd: printf(a=%6.2f,4.5); //a=^^4.50

S d ng %e vi t d ng x.xEy S d ng d u *:
printf(%8.*f, i, f); N u i=1, f=1.23 th k t qu l ^^^^^1.2 N u i=3, x=1.23 th k t qu l ^^^1.230
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 39

M t s v n khc v i printf
Vi t ra d u %
printf(x=%d%%d,45); //x=45%d

Vi t c quy cch cn l tri: thm d u tr - vo tr c m nh d ng. Vd: printf(%-8d,i); printf(%-10.3f:,f); Gi tr tr v c a hm printf: printf l m t hm c k t qu tr v l s l ng k t th c t c vi t ra mn hnh. In ra my in:
fprintf(stdprn, xu_ nh_d ng, ds_ i_l ng); Cc thi t b vo/ra: stdin (phm), stdout (mh), stderr (mh), stdprn (my in), stdaux (c ng n i ti p).

printf c th gy l i (runtime err) khi:


M nh d ng v d li u vi t ra khng kh p. S l ng i l ng c n vi t ra # s l ng m nh d ng.
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 40

20

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Vi t k t putchar(), putch() v vi t xu puts() putchar(): vi t k t ra mn hnh


putchar(ch); // ch c ki u k t .

putch(): vi t k t ra mn hnh
putch(ch); //ch c ki u k t . Tng ng v i: printf(%c,ch);

puts(): vi t xu k t ra mn hnh
puts(Xu k t ); //ch c php vi t ra m t xu k t .

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

41

Nh p d li u v i scanf
C php scanf(xu_ nh_d ng_nh p, ds_ a_ch ) ngha: nh p gi tr cho cc bi n c a ch c truy n vo thng qua danh sch a ch . Vd:
scanf(%d,&i);//nh p gi tr cho bi n nguyn i scanf(%d%f,&i,&f);//nh p cho bi n nguyn i v th c f.

D u cch trong xu nh d ng:


scanf(%d %c,&n,&ch); /* ng i dng nh p 3 A th n=3 cn ch=A ch khng ph i d u cch. Ctrnh b qua d u cch, d u xu ng dng */
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 42

21

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

getchar(), getch(), getche()


Cc hm getchar(), getch(), getche() c s d ng nh p k t . getchar():
ch=getchar();//nh p gi tr cho k t ch

getch(): nh p k t , khng g Enter sau khi nh p, k t nh p vo khng hi n ra mn hnh (gi ng readkey c a Pascal).
ch=getch();

getche(): khc getch() hi n th ln mn hnh.


1-6/2005

ch k t nh p vo c

Chng 1. T ng quan v ngn ng

l p trnh C

43

Nguyn t c c d li u qua b m bn phm


C s d ng b m c d li u, t t c nh ng g ng i dng nh p vo c lu t i b m. D li u nh p th a s c dnh cho cu nh p d li u k ti p (trong vd d i, s 4 l s th a trong l n scanf th nh t, c dng cho scanf th hai). Ng i dng Chng trnh int i,j; 3 4 i=3 scanf(%d,&i); j=4 printf(i=%d\n,i); scanf(%d,&j); printf(j=%d,j);
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 44

22

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Xo b m
S d ng cu l nh: fflush(stdin); Xem v d d i
int i,j; scanf(%d,&i); printf(i=%d\n,i); fflush(stdin); scanf(%d,&j); printf(j=%d,j);
1-6/2005 Chng 1. T ng quan v ngn ng

Chng trnh

Ng i dng

3 4 i=3 5 j=5

l p trnh C

45

Cc hm nu trn thu c nh ng th vi n no? <stdio.h>


printf() scanf() putchar() getchar() puts()

<conio.h>
putch() getch() getche()
1-6/2005 Chng 1. T ng quan v ngn ng l p trnh C 46

23

Chng 1. T ng quan v ngn ng l p trnh C

1-6/2005

Bi t p
Vi t chng trnh tnh t ng bnh phng hai s nguyn c nh p vo t bn phm. Vi t chng trnh tnh di n tch, chu vi c a cc hnh (cc c nh nh p vo t bn phm):
Tam gic. Ch nh t. Trn (M_PI l s pi /n trong <math.h>)

1-6/2005

Chng 1. T ng quan v ngn ng

l p trnh C

47

24

You might also like