C++: Bài 12. Điều kiện if-else và ?:


Đăng ký nhận thông báo về những video mới nhất

Điều kiện if-else dùng trong trường hợp muốn rẽ nhánh chương trình theo điều kiện. Ví dụ, nếu biến nguyên n chia hết cho 2 thì suy ra n là số chẵn, ngược lại n là số lẻ. Có nhiều dạng rẽ nhánh khác nhau, dưới đây ta sẽ tìm hiểu những dạng điều kiện if - else khác nhau để có thể áp dụng vào từng trường hợp cụ thể thực tế.

1. if không có else

Cú pháp:

if(điều_kiện) {
  khối_lệnh;
}

Theo cú pháp trên, khối_lệnh chỉ được thực hiện khi điều_kiện (condition) là đúng (true), còn không thì bỏ qua khối lệnh. Trong trường hợp khối lệnh chỉ có duy nhất một lệnh thì ta có thể bỏ qua cặp ngoặc xoắn ({}).

C++ decision making

điều_kiện ở đây có thể là một điều kiện đơn hoặc cũng có thể bao gồm nhiều điều kiện sử dụng các phép toán Logic.

Ví dụ:

#include<iostream>
using namespace std;

main(){
  int n=5;
  if(n%2==1) { //điu kin này đúng,
  cout << n << " la so le"; //nên khi lnh s được thc hin.
  }

  return 0;
}

2. if-else thông thường

Cú pháp:

if(điều_kiện) {
  khối_lệnh1;
}
else {
  khối_lệnh2;
}

Theo cú pháp trên, nếu điều_kiện là đúng thì thực hiện khối_lệnh1, không đúng thì thực hiện khối_lệnh2. Ví dụ:

#include<iostream>
using namespace std;

main(){
  int m=6;
  if(m%2 != 0){ //điu kin này sai,
  cout << m <<" la so le"; //nên khi lnh này không được thc hin.
  }
  else{
  cout << m <<" la so chan"; //vy thì khi lnh này s được thc hin.
  }
  return 0;
}

Ví dụ dưới đây sẽ áp dụng if-else để xác định một số N nào đó có phải là số nguyên hay không. Số nguyên là số có phần thập phân bằng 0 hoặc phần nguyên của số đó bằng chính nó, ví dụ như 5.0 được coi là số nguyên vì phần thập phân bằng 0 hay phần nguyên của nó (là 5) bằng chính nó (5.0).

#include<iostream>
using namespace std;

main(){
  float N;
  cout <<"Moi ban nhap mot so bat ky: ";
  cin >> N;
  if(N==(int)N) //nếu phn nguyên ca N bng chính nó
  //thì khng đnh N là s nguyên
  cout << N << " la so nguyen";
  else //nếu không thì
  //khng đnh N không phi là s nguyên
  cout << N << " khong phai la so nguyen";

  return 0;
}

3. Nhiều if-else

Loại điều kiện này được sử dụng trong trường hợp có nhiều điều kiện rẽ nhánh và thường có dạng như sau:

if(điều_kiện_1){
  khối_lệnh_1;
}
else if(điều_kiện_2){
  khối_lệnh_2;
}
...
else if(điều_kiện_n){
  khối_lệnh_n;
}
else{
  khối_lệnh;
}

Theo cú pháp này, nếu điều_kiện_i nào đúng thì khối_lệnh_i của if tương ứng sẽ được thực hiện, tất cả các khối lệnh khác sẽ bị bỏ qua.

Trong trường hợp tất cả các điều kiện đều sai thì Khối_lệnh của else nằm cuối cùng sẽ được thực hiện. Ví dụ sau sẽ xác định loại học lực dựa trên biến diemtrungbinh:

#include<iostream>
using namespace std;

main(){
  float diemtrungbinh;
  cout <<"Moi ban nhap diem trung binh: ";
  cin >> diemtrungbinh;
  if(diemtrungbinh>=9){
  cout <<"Xuat sac";
  }
  else if(diemtrungbinh>=8){
  cout <<"Gioi";
  }
  else if(diemtrungbinh>=6.5){
  cout <<"Kha";
  }
  else if(diemtrungbinh>=5){
  cout <<"Trung binh";
  }
  else{ //nếu tt c các điu kin trên đu sai
  cout <<"Hoc luc yeu"; //thì khi lnh này s được thc hin
  }

  return 0;
}

