Chương cấu trúc điều khiển này sẽ trình bày cách sử dụng các cấu trúc điều khiển trong quá trình viết chương trình. Tất cả các ngôn ngữ lập trình đều hỗ trợ các cấu trúc điều khiển tương tự nhau.Việc hiểu rõ bản chất của mỗi cấu trúc điều khiển trong từng ngôn ngữ lập trình cụ thể là rất quan trọng đối với người lập trình.

Để khởi đầu cho việc làm quen với các cấu trúc điều khiển lập trình trong Java, trước hết các bạn cần hiểu qua về khái niệm khối lệnh: Khối lệnh (block) là một tập hợp các lệnh nằm trong một cặp dấu ngoặc nhọn (bắt đầu bởi dấu { và kết thúc bởi dấu }). Các khối lệnh có thể lồng nhau, tức là một khối lệnh có thể nằm bên trong một khối lệnh khác.

Bài đầu tiên trong chương cấu trúc điều khiển này tôi sẽ giới thiệu với các bạn về cấu trúc điều khiển đầu tiên đó là cấu trúcif - else và sau đó tôi sẽ đưa ra một số ví dụ, bài tập vận dụng cấu trúc này.

1. Cấu trúc điều khiển if – else.

Trong ngôn ngữ lập trình Java cũng như các ngôn ngữ lập trình khác, cấu trúc điều khiển if – else sẽ kiểm tra kết quả của 1 điều kiện và dựa vào kết quả đó để thực hiện các hành động tương ứng.

Cấu trúc if – else có 4 dạng chính mà tôi sẽ giới thiệu ngay sau đây.

Cấu trúc if khuyết else.

Cú pháp
1
2
3
4
if (điều kiên 1) {
    // hành động 1
}
// Lệnh kế tiếp

trong đó điều kiện là 1 biểu thức nào đó bao gồm các biểu thức toán học (so sánh, ...).

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Lưu đồ trên cho thấy khi biên dịch chương trình thì trình biên dịch sẽ vào kiểm tra biểu thức điều kiện trong if. Nếu biểu thức điều kiện đó trả về kết quả là đúng (true) thì hành động tương ứng nằm bên trong khối lệnh sẽ được thực hiện, còn nếu biểu thức điều kiện đó trả về kết quả là sai (false) thì sẽ kết thúc câu lệnh điều khiển và một số câu lệnh khác sẽ được thi hành.

Ví dụ dưới đây sẽ so sánh 2 số và hiển thị ra màn hình số nhỏ nhất trong 2 số.

Ví dụ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package cau_truc_ifelse;
import java.util.Scanner;
public class TimSoNhoNhat {
    public static void main(String[] args) {
        int firstNumber, secondNumber;
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số thứ nhất: ");
        firstNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondNumber = scanner.nextInt();
        
        int minNumber = firstNumber;    // gán giá trị của biến firstNumber cho minNumber
        
        /*
         * So sánh firstNumber với secondNumber
         * Nếu firstNumber lớn hơn secondNumber thì sẽ gán giá trị của secondNumber cho minNumber
         * Còn không thì không làm gì cả và kết thúc câu lệnh điều khiển.
         */
        if (firstNumber > secondNumber)
            minNumber = secondNumber;
        
        System.out.println("Số nhỏ nhất trong 2 số " + firstNumber + " và " + secondNumber +
                        " là " + minNumber);
    }
}

Kết quả sau khi biên dịch chương trình:

Cấu trúc if – else đầy đủ.

Cú pháp
1
2
3
4
5
6
if (điều kiên 1) {
    // hành động 1
} else {
    // hành động 2
}
// Lệnh kế tiếp

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Trong lưu đồ này, việc thực hiện của chương trình sẽ rẽ thành hai nhánh tùy theo kết quả của biểu thức điều kiện. Nếu biểu thức điều kiện trả về kết quả đúng thì các lệnh trong khối lệnh của lệnhifđược thực hiện; ngược lại thì những lệnh trong khối lệnh của lệnh elseđược thực hiện.

Ví dụ dưới đây sẽ kiểm tra số bạn vừa nhập vào là số chẵn hay lẻ.

Ví dụ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cau_truc_ifelse;
import java.util.Scanner;
public class KiemTraSoChanLe {
    public static void main(String[] args) {
        int number;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số cần kiểm tra: ");
        number = scanner.nextInt();
        
        // số chẵn là số chia hết cho 2
        if (number % 2 == 0) {
            System.out.println(number + " là số chẵn");
        } else {
            // ngược lại là số lẻ
            System.out.println(number + " là số lẻ");
        }
    }
}

