ơ ả

Khái ni m c  b n C

ươ

Ch

ng 1

ụM c Tiêu M c Tiêu

ươ

 Phân bi

ữ t s  khác nhau gi a Câu l nh, Ch

ng

ệ ự ầ trình và Ph n m m

i sao

i thu t (algorithms)

ượ

ư ồ

 Bi ế ượ c quá trình hình thành ngôn ng  C t đ  Bi ạ ế ượ c khi nào dùng C và t t đ  N m đ ữ ượ ấ ắ c c u trúc ngôn ng  C  Hi u rõ khái ni m gi ả ể  V  l u đ  (flowchart) ẽ ư ồ  S  d ng đ ử ụ

c các ký hi u dùng trong l u đ

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 2 of 26

ề ề

ươ ươ

ng trình, câu  ng trình, câu

ầ ầ Ph n m m, ch Ph n m m, ch l nhệl nhệ

Software

Program 2

Program 1

Commands

Commands

Commands

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 3 of 26

ắ ầ ắ ầ B t đ u C B t đ u C

BPCL – Martin Richards

B – Ken Thompson

C – Dennis Ritchie

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 4 of 26

L ch s  C

ầ ượ

ệ ề

 C và Unix có chung ngu n g c ố  C ban đ u đ

c xây d ng và cài đ t trên h  đi u

hành Unix máy tính PDP­11

C (1971). ế ạ ằ

ượ

i b ng C

t l

ắ ọ

