Tr v
ở ề M c l c
ụ ụ cu n sách
ố
M c đích c a cu n sách này là h
ng d n b n suy nghĩ nh là m t nhà khoa h c máy tính. Tôi thích l i
ụ
ủ
ố
ướ
ẫ
ạ
ư
ộ
ọ
ố
suy nghĩ c a nh ng nhà khoa h c máy tính vì đó có s k t h p nh ng đ c đi m hay nh t c a
ủ
ữ
ọ
ở
ự ế ợ
ữ
ặ
ể
ấ ủ toán h c,
ọ
kĩ thu t, và khoa h c t nhiên. Cũng nh nh ng nhà toán h c, nh ng nhà khoa h c máy tính dùng
ậ
ọ ự
ư
ữ
ọ
ữ
ọ
nh ng ngôn ng có quy cách đ di n đ t ý t
ng (đ c bi t là tính toán). Gi ng nh nh ng kĩ s , h
ữ
ữ
ể ễ
ạ
ưở
ặ
ệ
ố
ư
ữ
ư ọ
cũng làm công vi c thi t k , g n k t các thành ph n t o nên m t h th ng và đánh giá nh ng u khuy t
ệ
ế ế ắ
ế
ầ ạ
ộ ệ ố
ữ
ư
ế
gi a các ph
ng án khác nhau. Gi ng nh nh ng nhà khoa h c, h kh o sát các đ ng thái c a h th ng
ữ
ươ
ố
ư
ữ
ọ
ọ
ả
ộ
ủ
ệ ố
ph c t p, đ ra các gi thi t, và ki m đ nh nh ng tính toán.
ứ ạ
ề
ả
ế
ể
ị
ữ
Kĩ năng quan tr ng nh t c a nhà khoa h c máy tính là
ọ
ấ ủ
ọ
gi i quy t v n đ
ả
ế ấ
ề. Gi i quy t v n đ chính là
ả
ế ấ
ề
cách t o l p v n đ , suy nghĩ gi i pháp m t cách sáng t o, và trình bày gi i pháp m t cách rõ ràng và
ạ ậ
ấ
ề
ả
ộ
ạ
ả
ộ
chính xác. Nh b n s th y, vi c h c l p trình chính là m t c h i tuy t v i đ b n luy n t p nh ng kĩ
ư ạ ẽ ấ
ệ ọ ậ
ộ ơ ộ
ệ ờ ể ạ
ệ ậ
ữ
năng gi i quy t v n đ . Đó là lí do t i sao ch
ng này l i có tên là “L i đi c a ch
ng trình máy tính”.
ả
ế ấ
ề
ạ
ươ
ạ
ố
ủ
ươ
M t m t, b n s đ
c h c cách l p trình, v n b n thân nó là m t kĩ năng h u d ng. M t khác, b n s
ộ
ặ
ạ ẽ ượ ọ
ậ
ố
ả
ộ
ữ
ụ
ặ
ạ ẽ
dùng l p trình nh m t ph
ng ti n đ gi i quy t v n đ . Đi u này b n s d n d n làm đ
c trong quá
ậ
ư ộ
ươ
ệ
ể ả
ế ấ
ề
ề
ạ ẽ ầ
ầ
ượ
trình h c.
ọ
1.1 Ngôn ng l p trình là gì?
ữ ậ
Ngôn ng l p trình mà b n s h c là Java, v n là m t ngôn ng t
ng đ i m i (phiên b n đ u tiên do
ữ ậ
ạ ẽ ọ
ố
ộ
ữ ươ
ố
ớ
ả
ầ
Sun phát hành vào tháng 5-1995). Java là m t ví d trong s các
ộ
ụ
ố
ngôn ng l p trình b c cao
ữ ậ
ậ
; m t s
ộ ố
ngôn ng l p trình b c cao khác mà b n có th bi t đ n g m có Python, C, C++, và Perl.
ữ ậ
ậ
ạ
ể ế ế
ồ
Nh c đ n “ngôn ng l p trình b c cao”, có l b n cũng suy đoán đ
c r ng còn nh ng
ắ ế
ữ ậ
ậ
ẽ ạ
ượ ằ
ữ ngôn ng l p
ữ ậ
trình b c th p
ậ
ấ , đôi khi mà ta g i là “ngôn ng máy” ho c “h p ng ”. Nói nôm na, máy tính ch có th
ọ
ữ
ặ
ợ
ữ
ỉ
ể
th c hi n các ch
ng trình đ
c vi t b ng ngôn ng b c th p. Vì v y nh ng ch
ng trình đ
c vi t
ự
ệ
ươ
ượ
ế ằ
ữ ậ
ấ
ậ
ữ
ươ
ượ
ế
b ng m t ngôn ng b c cao c n đ
c x lý tr
c khi chúng có th ch y đ
c. B
c ph tr này s t n
ằ
ộ
ữ ậ
ầ
ượ ử
ướ
ể ạ
ượ
ướ
ụ ợ
ẽ ố
thêm th i gian, đây là m t nh
c đi m nh c a các ngôn ng b c cao.
ờ
ộ
ượ
ể
ỏ ủ
ữ ậ
Tuy v y, các u đi m là r t l n. Th nh t, vi c l p trình b ng ngôn ng b c cao d h n
ậ
ư
ể
ấ ớ
ứ
ấ
ệ ậ
ằ
ữ ậ
ễ ơ nhi u
ề . Ch ng
ươ
trình đ
c vi t b ng ngôn ng b c cao đ
c vi t nhanh h n, n i dung ch
ng trình ng n h n, d đ c
ượ
ế ằ
ữ ậ
ượ
ế
ơ
ộ
ươ
ắ
ơ
ễ ọ
h n, và nhi u kh năng là chúng chính xác. Th hai, các ngôn ng b c cao có tính
ơ
ề
ả
ứ
ữ ậ
kh chuy n
ả
ể theo
nghĩa ch y đ
c trên nhi u h máy tính khác nhau mà ít ho c không c n ph i s a đ i. Các ch
ng trình
ạ
ượ
ề
ệ
ặ
ầ
ả ử
ổ
ươ
b c th p ch có th ch y trên m t lo i máy tính và ph i đ
c vi t l i n u mu n ch y trên các h máy
ậ
ấ
ỉ
ể ạ
ộ
ạ
ả ượ
ế ạ ế
ố
ạ
ệ
khác.
B i các u đi m nêu trên, h u h t các ch
ng trình đ u đ
c l p trình b ng ngôn ng b c cao. Các
ở
ư
ể
ầ
ế
ươ
ề
ượ ậ
ằ
ữ ậ
ngôn ng b c th p ch đ
c dùng cho m t s ít nh ng ng d ng đ c bi t.
ữ ậ
ấ
ỉ ượ
ộ ố
ữ
ứ
ụ
ặ
ệ
Hai lo i ch
ng trình có nhi m v chuy n đ i các ngôn ng b c cao v d ng ngôn ng b c th p:
ạ
ươ
ệ
ụ
ể
ổ
ữ ậ
ề ạ
ữ ậ
ấ trình
thông d ch
ị và trình biên d ch
ị . Trình thông d ch là m t ch ng trình máy tính, có nhi m v đ c m t
ị
ộ
ươ
ệ
ụ ọ
ộ
ch
ng trình b c cao và th c hi n nó theo đúng nh ng gì mà ch
ng trình ch đ nh. Nó x lý ch
ng
ươ
ậ
ự
ệ
ữ
ươ
ỉ ị
ử
ươ
trình m t cách d n d n, nghĩa là đ c câu l nh đ n đâu thì th c hi n tính toán t i đó.
ộ
ầ
ầ
ọ
ệ
ế
ự
ệ
ớ
Còn trình biên d ch thì có nhi m v đ c ch
ng trình và d ch nó hoàn toàn tr
c khi th c hi n b t kì
ị
ệ
ụ ọ
ươ
ị
ướ
ự
ệ
ấ