Kết quả sau khi biên dịch chương trình:

Cấu trúc điều khiển if – else if – else.

Cấu trúc điều khiển if - else if - else là một tập hợp các câu lệnh if<tt>else if</tt>và elseđược dùng để giải quyết những yêu cầu phức tạp mà chương trình đề ra.

Cú pháp
1
2
3
4
5
6
7
8
9
10
if (điều kiên 1) {
    // hành động 1
} else if (điều kiện 2) {
    // hành động 2
} else if (điều kiện 3) {
    // hành động 3
} ... else {
    // hành động n
}
// Lệnh kế tiếp

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Trong lưu đồ này, việc thực hiện của chương trình sẽ rẽ thành nhiều nhánh tùy theo kết quả của biểu thức điều kiện. Nếu biểu thức điều kiện trả về kết quả đúng thì các lệnh trong khối lệnh của lệnh if được thực hiện, nếu không thì các lệnh trong khối lệnh của lệnh else if được thực hiện. Và nếu tất cả các kết quả biểu thức điều kiện của ifvà else if đều không đúng thì câu lệnh trong elsesẽ được thực thi.

Ví dụ dưới đây sẽ so sánh số bạn nhập vào với 10 và hiển thị ra kết quả so sánh.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package cau_truc_ifelse;
import java.util.Scanner;
public class SoSanhVoiSo10 {
    public static void main(String[] args) {
        float number;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Nhập vào số cần so sánh: ");
        number = scanner.nextFloat();
        
        if (number < 10) {
            System.out.println("Số bạn vừa nhập nhỏ hơn 10");
        } else if (number == 10) {
            System.out.println("Số bạn vừa nhập bằng 10");
        } else {
            System.out.println("Số bạn vừa nhập lớn hơn 10");
        }
    }
}

Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình:

Các bạn thấy khi biên dịch chương trình tôi nhập vào số 12.1 thì trình biên dịch sẽ tiến hành thực hiện các bước sau:

Bước 1: Kiểm tra số 12.1 có nhỏ hơn 10 hay không? Vì số 12.1 lớn hơn 10 nên kết quả của biểu thức so sánh number < 10 sẽ trả về false, vì vậy câu lệnh trong khối lệnh ifsẽ không được thực hiện.

Bước 2: Kiểm tra số 12.1 có bằng 10 hay không? Kết quả là số 12.1 không bằng 10 nên câu lệnh trong khối lệnh củaelse if (number == 10)sẽ bị trình biên dịch bỏ qua.

Bước 3: Vì tất cả các biểu thức so sánh của ifvà else ifđều sai nên câu lệnh trong elsesẽ được thực thi và lúc này kết quả của chương trình sẽ là “Số bạn vừa nhập lớn hơn 10“.

Cấu trúc if – else lồng nhau.

Cấu trúc if – else lồng nhau (hay còn gọi là if bên trong if) là cấu trúc phức tạp nhất của cấu trúc điều khiểnif - else. Cú pháp của cấu trúc này như sau:

Cú pháp
1
2
3
4
5
6
7
8
9
10
if (điều kiện 1) {
    // Nếu điều kiện 1 trả về kết quả đúng thì điều kiện 2 trong if bên dưới sẽ được kiểm tra
    if (điều kiện 2) {
        // Nếu điều kiện 2 trả về kết quả đúng thì hành động trong if sẽ được thực hiện
    } else {
        // Nếu điều kiện 2 trả về kết quả sai thì hành động trong else sẽ được thực hiện
    }
} else {
    // Nếu điều kiện 1 trả về kết quả sai thì hành động trong else này sẽ được thực hiện
}

Ví dụ dưới đây sẽ yêu cầu bạn nhập 3 số bất kỳ từ bàn phím và hiển thị ra màn hình số lớn nhất trong 3 số đó.

Ví dụ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package cau_truc_ifelse;
import java.util.Scanner;
public class TimSoLonNhatTrong3So {
    public static void main(String[] args) {
        int firstNumber, secondNumber, thirdNumber, largestNumber;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Nhập vào số thứ nhất: ");
        firstNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ ba: ");
        thirdNumber = scanner.nextInt();
        
        if (firstNumber >= secondNumber) {
            if (firstNumber >= thirdNumber) {
                largestNumber = firstNumber;
            } else {
                largestNumber = thirdNumber;
            }
        } else if (secondNumber >= thirdNumber) {
            largestNumber = secondNumber;
        } else {
            largestNumber = thirdNumber;
        }
        
        System.out.println("Số lớn nhất trong 3 số " + firstNumber + ", " + secondNumber +
                        " và " + thirdNumber + " là " + largestNumber);
    }
}

Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình:

