Chương 7
Phương Thức
Chương 7: Phương thức
o Giới thiệu phương thức. o Định nghĩa chồng phương thức. o Lớp Math. o Chia để trị và đệ quy.
Định nghĩa
o Một phương thức là một tập các câu lệnh được nhóm lại với nhau nhằm thực hiện một công việc cụ thể nào đó.
Tính giai thừa. Tính diện tích hình chữ nhật. Giải phương trình.
o Ví dụ:
Khai báo phương thức
trả về> // các câu lệnh. [public/private/…]
phương thức> <(Danh sách tham số)>
{
} Kiểu trả về Danh sách tham số Tên phương thức ketQua = 1; ketQua = giaiThua(n-1)*n; public static long giaiThua(int n) {
long ketQua = 1;
Thân
if (n==1)
phương
thức
else
return ketQua;
} Kết quả trả về • Ví dụ: public static float DienTich(float banKinh) Phương thức có thể trả về một giá trị. Kiểu của giá trị
trả về đó là kiểu của phương thức trả về. • Ví dụ: Kiểu giá trị trả về trong phương thức main là void. Phương thức không có giá trị trả về → chúng ta dùng
từ khóa void. Khi phương thức được gọi, tham số hình thức được thay
thế bởi các biến hoặc dữ liệu, được gọi là tham số thực sự
(actual parameters). Lệnh return có thể xuất hiện ở nhiều nơi trong phương
thức và là lệnh cuối cùng thực hiện trong phương thức. Lệnh trả về giá trị là bắt buộc phải có đối với phương thức
có khai báo kiểu trả về khác void int i = 5, j = 2;
int k = max (i, j);
System.out.println(“Max cua “ +i+ “ va “ +j+ “ là “ + k); int result;
result = so1 > so2 ? so1 : so2;
return result; String str = "Hello";
int n = 9;
nPrintln(str, n); //Goi phuong thuc
System.out.println("Goodbye."); for (int i = 1; i <= n; i++)
System.out.println(i + ": " + message); o Chồng phương thức 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. if (num1 > num2)
return num1;
else
return num2; o Ví dụ: Chồng phương thức max
public static double max(double num1, double
num2){
} Viết một lần, dùng nhiều lần. Giấu thông tin. Giấu sự thực hiện đối với
user. Giảm độ phức tạp. 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 o sin(double rad)
o cos(double rad)
o tan(double rad)
o acos(double rad) o asin(double rad)
o atan(double rad)
o toRadians(double deg)
o 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 Phương thức
o exp (double a)
o log (double a)
o pow (double a,double b)
o sqrt (double a) Giá trị trả về
o ea
o ln(a)
o ab
o Căn bậc 2 của a 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 + " = public class LopMath {
public static void main(String[] args) {
"+Math.sqrt(c));
}
} • Làm tròn lên giá trị nguyên gần nhất double ceil(double x) → giá trị thực • làm tròn xuống giá trị nguyên gần double floor(double x) nhất → giá trị thực double rint(double x) • làm tròn đến giá trị nguyên gần nhất.
Nếu phần lẻ của x bằng 0.5 → làm
tròn xuống • Trả về (int) Math.floor(x+0.5) int round(float x) • Trả về (long) Math.floor(x+0.5) long round(double x) o Math.ceil(2.1)
o Math.ceil(-2.1)
o Math.floor(2.1)
o Math.floor(-2.1)
o Math.rint(2.1)
o Math.rint(-2.1)
o Math.rint(2.5)
o Math.round(2.6f)
o Math.round(-2.6)
o Math.round(2.0) -> 3.0
-> -2.0
-> 2.0
-> -3.0
-> 2.0
-> -2.0
-> 2.0
-> 3 (giá trị int)
-> -3 (giá trị long)
-> 2 (giá trị long) 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+" = " + c = Math.random();
System.out.println("Giá trị c trong khoảng 0 đến 1.0 là " + c); public class LopMath {
public static void main(String[] args) {
Math.abs(a));
}
} Đệ quy là một kỹ thuật giải một bài toán Chia một bài toàn thành các bài toán tương tự nhưng có kích
thước nhỏ hơn Tiếp tục chia cho đến khi gặp trường hợp cơ sở (base case) mà
lời giải cho các bài toán này là rõ ràng Sử dụng lời giải đó để giải các bài toán lớn hơn trước đó Tiếp tục cho đến khi bài toán gốc được giải Một phương thức chứa một lời gọi đến chính nó là
một phương thức đệ quy Một bài toán đệ quy có thể được giải bằng cách
dùng vòng lặp và ngược lại System.out.println(integer);
if (integer > 1)
countDown(integer - 1); o In ra số nguyên theo thứ tự giảm dần
public static void countDown(int integer) {
} // end countDown int sum;
if (n = = 1)
sum = 1; // trường hợp cơ sở
else
sum = sumOf(n - 1) + n; // lời gọi đệ quy
return sum; o Tính tổng n số nguyên đầu tiên.
public static int sumOf(int n){
} // end sumOfCấu trúc phương thức
Cấu trúc phương thức
Cấu trúc phương thức
Tham số khai báo trong danh sách tham số được gọi là
tham số hình thức (formal parameters)
Ví dụ
//Khai báo và gọi phương thức
public class TestMax{
public static void main(String[] args){
}
// Tim Max cua hai so
public static int max(int so1, int so2) {
}
}
Ví dụ
//Khai báo và gọi phương thức
class Message{
public static void main(String[] args) {
}
public static void nPrintln(String message, int n) {
}
}
Chồng phương thức
Chồng phương thức
return num1;
int i = 5, j = 2;
double a =8, b =10;
int k = max (i, j);
System.out.println("Max cua " +i+ "
if (num1 > num2)
else
return num2;
double h = max(a,b);
System.out.println("Max cua " +a+
public static double
max(double num1, double
num2){
}
}
int result;
result = so1 > so2 ? so1 : so2;
return result;
public class TimSoLonNhat {
public static void main(String[] args){
va " +j+ " là " + k);
" va " +b+ " là " + h);
}
public static int max(int so1, int so2) {
}
Lợi ích của phương thức
Lớp java.lang.Math
Các phương thức lượng giác
Các phương thức số mũ
Ví dụ
Các phương thức làm tròn
Ví dụ
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
Đệ quy
Bài toán
Ví dụ: Một số bài toán đệ quy điển hình
• Tính giai thừa
• Tìm số fibonacci thứ n
• Tháp Hà Nội
Ví dụ Phương thức đệ quy countDown()
Hoạt động Phương thức đệ quy countDown()
Hoạt động Phương thức đệ quy countDown()
Ví dụ Phương thức đệ quy sumOf()
Hoạt động - Phương thức đệ quy sumOf()

