14.8 Thu t ng
ậ
ữ
gi mã:
ả
M t cách thi t k ch ng trình b ng cách vi t các b n nháp k t h p ngôn ng nói và Java.
ộ
ế ế ươ
ằ
ế
ả
ế ợ
ữ
ph
ng th c tr giúp:
ươ
ứ
ợ
Th ng là m t ph ng th c nh ch ng làm nhi u đi u có ích, song ph ng th c này tr giúp m t
ườ
ộ
ươ
ứ
ỏ ẳ
ề
ề
ươ
ứ
ợ
ộ
ph ng th c khác có ích h n.
ươ
ứ
ơ
bi n l p:
ế ớ
M t bi n đ c khai báo trong l p theo d ng
ộ
ế
ượ
ớ
ạ static; luôn ch có m t b n sao c a bi n này t n t i.
ỉ
ộ ả
ủ
ế
ồ ạ
14.9 Bài t p
ậ
Bài t p 1
ậ
M c đích c a bài t p này là thi hành các thu t toán tráo bài và s p x p trong ch
ng.
ụ
ủ
ậ
ậ
ắ
ế
ươ
1.
Hãy t i v mã l nh cho ch
ng này t
ả ề
ệ
ươ
ừ http://thinkapjava.com/code/Card2.java r i nh p nó vào môi
ồ
ậ
tr
ng phát tri n đang dùng. Tôi đã cung c p ph n khung c a nh ng ph
ng th c mà b n s vi t, do
ườ
ể
ấ
ầ
ủ
ữ
ươ
ứ
ạ ẽ ế
v y mà ch
ng trình s đ
c biên d ch thông su t. Nh ng khi ch y, nó s in các dòng thông báo cho
ậ
ươ
ẽ ượ
ị
ố
ư
ạ
ẽ
bi t r ng nh ng ph
ng th c r ng ch a làm vi c đ
c. Khi b n hoàn thành h t các ph
ng th c này,
ế ằ
ữ
ươ
ứ ỗ
ư
ệ ượ
ạ
ế
ươ
ứ
nh ng l i thông báo đó s bi n m t.
ữ
ờ
ẽ ế
ấ
2.
N u đã làm Bài t p
ế
ậ 3 trong Ch ng 12, b n đã vi t
ươ
ạ
ế randomInt. N u không, bây gi hãy vi t ph ng
ế
ờ
ế
ươ
th c này r i thêm vào mã l nh đ ki m tra.
ứ
ồ
ệ
ể ể
3.
Hãy vi t m t ph
ng th c có thên
ế
ộ
ươ
ứ
swapCards đ nh n vào m t c bài (m ng ch a nh ng quân bài)
ể
ậ
ộ ỗ
ả
ứ
ữ
cùng hai ch s , r i đ i ch hai lá bài nh ng v trí đó. G I Ý: ph
ng th c này ph i đ i ch tham
ỉ ố ồ ổ
ỗ
ở
ữ
ị
Ợ
ươ
ứ
ả ổ
ỗ
chi u, ch không ph i n i dung c a các đ i t
ng. Vi c này nhanh h n; đ ng th i cũng x lý đúng
ế
ứ
ả ộ
ủ
ố ượ
ệ
ơ
ồ
ờ
ử
tr
ng h p các lá bài cùng tham chi u đ n m t đ i t
ng (t c “đ t bí danh”).
ườ
ợ
ế
ế
ộ ố ượ
ứ
ặ
4.
Vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
shuffleDeck đ dùng thu t toán trong M c
ể
ậ
ụ 14.2. Có th b n s mu n dùng
ể ạ ẽ
ố
ph
ng th c
ươ
ứ randomInt t Bài t p 3 Ch ng 12.
ừ
ậ
ươ
5.
Vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
indexLowestCard đ dùng ph
ng th c
ể
ươ
ứ compareCard nh m tìm ki m lá
ằ
ế
bài th p nh t trong m t kho ng cho tr
c c a c bài (t
ấ
ấ
ộ
ả
ướ ủ ỗ
ừ lowIndex đ n
ế highIndex, k c hai đ u).
ể ả
ầ
6.
Vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
sortDeck đ s p x p c bài t th p lên cao.
ể ắ
ế ỗ
ừ ấ
7.
Dùng gi mã trong M c 14.6, hãy vi t ph
ng th c có tên
ả
ụ
ế
ươ
ứ
merge. Đ m b o r ng b n ki m tra nó tr
c
ả
ả ằ
ạ
ể
ướ
khi dùng nó làm m t ph n trong
ộ
ầ
mergeSort.
8.
Vi t m t d ng đ n gi n c a
ế
ộ ạ
ơ
ả ủ mergeSort, d ng chia c bài làm đôi, r i dùng
ạ
ỗ
ồ
sortDeck đ s p x p hai n a,
ể ắ
ế
ử
và dùng merge đ t o nên c bài m i, s p x p đúng.
ể ạ
ỗ
ớ ắ
ế
9.
Vi t m t d ng đ quy hoàn ch nh c a
ế
ộ ạ
ệ
ỉ
ủ mergeSort. Nh r ng
ớ ằ sortDeck là m t ph ng th c s a đ i
ộ
ươ
ứ ử
ổ
còn mergeSort là m t hàm; nh v y chúng đ
c kích ho t theo cách khác nhau:
ộ
ư ậ
ượ
ạ
sortDeck(deck);
// sửa đổi cỗ bài sẵn có
deck = mergeSort(deck);
// thay thế cỗ bài cũ bằng cỗ mới