3.1. Sử dụng cấu trúc rẽ nhánh if – else
3.1.1. Lý thuyết liên quan:
Khái niệm: Câu lệnh
if-elselà cấu trúc rẽ nhánh có điều kiện, kiểm tra một biểu thức logic trả về kiểuboolean(truehoặcfalse) để quyết định một trong hai hướng thực thi. Khi cần kiểm tra nhiều điều kiện độc lập nối tiếp, Java cung cấp cấu trúc bậc thangif-else-if ladder.Tác dụng: Định tuyến luồng xử lý của chương trình dựa vào các điều kiện phát sinh trong quá trình chạy.
Ý nghĩa: Là công cụ cơ bản để xử lý mọi bài toán phân loại dữ liệu, kiểm tra tính hợp lệ và phân luồng nghiệp vụ trong phần mềm.
3.1.2. Trình tự thực hiện:
B1: Xác định điều kiện logic cần kiểm tra bằng các toán tử quan hệ (
==,!=,>,<,>=,<=) hoặc toán tử logic (&&,||,!).B2: Viết cấu trúc
ifđơn hoặcif-elsecó bao bọc các câu lệnh bên trong khối ngoặc nhọn{}:Java
if (soDien <= 50) { tienDien = soDien * 1806; } else { tienDien = 50 * 1806 + (soDien - 50) * 1866; }B3: Mở rộng thành dạng bậc thang khi có nhiều mức điều kiện phân cấp:
Java
if (diemTB >= 8.5) { xepLoai = "Giỏi"; } else if (diemTB >= 6.5) { xepLoai = "Khá"; } else if (diemTB >= 5.0) { xepLoai = "Trung bình"; } else { xepLoai = "Yếu"; }B4: Biên dịch và kiểm thử các trường hợp biên để xác nhận chương trình chạy chính xác tất cả các nhánh.
Bài tập áp dụng
Bài tập 3.1.1: Giải phương trình bậc nhất ax + b = 0
-
-
Yêu cầu: Khai báo 2 hệ số a và b (kiểu
double). -
Sử dụng cấu trúc
if - elseđể biện luận và tìm nghiệm:
-
- Nếu a = 0 và b = 0 thì vô số nghiệm;
- Nếu a = 0 và b # 0 thì vô nghiệm;
- Nếu a # 0 thì nghiệm x = -b / a.
- In kết luận ra màn hình..
Bài tập 3.1.2: Tính cước vận chuyển hàng hóa
Yêu cầu: Nhập trọng lượng bưu kiện w (tính theo kg, kiểu double). Dùng if-else-if ladder tính giá cước: w<=2kg có giá 30.000 VNĐ; từ trên 2 kg đến 10 kg tính 30.000 VNĐ cộng thêm 5.000 VNĐ cho mỗi kg vượt quá 2 kg; trên 10 kg tính 70.000 VNĐ cộng 3.000 VNĐ cho mỗi kg vượt quá 10 kg. Xuất số tiền cước định dạng chuẩn.
Bài tập 3.1.3: Hãy viết phần mềm tính tiền điện sinh hoạt theo bậc thang:
Biểu giá điện sinh hoạt 6 bậc thang — hiệu lực từ 10/05/2025
Điện sinh hoạt áp dụng hệ thống 6 bậc lũy tiến: tiêu thụ càng nhiều kWh trong tháng, các bậc tiếp theo càng đắt. Mỗi bậc tính riêng — không phải nhân toàn bộ sản lượng với giá bậc cao nhất.
| Bậc | Sản lượng (kWh/tháng) | Chưa VAT (đ/kWh) | Đã VAT 8% (đ/kWh) |
|---|---|---|---|
| Bậc 1 | 0 – 50 kWh | 1.984 đ | 2.143 đ |
| Bậc 2 | 51 – 100 kWh | 2.050 đ | 2.214 đ |
| Bậc 3 | 101 – 200 kWh | 2.380 đ | 2.570 đ |
| Bậc 4 | 201 – 300 kWh | 2.998 đ | 3.238 đ |
| Bậc 5 | 301 – 400 kWh | 3.350 đ | 3.618 đ |
| Bậc 6 | Trên 400 kWh | 3.460 đ | 3.737 đ |
Bài tập 3.1.4: Hãy viết phần mềm Giải và biện luận phương trình bậc 2. Các hệ số nhập từ bàn phím. Hướng dẫn
3.2. Sử dụng cấu trúc rẽ nhánh switch – case
3.2.1. Lý thuyết liên quan:
Khái niệm:
switch-caselà câu lệnh rẽ nhiều nhánh dựa trên phép so sánh bằng giữa một biểu thức với danh sách các giá trị hằng số cố định (case). Trong Java,switchhỗ trợ các kiểu dữ liệu nguyên thủy dạng nguyên (byte,short,int,char), kiểuenumvà kiểu đối tượng chuỗiString.Tác dụng: Thay thế chuỗi
if-elsedài khi so sánh một biến đơn lẻ với nhiều giá trị hằng cụ thể, giúp mã nguồn sáng sủa và dễ bảo trì hơn.Ý nghĩa: Trình biên dịch Java tối ưu hóa cấu trúc
switchbằng bảng nhảy (jump table), giúp tốc độ điều hướng nhanh hơn so với duyệt chuỗi lệnhif-else.
3.2.2. Trình tự thực hiện:
B1: Chuẩn bị biểu thức hoặc biến cần kiểm tra (ví dụ: một lựa chọn số nguyên hoặc một từ khóa
String).B2: Khởi tạo khối
switch (bieuThuc) { ... }.B3: Khai báo các nhánh
case giaTri:đi kèm khối xử lý và bắt buộc kết thúc mỗi case bằng câu lệnhbreak(để tránh lỗi thực thi tràn xuống case dưới):String chucVu = "TP"; double phuCap = 0; switch (chucVu) { case "TP": phuCap = 1000000; break; case "PP": phuCap = 500000; break; case "NV": phuCap = 0; break; default: System.out.println("Chức vụ không hợp lệ!"); break; }B4: Khai báo khối
default:ở cuối để đón các trường hợp giá trị không nằm trong danh sách cáccase.
Bài tập áp dụng
Bài tập 3.2.1: Tra cứu số ngày trong tháng. Hướng dẫn
Yêu cầu: Cho biến số nguyên thang (từ 1 đến 12) và nam (ví dụ: 2024). Dùng switch-case gom các case tháng có 31 ngày (1, 3, 5, 7, 8, 10, 12), tháng có 30 ngày (4, 6, 9, 11) và xử lý riêng tháng 2 (năm nhuận 29 ngày, năm thường 28 ngày). In số ngày tương ứng.
Bài tập 3.2.2: Phân loại quyền truy cập người dùng. Hướng dẫn
Yêu cầu: Khai báo biến String vaiTro = "EDITOR";. Sử dụng switch-case trên chuỗi để hiển thị thông báo quyền hạn tương ứng: "ADMIN" –> Toàn quyền hệ thống; "EDITOR" –> Quyền thêm và chỉnh sửa nội dung; "VIEWER" –> Quyền chỉ đọc; trường hợp khác –> Tài khoản không hợp lệ.
Bài tập 3.2.3: Hãy viết phần mềm tính tiền điện sinh hoạt theo bậc thang dùng switch – case. Hướng dẫn