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

Ch

ng 7: Phép l p và vòng

ươ

l p

7.1 Phép gán nhi u l n

ề ầ

B n có th khi n cho nhi u l nh gán ch t i cùng m t bi n; mà hi u qu c a nó là nh m thay th giá tr

ế

ề ệ

ỉ ớ

ế

ả ủ

ế

cũ b ng giá tr m i.

ị ớ

int

liz = 5;

System.out.print(liz);

liz = 7;

System.out.println(liz);

K t qu c a ch

ng trình này b ng

ế

ả ủ

ươ

ằ 57, vì l n đ u tiên khi in

liz bi n này có giá tr b ng 5, còn l n th

ế

ị ằ

hai thì bi n có giá tr b ng 7.

ế

ị ằ

Hình th c

gán nhi u l n

ề ầ nh th này là lí do mà tôi mô t các bi n nh là

ư ế

ế

ư h p ch a

giá tr . Khi b n

gán m t giá tr vào cho bi n, b n thay đ i n i dung c a h p ch a, nh hình v sau:

ế

ổ ộ

ư ở

Khi có nhi u phép gán đ i v i cùng m t bi n, thì r t chú tr ng vi c phân bi t gi a câu l nh gán và đ ng

ố ớ

ế

th c. Vì Java dùng d u

ấ = cho l nh gán nên ta b lôi cu n vào vi c di n gi i m t câu l nh nh

ư a = b là câu

l nh đ ng th c. Th t ra không ph i v y!

ả ậ

Tr

c h t, đ ng th c thì có tính giao hoán, còn l nh gán thì không. Ch ng h n trong toán h c, n u

ướ ế

ế a = 7

thì 7 = a. Nh ng trong Java

ư

a = 7; l i là m t l nh gán h p l , còn

ộ ệ

ợ ệ

7 = a; thì không.

H n n a, trong toán h c, m t đ ng th c thì luôn đúng. N u bây gi

ơ

ộ ẳ

ế

a = b, thì a s luôn b ng

b. Trong

Java, m t l nh gán có th làm cho hai bi n b ng nhau, nh ng không có gì b t bu c chúng b ng nhau

ộ ệ

ế

ư

mãi!

int

a = 5;

int

b = a;

// bây giờ thì a bằng b

a = 3;

// a không còn bằng b nữa

Dòng l nh th ba đã thay đ i giá tr c a

ị ủ a mà không làm thay đ i giá tr c a

ị ủ b, vì v y chúng không còn

b ng nhau. M t s ngôn ng l p trình có dùng kí hi u khác cho phép gán, nh

ộ ố

ữ ậ

ư <- ho c

ặ :=, đ tránh s

nh m l n này.

M c dù phép gán nhi u l n th

ng có ích, so b n nên c n th n khi dùng. N u giá tr c a các bi n thay

ề ầ

ườ

ế

ị ủ

ế

đ i th

ng xuyên thì có có th khi n cho mã l nh khó đ c và g l i.

ườ

ế

ỡ ỗ

7.2 Câu l nh

while

Máy tính th

ng đ

c dùng đ t đ ng hóa các thao tác có tính l p l i. Th c hi n nh ng thao tác l p l i

ườ

ượ

ể ự ộ

ặ ạ

ặ ạ

này mà không ph m l i là đi u mà máy tính làm t t còn chúng ta làm r t d .

ấ ở

Ta đã th y các ph

ng th c nh

ươ

ư countdown và factorial trong đó dùng đ quy đ th c hi n l p. Quá

ể ự

ệ ặ

trình này đ

c g i là

ượ ọ

phép l p

. Java có nh ng đ c đi m ngôn ng giúp cho vi c vi t các ph ng th c

ế

ươ

nêu trên m t cách d dàng h n. ch

ng này ta xem xét câu l nh

ơ Ở ươ

ệ while. V sau ( M c

ở ụ 12.4) ta xét đ n

ế