Bài 9: Cấu trúc ra quyết định if-else
Nội dung bài học
- Mục đích sử dụng
- Cú pháp tổng quát
- Sơ đồ khối
- Ví dụ minh họa
- Bài tập thực hành
Video lý thuyết
Video minh họa lý thuyết
Mục đích sử dụng
- Cấu trúc if hoặc if-else hoặc if-else-if dùng để đưa ra quyết định có thực hiện chương trình hay không.
- Nó còn có tên là cấu trúc rẽ nhánh, câu lệnh ra quyết định.
- Ví dụ vấn đề: nếu điểm trung bình >= 3.20 thì sinh viên A sẽ được học bổng. Như vậy ta sẽ có một điều kiện là điểm trung bình >= 3.20 để xét xem sinh viên A có đạt học bổng không. Nếu có thì ta quyết định trao học bổng cho sinh viên A. Ngược lại sinh viên A sẽ không được học bổng. Làm sao để chương trình biết mà thực hiện thay chúng ta?
- Khi nào sử dụng cái nào?
- Nếu muốn chương trình chỉ thực hiện khi điều kiện thỏa mãn. Dùng cấu trúc if.
- Nếu muốn khi điều kiện thỏa, thực hiện phương án A. Nếu không, thực hiện phương án B, ta dùng cấu trúc if-else.
- Nếu có nhiều hơn 2 phương án để thực hiện và các phương án mang tính loại trừ nhau, dùng if-else-if.
Cú pháp tổng quát
Cú pháp tổng quát cấu trúc if:
if (điều_kiện) {
// các câu lệnh cần thực hiện
}
- Trong đó:
- Luôn bắt đầu cấu trúc này với từ khóa if
- Theo sau if là cặp ngoặc tròn ( ) và trong đó chứa điều kiện
- Điều_kiện là các điều kiện cần thỏa mãn để phần thân if được thực hiện. Điều kiện của if luôn là giá trị hoặc biểu thức có tính đúng hoặc sai.
- Phần thân if bao bởi cặp ngoặc {} chứa các câu lệnh cần thực hiện nếu điều kiện thỏa mãn
- Cấu trúc if kết thúc bởi dấu }
- Ví dụ:
public class Lesson9 { public static void main(String[] args) { float avgGrade = 3.75f; if (avgGrade >= 3.2f) { // nếu điểm TB >= 3.2 // kết luận A đạt học bổng System.out.println("Sinh viên A đạt học bổng."); } } }
Cú pháp tổng quát cấu trúc if-else:
if(điều_kiện) { // làm gì đó nếu điều kiện thỏa mãn } else { // làm gì đó nếu điều kiện không thỏa }
- Trong đó các thành phần giống với if và thêm:
- else là một từ khóa đi liền sau dấu ngoặc } của if trước nó.
- Mỗi if chỉ có nhiều nhất 1 else.
- Mỗi else chỉ thuộc về duy nhất 1 if liền trước nó.
- Nếu điều_kiện không xảy ra thì nội dung khối else sẽ được thực hiện
- Ví dụ: Nếu sinh viên đạt điểm TB >= 3.20 thì được học bổng. Nếu không thì được giấy chứng nhận.
public class Lesson9 { public static void main(String[] args) { float avgGrade = 3.75f; if (avgGrade >= 3.2f) { // nếu điểm TB >= 3.2 // kết luận A đạt học bổng System.out.println("Sinh viên A đạt học bổng."); } else { // tặng cho sinh viên A cái giấy chứng nhận System.out.println("A đạt giấy chứng nhận."); } } }
Cú pháp tổng quát cấu trúc if-else-if:
if(điều_kiện1) { // làm gì đó nếu điều_kiện1 thỏa } else if(điều_kiện2) { // làm gì đó nếu điều_kiện2 thỏa } else if(điều_kiện3) { // làm gì đó nếu điều_kiện3 thỏa } else { // làm gì đó nếu tất cả điều kiện không thỏa}
- Trong đó giống cấu trúc if-else và thêm:
- Cấu trúc else if nối liền sau cấu trúc if trước đó. Nếu không phải là else if mà chỉ là if thì nó trở về cấu trúc if đơn đầu tiên ở trên.
- Cấu trúc else cuối cùng là tùy chọn, tức có thể có hoặc không tùy bài toán.
- Nếu điều_kiện1 thỏa, nội dung thân if đầu tiên được thực hiện.
- Nếu không, biểu thức điều_kiện2 sẽ được đánh giá. Nếu thỏa(tức true) thì khối if thứ hai sẽ được thực hiện.
- Nếu không, biểu thức điều_kiện3 sẽ được đánh giá. Nếu thỏa, khối if thứ 3 sẽ được thực hiện.
- Tương tự đánh giá được thực hiện cho biểu thức if thứ n.
- Sau cùng, nếu mọi điều kiện trên không thỏa. Khối else ở cuối(nếu có) sẽ được thực hiện.
- Ví dụ: Giả sử có 3 mức học bổng là Khá, Giỏi và Xuất sắc. Điều kiện của 3 mức lần lượt là:
- Khá: >= 3.0 và < 3.2: thưởng 3.2 triệu đ.
- Giỏi: >= 3.2 và < 3.6: thưởng 4.6 triệu đ.
- Xuất sắc: >= 3.6 đến 4.0: thưởng 10 triệu đ.
- Nếu không đạt mức nào thì thông báo không được học bổng.
// bắt đầu khởi tạo và xét duyệt var level = ""; // loại học bổng var amount = 0; // số tiền được thưởng tính theo vnđ if (avgGrade >= 3.6f) { // điều kiện học bổng xuất sắc // kết luận A đạt học bổng xuất sắc level = "Xuất sắc"; amount = 10_000_000; } else if(avgGrade >= 3.2f) { // kết luận A đạt học bổng giỏi level = "Giỏi"; amount = 4_600_000; } else if(avgGrade >= 3.0f) { // kết luận A đạt học bổng khá level = "Khá"; amount = 3_000_000; } else { // trường hợp này chưa đạt học bổng level = "không được học bổng"; }
Sơ đồ khối
- Các khối chức năng cơ bản:
- Hình thoi: khối kiểm tra điều kiện
- Hình bình hành: khối nhập xuất
- Hình chữ nhật: thực hiện lệnh
- Hình oval: bắt đầu, kết thúc
- Hình tròn nhỏ: một điểm nào đó trong chương trình
- Mũi tên: hướng thực hiện chương trình
- Cấu trúc if:
- Cấu trúc if-else:
Cấu trúc if-else-if:
Ví dụ minh họa
- Yêu cầu: Giả sử có 3 mức học bổng là Khá, Giỏi và Xuất sắc. Điều kiện của 3 mức lần lượt là:
- Khá: >= 3.0 và < 3.2: thưởng 3.2 triệu đ.
- Giỏi: >= 3.2 và < 3.6: thưởng 4.6 triệu đ.
- Xuất sắc: >= 3.6 đến 4.0: thưởng 10 triệu đ.
- Nếu không đạt mức nào thì thông báo không được học bổng.
- Sơ đồ khối phần xét duyệt học bổng của bài này:
Code mẫu:
import java.util.Scanner; public class Lesson9 { public static void main(String[] args) { var input = new Scanner(System.in); System.out.println("Nhập họ và tên: "); var fullName = input.nextLine(); System.out.println("Nhập điểm TB: "); var avgGrade = input.nextFloat();// đọc điểm vào // bắt đầu khởi tạo và xét duyệt var level = ""; // loại học bổng var amount = 0; // số tiền được thưởng tính theo vnđ if (avgGrade >= 3.6f) { // điều kiện học bổng xuất sắc // kết luận A đạt học bổng xuất sắc level = "Xuất sắc"; amount = 10_000_000; } else if(avgGrade >= 3.2f) { // kết luận A đạt học bổng giỏi level = "Giỏi"; amount = 4_600_000; } else if(avgGrade >= 3.0f) { // kết luận A đạt học bổng khá level = "Khá"; amount = 3_000_000; } else { // trường hợp này chưa đạt học bổng level = "không được học bổng"; } // kết luận cuối cùng của hội đồng xét duyệt if(amount > 0) { // nếu đạt học bổng, công bố kết quả long trọng System.out.println("Xin chúc mừng sinh viên "" + fullName + ""!"); System.out.println("Bạn đã đạt học bổng loại: " + level); System.out.println("Phần thưởng của bạn là: " + amount + "đ"); } else { // nếu không, thông báo tế nhị System.out.println("Rất tiếc, sinh viên A " + level); } } }
Bài tập thực hành
Tải đề bài: Click vào đây.
Lời giải mẫu: Click vào đây