Thứ Ba, 28 tháng 9, 2021

10: Cấu trúc rẽ nhánh bằng if else và switch case trong lập trình C

Cấu trúc rẽ nhánh if, else là gì

Trong cuộc sống có nhiều lúc chúng ta phải ra quyết định khi có 2 hoặc nhiều hướng khác nhau. Lúc đấy chúng ta tường sử dụng câu Nếu … Thì …


VD:

Nếu hôm nay trời nắng thì mình sẽ đi chơi hoặc nếu không nắng thì mình ở nhà


Khi đó những thứ sau từ Nếu chính là điều kiện và sau từ Thì chính là lệnh thực thi.

Tương tự trong máy tính chúng ta có if (điều kiện) thì thực thi gì đó, hoặc nếu không else (điều kiện) thì thực thi một cái gì đó.


Cú pháp như sau:


if(bieu_thuc_boolean)

{

   /* cac lenh se duoc thuc thi neu bieu thuc boolean la true */

}

else

{

  /* cac lenh se duoc thuc thi neu bieu thuc boolean la false */

}


Nếu biểu thức logic được ước lượng là true, thì khi đó khối if sẽ được thực thi, nếu không thì khối else sẽ được thực thi.


Lệnh If và If else

Trong thực tế chúng ta sẽ sử dụng 2 cấu trúc này nhiều nhất, if sẽ kiểm tra nếu đúng điều kiện thì thực hiện. Con if else sẽ kiểm tra 2 trường hợp đúng và không đúng điều kiện thì thực thi 2 lệnh khác nhau.


Lệnh if



 

Ví dụ:


#include <stdio.h>

 

int main(){

    int a;

    printf("Nhap a = "); scanf("%d", &a);

 

    if (a % 2 == 0) // a chia hết cho 2

    {

        printf("%d la so chan", a);

    }

    printf("\nKet thuc!");

}


Lệnh if else





Ví dụ:


#include <stdio.h>

 

int main(){

    int a;

    printf("Nhap a = "); scanf("%d", &a);

 

    if (a % 2 == 0) // a chia hết cho 2

    {

        printf("%d la so chan", a);

    }

    else

    {

        printf("%d la so le", a);

    }

    printf("\nKet thuc!");

}


Lệnh if else if

Nói đơn giản lệnh này sẽ kiểm tra lần lượt các điều kiện, nếu từ trên xuống dưới, nếu điều kiện nào đúng sẽ thực thi lệnh rồi thoát khỏi chương trình.




 

Ví dụ


#include <stdio.h>

 

int main(){

    int a, b;

    printf("Nhap a = "); scanf("%d", &a);

    printf("Nhap b = "); scanf("%d", &b);

 

    if(a > b)

    {

        printf("a lon hon b");

    }

    else if(a == b)

    {

        printf("a bang b");

    }

    else

    {

        printf("a nho hon b");

    }

}


Lệnh if lồng nhau

Lệnh này có thể hiểu là kiểm tra nhiều điều kiện phải được đáp ứng.


Ví dụ: 

  • Anh muốn cưới con tôi à?
  • Đúng ạ
  • Anh có nhà không?
  • Có ạ
  • Anh có xe không?
  • Có ạ
  • Lương tháng anh 100 củ không?
  • Có ạ => ok tôi gả cho
  • Không ạ => Cút


Ta xét ví dụ sau:


#include <stdio.h>

 

int main(){

    int a;

    printf("Nhap a = "); scanf("%d", &a);

 

    if(a > 0)

    {

        if(a % 2 == 0)

        {

            printf("\nDay la so duong chan!");

        }

        else

        {

            printf("\nDay la so duong le!");

        }

    }

    else

    {

        printf("\nDay khong phai so duong!");

    }

    

}


Switch case là gì?

Switch case thực ra tương tự như if else if đó là nếu điều kiện đó đáp ứng 1 trong các tiêu chí là được.


Cú pháp


switch (expression)

​{

    case constant1:

      // statements

      break;

    case constant2:

      // statements

      break;

    .

    .

    .

    default:

    // default statements

}


Lưu ý khi sử dụng:

  • expression phải bắt buộc là giá trị hằng, có thể là biểu thức nhưng kết quả cần là hằng số.
  • Nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽ được thực hiện cho tới khi gặp lệnh break. Do đó, nếu chúng ta không sử dụng break thì tất cả các case kể từ case khớp giá trị đều được thực hiện.
  • Case default sẽ được thực hiện nếu không có case nào khớp giá trị với expression.



Sử dụng switch case

Kiểm tra điểm số và in ra học lực


#include <stdio.h>

 

int main ()

{

   char hocluc;

   printf("Nhap hoc luc: "); 

   scanf("%c", &hocluc);


   switch(hocluc)

   {

   case 'A' :

      printf("\nGioi!");

      break;

   case 'B' :

      printf("\nKha Gioi!");

      break;

   case 'C' :

      printf("\nKha!");

      break;

   case 'D' :

      printf("\nTrung Binh!");

      break;

   case 'F' :

      printf("\nYeu!");

      break;

   default :

      printf("\nKhong hop le!");

   }

   return 0;

}

0 bình luận:

Đăng nhận xét