ủ c a BCPL) là ti n thân c a C  (không có A)

 Dennis Ritchie là tác gi ả  Năm 1973 Unix đ c vi  BCPL (gi a nh ng năm­60s)  hay B (1970,  c t g n  ữ ủ ề  BCPL và B ngôn ng  không đ nh ki u, C là ngôn ng   ữ

ị đ nh ki u.

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 5 of 26

L ch s  C

 Năm 1978 ­ Kernighan & Ritchie (1st edition) công b  ố

ẩ ệ

phiên b n chu n đ u tiên c a C "K&R C“ ỹ

 Năm 1983, Vi n tiêu chu n qu c gia M  American  ẩ ộ ủ

National Standards Institute (ANSI) thành th p m t  y  ữ ban đ  làm rõ và chu n hóa ngôn ng . ả

ẩ  Năm1988,  ANSI C công b  phiên b n đ u tiên. ố  Năm 1990, ISO thông qua ANSI C không thay đ i – là  ổ

ố ế

chu n qu c t

ẩ ề

ờ . ấ ớ

i ích r t l n v  tính kh  chuy n

ế  cho đ n bây gi  Đi u này mang  đ n l ể ế ợ  See http://cm.bell­labs.com/cm/cs/who/dmr/chist.html

for more details

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 6 of 26

ự ứ ự ứ

ủ ủ

ụ ụ

Các lĩnh v c  ng d ng c a C Các lĩnh v c  ng d ng c a C

ể ậ

c dùng đ  l p trình h  th ng ươ

ầ ỗ ợ ủ ệ ề

ệ ề

ươ

ả ạ ượ ọ c g i là ch

 C đ ệ ố ượ  M t ch ệ ố ộ ng trình h  th ng làm thành m t ph n  ệ ệ ề h  đi u hành ho c các ti n ích h  tr  c a h  đi u  hành  H  đi u hành (Operating Systems), trình thông  ị d ch (Interpreters), trình so n th o (Editors), trình  ệ ợ H p Ng  (Assembly) đ ng trình h   th ng ố

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 7 of 26

ữ ấ ữ ấ Ngôn ng  c p trung  Ngôn ng  c p trung

ữ ấ

Ngôn ng  c p cao

C

ữ ợ

Ngôn ng  h p ng

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 8 of 26

ữ ữ

ấ ấ

Ngôn ng  có c u trúc  Ngôn ng  có c u trúc

 C cho phép t ng h p

ữ ệ ợ  mã lệnh và d  li u

ậ ệ ươ

 Nó có kh  năng t p h p và  n  ấ ả t c  thông tin, l nh kh i  đi t ạ ủ ầ i c a ch ph n còn l ữ ể đ  dùng cho nh ng tác v

ỏ ng trình   ụ riêng

ươ

ể ượ

ng trình C có th  đ

ỏ c chia nh   ữ

 Ch thành nh ng hàm (functions) hay nh ng  kh i mã (code

blocks).

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 9 of 26

ủ ủ

ặ ặ

ể ể Đ c đi m c a C Đ c đi m c a C

khóa

ế ợ

ừ  khóa này k t h p v i cú pháp c a C

C  có 32 t Nh ng t ừ ữ hình thành ngôn ng  Cữ

ươ

ắ ượ

c áp d ng cho các ch

ng trình

Các quy t c đ

khóa là ch  th

ươ ữ ườ t ch  th

main() { /* This is a sample Program*/ int i,j; i=100; j=200; : }

ế

C• T t c  t ữ ườ ấ ả ừ ng  • Ðo n mã trong ch ạ ng trình  ệ ng,  C có phân bi ữ ch  hoa, do while khác DO  WHILE  •T  khóa không th  dùng đ t  ặ ừ ặ tên bi n (variable name) ho c  tên hàm (function name)

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 10 of 26

ấ ấ

ươ ươ

C u trúc ch C u trúc ch

ng trình C ng trình C

ượ

c chia nh  thành nh ng

main()  Ch ươ ơ

 Không k  có bao nhiêu hàm trong ch

ng trình C đ ị ọ đ n v  g i là hàm  ể ệ ề

ề ươ

ng trình C

ươ ng  ề trình, H  đi u hành luôn trao quy n đi u  khi n cho hàm main() khi m t ch đ

ể ự ượ c th c thi.

ặ ơ ứ

ấ ể

 Theo sau tên hàm là d u ngo c đ n   D u ngo c đ n có th  có ch a hay không  ố

ấ ứ

ặ ơ ữ ch a nh ng tham s

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 11 of 26

ấ ấ

ươ ươ

C u trúc ch C u trúc ch

ng trình C (tt.) ng trình C (tt.)

D u phân cách {…}

ắ ặ xo n m

ở {  ắ

ế

 Sau ph n đ u hàm là d u ngo c  ầ ầ  Nó cho bi t vi c

ệ thi hành l nh trong hàm b t

ắ ặ xo n đóng

} sau câu  ế ể đi m k t thúc

đ u ầ  T ự ấ ươ ng t , d u ngo c  ố ệ l nh cu i cùng trong hàm ch  ra  ủ c a hàm

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 12 of 26

ấ ấ

ươ ươ

C u trúc ch C u trúc ch

ng trình C (tt.) ng trình C (tt.)

ấ ế

D u k t thúc câu l nh

ệ   … ;

ượ ế

 M t câu l nh trong C đ ệ

c k t thúc b ng

ộ ấ ấ d u ch m ph y

ẩ ;

 Trình biên d ch C không hi u vi c xu ng

ể dòng, kho ng tr ng hay tab

ộ ẩ ẽ ượ

ằ ệ

 M t câu l nh không k t thúc b ng d u ch m  ấ ế ỗ ư i trong C

c xem nh  dòng l nh l

ả ệ ph y s  đ

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 13 of 26

ấ ấ

ươ ươ

C u trúc ch C u trúc ch

ng trình C (tt.) ng trình C (tt.)

/*Dòng chú thích*/

 Nh ng chú thích th

ệ ủ

c vi ệ

ượ ng đ ặ

ả ế ể t đ  mô t ộ t, m t hàm

ộ ươ

công vi c c a m t l nh đ c bi hay toàn b  ch

ầ ị ẽ ng h p chú thích nhi u dòng, nó s   ế

ườ ằ

ườ ộ ệ ng trình   Trình biên d ch s  b  qua ph n chú thích ẽ ỏ  Trong tr ệ ắ ầ b t đ u b ng ký hi u /* và k t thúc là */

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 14 of 26

ư ệ Th  vi n C

ẩ ở ậ ế t  b i  l p  ặ c  đ t  trong  c  dùng  khi  c n

ư ệ tế

ộ ố

ộ ố ộ

ư ệ

  T t  c   trình  biên  d ch  C  đ u  ấ ả ư ệ ộ ch a m t th  vi n hàm chu n    M t  hàm  đ ượ c  vi ể ượ trình  viên  có  th   đ ượ th   vi n  và  đ thi  M t s  trình biên d ch cho phép  ị ẩ ư ệ thêm hàm vào th  vi n chu n   M t s   trình  biên d ch  yêu c u  ị ạ t o  m t th  vi n riêng

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 15 of 26

ị ị

ươ ươ

ng  ng

Biên d ch và thi hành ch Biên d ch và thi hành ch trình  trình

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 16 of 26

ướ ậ ướ ậ

ả ả

ế ấ ế ấ

c l p trình gi c l p trình gi

i quy t v n  i quy t v n

Các b Các b đềđề

Phòng h cọ

ọ   R i phòng h c

ậ ồ ả ợ ộ ậ i thu t g m m t t p h p các  Gi ế ằ ệ ự ướ c th c hi n nh m gi b i quy t m t  ụ ề ấ v n đ . Thí d  sau đây mô  ậ ả ộ t i thu t    m t gi

ế

ầ Ð n c u thang

Xu ng ố

ầ   ầ t ng h m

ế

Ði đ n quán

c th c hiên  ế

ăn t

ụ  ph c v

ự ướ ườ  mu n đi đ n  ố i ụ ụ ừ    ph c v  t

Ðây là các b ộ khi m t ng ự quán ăn t phòng h cọ

Cafeteria

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 17 of 26

ả ả

ộ ấ ề ộ ấ ề

ế ế

Gi Gi

i quy t m t v n đ i quy t m t v n đ

ể ả

ộ ấ

ế

Ð  gi

i quy t m t v n đ

Hi u v n đ  rõ ràng

Thu th p thông tin thích h p

X  lý thông tin

ạ ượ

ế

Ð t đ

ả c k t qu

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 18 of 26

ả ảMã gi Mã gi

(Pseudocode)  (Pseudocode)

ế

i thu t

ậ Không là mã th t. M t ph ộ ậ ử ụ s  d ng m t t p h p các t

ươ ng pháp vi ừ ươ  t ng t

ả t gi ậ  mã th t

BEGIN

DISPLAY ‘Hello World !’

END

ả ắ ầ

ộ ừ

ỗ ể ể

ượ

BEGIN c dùng

ớ ả  ph i b t đ u v i m t t ị  DISPLAY đ ớ ừ

ả ế

ạ M i đo n mã gi Ð  hi n th  giá tr  nào đó, t  k t thúc v i t Mã gi

ừ  END

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 19 of 26

ư ồ ư ồ

L u đ  (Flowcharts) L u đ  (Flowcharts)

ư ồ

i

ả L u đ  là m t hình  nh minh ho  cho gi thu tậ

START

DISPLAY ‘Hello World !’

STOP

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 20 of 26

ể ượ ể ượ

Bi u t Bi u t

ư ồ ư ồ ng trong l u đ   ng trong l u đ

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 21 of 26

ư ồ ộ ư ồ ộ

ố ố

L u đ  c ng hai s L u đ  c ng hai s

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 22 of 26

ấC u trúc IF   C u trúc IF

S TAR T

IN P U T n u m

r = n u m M OD 2

BEGIN INPUT num r = num MOD 2 IF r=0

Display “Number is even”

r = 0

No

END IF END

Yes

D IS P L AY "N u m b e r i s E ve n "

S TOP

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 23 of 26

ấC u trúc IF…ELSE   C u trúc IF…ELSE

S TA RT

INP UT num

r = num M O D 2

Yes

No

r = 0

DIS P LAY "Num ber is E ven"

DIS PLA Y "Num ber is O dd"

BEGIN INPUT num r=num MOD 2 IF r=0    DISPLAY “Even Number” ELSE    DISPLAY “Odd Number” END IF END

S TOP

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 24 of 26

ề ề

ệ ử ụ AND/OR ệ ử ụ AND/OR

Ða đi u ki n s  d ng  Ða đi u ki n s  d ng

BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10 AND bizDone >=5000000

DISPLAY “Classified as an MVS”

ELSE

DISPLAY “A little more effort required!”

END IF END

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 25 of 26

ồ ồ

ấ ấ

C u trúc IF l ng nhau C u trúc IF l ng nhau

BEGIN INPUT yearsWithUs INPUT bizDone IF yearsWithUs >= 10

IF bizDone >=5000000

DISPLAY “Classified as an MVS”

ELSE

DISPLAY “A little more effort required!”

END IF ELSE

DISPLAY “A little more effort required!”

END IF END

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 26 of 26

ồ ồ

ấ ấ

C u trúc IF l ng nhau C u trúc IF l ng nhau

(tt.)  (tt.)

START

INPUT  YearsWithUs

INPUT bizDone

YES

NO

YearsWithUs >= 10

DISPLAY “A Little more effort required”

NO

bizDone > 5000000

YES

DISPLAY “A Little more effort required”

DISPLAY “Classified as an  MVS”

STOP

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 27 of 26

Vòng l pặ   Vòng l pặ

S TA R T

cn t= 0

No

cn t < 1 0 0 0

BEGIN cnt=0 WHILE (cnt < 1000) DO

Yes

D IS PL A Y " Sc o ob y "

DISPLAY “Scooby” cnt=cnt+1

cn t= c n t+ 1

END DO END

S TOP

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 28 of 26

Bài t pậ

t ế

ế

 Cho tam giác ABC có góc vuông A và cho bi t thu t toán đ  tính

ạ c nh a và góc B. Hãy vi góc C, c nh b và c nh c

ươ

 Ch  dùng phép c ng, tính bình ph ộ

ng c a

ỉ m t sộ ố

 Tính nghi m x p x  v i đ  chính xác  ươ

ấ 0.000001 c a ph

ỉ ớ ộ ng trình f(x)= e

ε =  x­ x3 = 0

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 29 of 26

Bài t pậ

ế

ử ụ ự

ấ ụ

ươ

ng

ấ ị ệ ươ ệ

ỏ ơ

S   d ng  thu t  toán  chia  ậ đôi d a vào tính ch t: n u  ộ m t  hàm  f  liên  t c  trên  ạ đo n  [a,b]  có  f(a)  và  f(b)  ng  trình  f(x)  =  0  thì  ph ộ ừ nh t  đ nh  th a  nh n  m t  ằ nghi m c n m gi a [a,b]  Ph trình  có  hai  ư nghi m  nh   trong  hình  ệ v .  Vây  nghi m  nh   h n  ạ trong đo n [1,4]

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 30 of 26

Bài t pậ

Ta có f(a)>0, f(b)<0. Thu t toán

ậ ế chia đôi ti n hành vây  ỗ ướ nghi m, m i b gi m kho ng vây đi 2 l n.

c vây,  ầ ả ớ 1. Tính f(c) v i c= (a+b)/2.

ế

Không x y ra f(c) = 0. Ti p  b

c 2

ướ ế

2. N u f(c)> 0 thay a b i c, sau  ệ ướ

đó th c hi n b

ở c 4

Th c hi n b

ở 3. N u f(c) <0 thay b b i c.  ế ệ ướ c ti p theo ε, quay v  1, n u  ế ề

ế ự ế 4. N u b­a >

không làm ti pế ấ

5. D ng, l y c làm nghi m

ơ ả ậ ươ L p trình c  b n C/Ch ng 1/ 31 of 26