THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 138

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