Cấu trúc lệnh điều khiển – Bài 3: if…esle và switch…case

Print

Cấu trúc lệnh điều khiển hay còn gọi là câu lệnh rẽ nhánh,là một phần không thể thiếu trong bất cứ ngôn ngữ lập trình cấp cao, có tác dụng chia chương trình ra nhiều hướng xử lý khác nhau trong một số trường hợp xác định.

I- Cấu trúc lệnh điều khiển if…else

Chắc các bạn đã học mệnh đề nếu…thì… rồi nhỉ. “Nếu hôm nay trời mưa thì chúng ta sẽ được nghỉ học thể dục”, nếu chuyển câu nếu…thì này vào Java nó sẽ thành như sau:

  1. String troihomnay = "mua";
  2. if(troihomnay == "mua"){
  3. //Than cua lenh if
  4. System.out.println("Nghi hoc the duc");
  5. }

Đọc những dòng lệnh trên dễ hiểu chứ? Chúng ta sẽ có 1 biến troihomnay kiểu String chua gia trị là “mua” sau đó là một câu lệnh if..else mà nó có nghĩa là câu  “Nếu hôm nay trời mưa thì chúng ta sẽ được nghỉ học thể dục”.
Trong dấu () phía sau lệnh if trong đó chưa một mệnh đề mang tính đúng hoặc sai (true or false) trong trường hợp này mệnh đề đó là

troihomnay == “mua” (kiểm tra xem biến troihomnay có phải đang chứa giá trị là “mua” hay không, nếu đúng trả về giá trị là true, còn sai thì trả về giá trị là false)

, nếu mệnh đề đó trả về giá trị là true thì nó sẽ thực hiện phần thân của if, vậy nếu giá trị trả về đó là false thì sao(tức  biến troihomnay ko chua giá trị là “mua” mà là “nang”)?? Trong trường hợp trên thì nó sẽ bỏ qua luôn phần thân hàm của if và nó sẽ không làm một điều gì cả. Xét tiếp trường hơp sau đây:

  1. String troihomnay = "mua";
  2. if(troihomnay == "mua"){
  3. //Than cua lenh if
  4. System.out.println("Nghi hoc the duc");
  5. }else{
  6. //than else, menh de nay thuc hien khi menh de cua if co gia tri la false
  7. //co the bo phan else để thành mệnh đề if không đầy đủ
  8. System.out.println("Di hoc binh thuong");
  9. }

Trong trường hợp trên đây, chúng ta sẽ có câu tương ứng là “Nếu hôm nay trời mưa thì chúng ta sẽ được nghỉ học thể dục, còn không thì học bình thường” các bạn có thể hiểu rồi chứ? Tức ở đây nếu mệnh đề troihomnay == “mua” có giá trị là false thì nó sẽ thực hiện những câu lệnh nằm trong else.

Thì trên đây là 2 trường hợp của câu lệnh if…else là câu lệnh if và if đầy đủ(tức là có cả phần else).

Các bạn có thể lồng các lệnh if…else vào nhau ví dụ:

  1. String troihomnay = "mua";
  2. if(troihomnay == "mua"){
  3. //Than cua lenh if
  4. System.out.println("Nghi hoc the duc");
  5. }else if(troihomnay == "nang"){
  6. //if else lồng nhau
  7. System.out.println("Di hoc binh thuong");
  8. }else{
  9. //truong hợp trời râm ^^
  10. //có thể bỏ phần else này để có câu lệnh if khuyết
  11. }

Nhưng việc lòng nhiều câu lệnh if…else vào nhau là điều không khuyến khích vì đôi khi nó sẽ khó kiểm soát (code bẩn lắm), và chúng ta có cấu trúc lệnh switch…case sẽ giải quyết được vấn đề này.

II- Cấu trúc lệnh điều khiển switch…case

Với trường hợp các câu lệnh if..else lồng vào nhau như trên ta sẽ xử lý với switch…case như sau:

  1. String troihomnay = "mua";
  2. switch(troihomnay){
  3. //than switch
  4. case "mua":
  5. System.out.println("Hom nay nghi hoc");
  6. break;
  7. case "nang":
  8. System.out.println("Di hoc binh thuong");
  9. break;
  10. case "ram":
  11. System.out.println("Hom nay troi ram");
  12. break;
  13. }

Ok, mình sẽ giải thích cái switch…case trên này một các đơn giản: nó sẽ chọn vị trí bắt đầu của các câu lệnh trong thân switch, nếu như troihomnay có giá trị là “mua” thì nó sẽ thực hiện các câu lệnh từ case thứ nhất (case “mua”), tương tự nếu như là “nang” hoặc “ram”.
Chúng ta có được lệnh break; nó có tác dụng thoát ra khỏi cấu trúc lệnh switch…case (để thấy được phần này thì các bạn xem video nha).
Số lượng case không giới hạn, nhưng các giá trị để xác đinh case sẽ ko được trùng nhau(chỉ có 1 case “mua”, nếu có case thứ 2 như vậy compiler sẽ báo lỗi).

NGUỒN: http://laptrinhvnc.com

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 or 0938 838 404  Ms Duyên