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