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

Ch

ng 6: Ph

ng th c tr l i giá

ươ

ươ

ả ạ

tr

Tr v

ở ề M c l c

ụ ụ cu n sách

6.1 Nh ng giá tr đ

c tr l i

ị ượ

ả ạ

M t s ph

ng th c mà ta đã dùng, nh các hàm toán h c, có tr l i k t qu . Nghĩa là, hi u ng t vi c

ộ ố

ươ

ư

ả ạ ế

ệ ứ

ừ ệ

kích ho t ph

ng th c là t o ra m t giá tr m i mà ta th

ng gán nó cho m t bi n ho c dùng nh m t

ươ

ị ớ

ườ

ế

ư ộ

ph n h p nên m t bi u th c l n h n. Ch ng h n:

ứ ớ

ơ

double

e = Math.exp(1.0);

double

height = radius * Math.sin(angle);

Nh ng cho đ n gi t t c nh ng ph

ng th c mà t tay vi t đ u là ph

ng th c

ư

ế

ờ ấ ả

ươ

ế ề

ươ

r ng

; theo nghĩa

nh ng ph

ng th c này không tr l i giá tr nào. Khi b n kích ho t m t ph

ng th c r ng, nó th

ng

ươ

ả ạ

ươ

ứ ố

ườ

ch t đ

c đ t trên m t dòng mà không có l nh gán nào c :

ỉ ự ượ ặ

countdown(3);

nLines(3);

Trong ch

ng này ta vi t nh ng ph

ng th c tr l i thông tin, mà tôi g i là ph

ng th c

ươ

ế

ươ

ả ạ

ươ

tr l i

ả ạ giá trị.

Ví d đ u tiên là

ụ ầ

area, m t ph

ng th c nh n vào tham s là m t

ươ

ộ double, r i tr l i

ả ạ di n tích c a m t

hình tròn v i bán kính cho tr

c:

ướ

public static double

area(

double

radius) {

double

area = Math.PI * radius * radius;

return

area;

}

Đi u đ u tiên mà ta nh n th y là đo n đ u c a đ nh nghĩa ph

ng th c đã khác đi. Thay vì

ầ ủ

ươ

public static

void, v n đ ch m t ph

ng th c r ng, ta th y

ể ỉ ộ

ươ

ứ ỗ

ấ public static double, có nghĩa là giá tr tr v t ph ng

ị ả ề ừ

ươ

th c này là m t

ộ double. Tôi v n ch a gi i thích ý nghĩa c a

ư

ủ public static, song b n hãy kiên nh n.

Dòng cu i là m t d ng m i c a câu l nh

ộ ạ

ớ ủ

ệ return trong đó bao g m m t giá tr tr l i. Câu l nh này có

ị ả ạ

nghĩa là “t ph

ng th c này hãy l p t c tr v và dùng bi u th c kèm theo đây làm giá tr tr l i.” Bi u

ươ

ậ ứ

ở ề

ị ả ạ

th c mà b n đ t ra có th ph c t p tùy ý, vì v y ta có th vi t ph

ng th c sau m t cách g n h n:

ứ ạ

ể ế

ươ

ơ

public static double

area(

double

radius) {

return

Math.PI * radius * radius;

}

M t khác, nh ng

bi n t m th i

ế

như area th ng giúp cho vi c g l i đ c d dàng h n.

ườ

ệ ỡ ỗ ượ ễ

ơ Trong c i hai

tr

ng h p, ki u c a bi u th c trong l nh

ườ

ể ủ

ệ return ph i kh p v i ki u c a ph ng th c. Nói cách khác,

ể ủ

ươ

khi b n khai báo r ng ki u tr l i là

ả ạ

double, b n đã cam k t r ng ph

ng th c này cu i cùng s t o ra

ế ằ

ươ

ẽ ạ

m t

ộ double. N u b n th

ế

ử return mà không kèm theo bi u th c nào, ho c kèm theo bi u th c nh ng sai

ư

ki u, thì trình biên d ch s r y la b n.

ẽ ầ

Đôi khi c n ph i có nhi u l nh return, m i l nh đ t m t nhánh c a l nh đi u ki n:

ề ệ

ỗ ệ

ặ ở ộ

ủ ệ

public static double

absoluteValue(

double

x) {

if

(x < 0) {