Trong chương trình này, tôi nhập vào 3 số lần lượt là 9, 20 và 2  thì trình biên dịch sẽ tiến hành thực hiện các bước sau:

Bước 1: Biểu thức if (firstNumber >= secondNumber) so sánh số 9 nhỏ hơn 20 nên trả về kết quả là sai nên các câu lệnh tiếp theo trong khối lệnh ifnày sẽ không được thực thi.

Bước 2: Biểu thức else if (secondNumber >= thirdNumber)sẽ so sánh số 20 và 2 thì thấy 20 lớn hơn 2 nên trình biên dịch sẽ gán giá trị 20 cho biến largestNumber.

Bước 3: Hiển thị giá trị của biến largestNumberra màn hình. Quá trình biên dịch kết thúc.

2. Cấu trúc toán tử điều kiện 3 ngôi.

Toán tử điều kiện 3 ngôi là cấu trúc thay thế của biểu thức điều kiện if - else trong Java.

Cú pháp:

Cú pháp
1
[Biểu thức điều kiện] ? [Giá trị 1] : [Giá trị 2];

Công dụng: Toán tử điều kiện 3 ngôi sẽ kiểm tra giá trị của biểu thức điều kiện, nếu biểu thức này trả về giá trị đúng thì biểu thức giá trị 1 được tính toán và trở thành giá trị của biểu thức, nếu biểu thức điều kiện trả về giá trị sai thì biểu thức giá trị 1 được tính toán và trở thành giá trị của biểu thức.

Đoạn chương trình dưới đây sẽ kiểm tra số nhập vào là số chẵn hay lẻ bằng cách sử dụng toán tử điều kiện 3 ngôi.

Ví dụ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cau_truc_ifelse;
import java.util.Scanner;
public class ToanTuDieuKien3Ngoi {
    public static void main(String[] args) {
        int number;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Nhập vào số cần kiểm tra: ");
        number = scanner.nextInt();
        
        /*
         * Sử dụng toán tử điều kiện 3 ngôi
         */
        String ketQua = (number % 2 == 0) ? "Số " + number + " là số chẵn" : "Số " + number +
            " là số lẻ";
        System.out.println(ketQua);
    }
}

Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình: Trong chương trình này, tôi nhập số cần kiểm tra là số 3 thì trình biên dịch sẽ kiểm tra số 3 là số không chia hết cho 2 nên biểu thức number % 2 == 0 sẽ trả về kết quả là sai nên biểu thức phía sau dấu : sẽ được thực thi. Vì vậy, trình biên dịch sẽ hiển thị ra thông báo “Số 3 là số lẻ“.

3. Lời kết.

Trong bài này tôi đã giới thiệu đến các bạn cấu trúc điều khiển đầu tiên đó là cấu trúc điều khiển if – else và các dạng chính của nó.

Theo: freetuts.net

 

ĐĂNG KÝ THÀNH VIÊN

NẾU NỘI DUNG HỮU ÍCH HÃY XEM QUẢNG CÁO ĐỂ ỦNG HỘ

NẾU NỘI DUNG HỮU ÍCH HÃY XEM QUẢNG CÁO ĐỂ ỦNG HỘ

Được quan tâm nhiều nhất

  • Apple Watch Series 4 Teardown

  • Apple Watch Series 5 Teardown - Always on Display Explained

  • Phim Ngắn Đột Kích - Phiên bản 10 năm trước

  • iPhone 11 Pro Max Teardown - Tiny Motherboard & BIG Battery!

Bạn thấy bài viết này thế nào?
Thể hiện yêu thương tác giả ở đây nhé!

Thích bài viết

thích

Chia sẻ ngay!

phuongle

Thành viên từ: 10/12/2019

Điểm uy tín: 5,987

SMod: 1,289 hướng dẫn đã chia sẻ

Team

Lập Trình Thành viên của Lập Trình

1 Thành viên

1,289 bài viết

Thêm bình luận

Bình luận bằng tài khoản Facebook

After viewing your support content - Please click advertisement for Support & Donate us team! Đóng