Khái ni m c b n C

ơ ả

Ch

ng 1

ươ

ụM c Tiêu M c Tiêu

 Phân bi

ng

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

ươ

ệ ự 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

Command s

Command s

Command s

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 ơ ả ậ ươ

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 ượ ọ

ươ

ệ ề

ể ầ

ị L p trình c b n C/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ố  H đi u hành UNIX đ aự vào C c phát tri n d ượ  Có các trình biên d ch dành cho h u h t các lo i ạ ế h th ng PC ệ ố 5 of 26 ươ

ng 1/ ơ ả

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/ 6 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 ữ ệ

ậ ệ ươ

ỏ ng trình ụ riêng

 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 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/ 7 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

ươ ữ ườ

ừ ể

ế

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 C ạ ng, ch t ch th có phân bi ữ ệ 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/ 8 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

ượ

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

main()  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/ 9 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 {…}

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

ầ t vi c thi hành l nh trong hàm b t ệ

ở { ắ

ế

, d u ngo c xo n đóng

} sau câu ể

ế

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

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 (tt.) ng trình C (tt.)

ấ ấ

ươ ươ

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

ệ … ;

ế

c k t thúc b ng

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

ượ ế

ộ 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

ả ệ ph y s đ

c xem nh dòng l nh l

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

ộ ẩ ẽ ượ

ằ ệ

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ò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 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à */ ệ ắ ầ

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

ườ ằ

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

Th vi n C ư ệ

ấ ả ộ ứ

c vi ể ượ ặ

ượ

ư ệ 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 đ t b i l p ế ở ậ ượ c đ t trong trình viên có th đ c dùng khi c n 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/ 13 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/ 14 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

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

Ðến cầu thang

Xuống  tầng hầm

Ði đến quán  ăn tự phục vụ

Ðây là các bước thực hiên  khi một người muốn đi đến  quán ăn tự phục vụ từ phòng  học

Cafeteria

L p trình c b n C/Ch ng 1/ 15 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/ 16 of 26 ơ ả ậ ươ

(Pseudocode) (Pseudocode)

ảMã gi ả Mã gi

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

ỗ ể ể

ượ

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

ừ END

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

ả ế

L p trình c b n C/Ch ng 1/ 17 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/ 18 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/ 19 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/ 20 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

r = 0

Display “Number is even”

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

S TOP

No END IF END Yes

L p trình c b n C/Ch ng 1/ 21 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

r = 0

DIS P LAY "Num ber is E ven"

DIS PLA Y "Num ber is O dd"

Yes No

S TOP

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

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

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

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

ề ề

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/ 23 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/ 24 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/ 25 of 26 ậ ươ

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

S TA R T

cn t= 0

No

cn t < 1 0 0 0

Yes

D IS PL A Y " Sc o ob y "

BEGIN cnt=0 WHILE (cnt < 1000) DO

DISPLAY “Scooby” cnt=cnt+1

cn t= c n t+ 1

S TOP

END DO END

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