ươ

Ch

ng 7

ươ

Ph

ứ ng Th c

ươ

ươ

Ch

ng 7: Ph

ứ ng th c

ứ ng th c. ươ

ươ ồ

ng th c.

ệ i thi u ph o Gi ị o Đ nh nghĩa ch ng ph ớ o L p Math. ể ị o Chia đ  tr  và đ  quy.

Đ nh nghĩa

ng th c là m t t p các câu l nh

ộ ậ ằ ệ ệ ự ộ ươ c nhóm l

o Ví d :ụ

ữ ậ

§ Tính giai th a.ừ § Tính di n tích hình ch  nh t. ng trình. § Gi

ệ ươ i ph

ộ ứ o M t ph ượ ạ ớ đ i v i nhau nh m th c hi n m t  ệ ụ ể công vi c c  th  nào đó.

ươ

Khai báo ph

ứ ng th c

[static]

[public/private/…] phương thức> <(Danh sách tham số)>

{

// các câu lệnh.

}

ươ

C u trúc ph

ứ ng th c

Kiểu trả về

Danh sách tham số

Tên phương thức

public static long giaiThua(int n) { long ketQua = 1; if (n==1)

Thân phương thức

ketQua = 1;

else

ketQua = giaiThua(n-1)*n;

return ketQua; }

Kết quả trả về

ươ

C u trúc ph

ứ ng th c

ươ

C u trúc ph

ứ ng th c

Ví dụ

ươ

//Khai báo và g i ph

ứ ng th c

public class TestMax{

public static void main(String[] args){

int i = 5, j = 2;

int k = max (i, j);

System.out.println(“Max cua “ +i+ “ va “ +j+ “  là “ + k);

}

// Tim Max cua hai so

public static int max(int so1, int so2) {

int result;

result = so1 > so2 ? so1 : so2;

return result;

}

}

Ví dụ

ươ

//Khai báo và g i ph

ứ ng th c

class Message{

public static void main(String[] args) {

String str = "Hello";

int n = 9;

nPrintln(str, n); //Goi phuong thuc

System.out.println("Goodbye.");

}

public static void nPrintln(String message, int n) {

for (int i = 1; i <= n; i++)

System.out.println(i + ": " + message);

}

}

Chồng phương thức

o Chồng phương

thức

o Ví dụ: Chồng phương thức max

là khai báo nhiều phương thức có cùng tên nhưng có số và/hoặc kiểu tham số khác nhau.

public static double max(double num1, double num2){

if (num1 > num2)

return num1;

else

return num2;

}

Chồng phương thức

public class TimSoLonNhat {

public static void main(String[] args){

if (num1 > num2)

int i = 5, j = 2;

return num1;

double a =8, b =10;

return num2;

int k = max (i, j);

System.out.println("Max cua " +i+

public static double  max(double num1, double  num2){                     else                    } }

" va " +j+ "  là " + k);

double h = max(a,b);

System.out.println("Max cua " +a+

" va " +b+ "  là " + h);

}

public static int max(int so1, int so2) {

int result;

result = so1 > so2 ? so1 : so2;

return result;

}

Lợi ích của phương thức

Lớp java.lang.Math

o Các hằng lớp:

§ PI

§ E

o Các phương thức lớp:

§ Các phương thức lượng giác

§ Các phương thức số mũ

§ Các phương thức làm tròn

§ Các phương thức min, max, abs, và

random

Các phương thức lượng giác

o sin(double rad)

o asin(double rad) o atan(double rad)

o cos(double rad)

o

o

o

tan(double rad)

o acos(double rad)

toRadians(double deg) toDegrees(double rad)

ươ

ứ Ph ng th c o Math.sin(0) o Math.sin(Math.PI/6) o Math.cos(0) o Math.cos(Math.PI/6) ị ả ề Giá tr  tr  v ­> 0.0

­> 0.5

­> 1.0

­> 0.866

Các phương thức số mũ

o exp (double a)

o

ươ Ph ứ ng th c

o pow (double a,double b)

o sqrt (double a)

log (double a)

o ea

o

ị ả ề Giá tr  tr  v

o ab

ln(a)

o Căn b c 2 c a a

ủ ậ

Ví dụ

public class LopMath {

public static void main(String[] args) {

double tinhsin;

tinhsin = Math.sin(0);

System.out.println("sin cua 0 = "+tinhsin);

ế

ả System.out.println("k t qu  = " + Math.sin(Math.PI/6));

int a = 4, b=5;

System.out.println(a + " mũ "+ b + " = "+Math.pow(a,b));

int c = 9;

System.out.println("Căn b c 2 c a "+c + " = "+Math.sqrt(c));

}

}

Các phương thức làm tròn

Ví dụ

o Math.ceil(2.1) -> 3.0

o Math.ceil(-2.1)

o Math.floor(2.1)

-> -2.0

o Math.floor(-2.1)

-> 2.0

o Math.rint(2.1) -> 2.0

o Math.rint(-2.1)

-> -3.0

o Math.rint(2.5)

-> -2.0

o Math.round(2.6f) -> 3 (giá trị int)

o Math.round(-2.6)

-> 2.0

o Math.round(2.0)

-> -3 (giá trị long)

-> 2 (giá trị long)

Ví dụ

max(a, b) và min(a, b)

ấ ủ

ả ề

ị ớ

ấ o Tr  v  giá tr  l n nh t và nh  nh t c a a, b

o VD:   Math.max(2, 3) = 3

Math.min(2.5, 3) = 2.5

abs(a)

ệ ố ủ

ả ề

ị o Tr  v  giá tr  tuy t đ i c a a

o Math.abs(­2.4) = 2.4

random()

ả ề ộ

o Tr  v  m t  giá tr  double ng u nhiên trong kho ng [0.0;

1.0)

o VD:

⇒ ố

10+(int)(Math.random()*20)

S  nguyên thu c [10; 30)

⇒ ố ự

10 + (Math.random()*20)

S  th c thu c [10.0; 30.0)

min, max, abs, random

public class LopMath {

public static void main(String[] args) {

int a, b, solon, sonho;

a = ­8;

b = 10;

solon = Math.max(a,b);

ố ớ

System.out.println("S  l n nh t = "+solon);

ố ớ

System.out.println("S  l n nh t = "+Math.min(a, b));

ệ ố ủ

ị System.out.println("Giá tr  tuy t đ i c a "+a+" = " +

Math.abs(a));

c = Math.random();

ế

System.out.println("Giá tr  c trong kho ng 0 đ n 1.0 là " + c);

}

}

Đệ quy

Bài toán

ụ ươ

ứ ệ

Ví d  Ph

ng th c đ  quy countDown()

o

ứ ự ả ố In ra s  nguyên theo th  t ầ  gi m d n

public static void countDown(int integer) {

System.out.println(integer);

if (integer > 1)

countDown(integer ­ 1);

} // end countDown

ươ

ứ ệ ng th c đ  quy

ạ ộ Ho t đ ng Ph countDown()

ươ

ứ ệ ng th c đ  quy

ạ ộ Ho t đ ng Ph countDown()

ụ ươ

ứ ệ

Ví d  Ph

ng th c đ  quy sumOf()

ầ ổ ố o Tính t ng n s  nguyên đ u tiên.

public static int sumOf(int n){

int sum;

if (n = = 1)

ườ ợ ơ ở sum = 1; // tr ng h p c  s

else

ờ ọ ệ i g i đ  quy sum = sumOf(n ­ 1) + n; // l

return sum;

} // end sumOf

ươ

ứ ệ ng th c đ  quy

ạ ộ Ho t đ ng ­ Ph sumOf()