4. if lồng

if lồng có nghĩa là if nằm trong if, hay trong if này lại có if khác. Dưới đây là một dạng if lồng:

if(điều_kiện){
  if(điều_kiện_1){
    khối_lệnh_1;
  }
  if(điều_kiện_2){
    khối_lệnh_2;
  }
  else{
    khối_lệnh_3;
  }
}
else{
  khối_lênh;
}

Theo dạng trên thì trong if ngoài có 2 if. Vấn đề có thể nảy sinh là phải nhận diện rõ else nào đi với if nào để thiết lập đúng cho các điều kiện rẽ nhánh.

Bạn cần nhớ quy tắc sau:

"else sẽ đi với if gần nó nhất nhưng phải nằm trong cùng một khối lệnh".

Theo dạng trên thì cặp else và if có màu xanh (green) sẽ đi với nhau, cặp else và if màu đỏ (red) sẽ đi với nhau.

Ví dụ, sử dụng ngôn ngữ lập trình C để giải phương trình bậc hai: ax2 + bx + c = 0. Để giải được phương trình bậc hai thì ta cần phải có ba dữ liệu là ba hệ số a, b và c. Sau đây là đoạn mã thực hiện chương trình:

 

#include<iostream>
#include<math.h>
using namespace std;

main(){
  // Bai toan giai phuong trinh bac hai

  float a, b, c, delta, x1, x2;
  //trước tiên yêu cu người dùng nhp vào các h s a
  cout <<"Nhap he so a: ";
  cin >> a;
  cout <<"Nhap he so b: "; //h s b
  cin >>b;
  cout <<"Nhap he so c: "; //và h s c
  cin >> c;
  if(a==0) { //nếu a bng 0 thì
    if(b==0) { //nếu b bng 0 thì
      if(c==0) { //nếu c bng 0 thì
        //in ra phương trình vô s nghim
        cout <<"Phuong trinh vo so nghiem!";
      }else {
        //nếu không thì in ra phương trình vô nghim
        cout <<"Phuong trinh vo nghiem!";
      }
    }else { //trường hp b khác 0
      //thì phương trình có nghim -c/b
      cout <<"Phuong trinh co mot nghiem, x = " << -c/b;
    }
  }else { //trường hp a khác 0 thì
    delta=b*b - 4*a*c; //trước tiên tính bit thc delta
    if(delta<0) { //nếu delta âm
      //thì phương trình vô nghim
      cout <<"Phuong trinh vo nghiem!";
    }else if(delta==0) { //nếu không thì nếu delta bng 0
      //thì phương trình có nghim kép bng -b/(2*a)
      cout <<"Phuong trinh co nghiem kep, x1 = x2 = " << -b/(2*a);
    }else { //trường hp còn li (tc là delta dương)
      //thì khng đnh phương trình có hai nghim phân bit
      cout <<"Phuong trinh co hai nghiem phan biet:" << endl;
      x1 = (-b+sqrt(delta))/(2*a); //tính nghim x1
      x2 = (-b-sqrt(delta))/(2*a); //tính nghim x2
      cout << "x1 = " << x1 << endl; //ri in ra x1
      cout << "x2 = " << x2; //và x2.
    }
  }

  return 0;
}

5. Toán tử điều kiện ba ngôi ?:

Cú pháp:

điều_kiện ? tvalue : fvalue;

Quy cách thực thi:

Khi trình dịch đọc được toán tử ba ngôi thì trước tiên nó sẽ kiểm tra xem điều_kiện có đúng (true) không, nếu đúng thì sẽ lấy tvalue, ngược lại sẽ lấy fvalue.

Ví dụ:

#include<iostream>
#include<math.h>
  using namespace std;

main(){
  int age; //khai báo mt biến cha tui
  cout <<"Moi nhap tuoi: ";
  cin >> age;
  //kim tra xem tui có t 18 không
  cout << (age>=18 ? "Ban da du tuoi cong dan" : "Ban chua du tuoi cong dan");

  return 0;
}

Xem thêm


Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!