Hãy xem xét một trường hợp mà bạn sẽ đi chợ, và bạn cùng phòng của bạn nói với bạn, nếu họ có bán dâu thì hãy mua một vài trái. Đây là một câu có điều kiện, có nghĩa là bạn sẽ thực hiện một số hành động (Mua một vài trái) chỉ khi điều kiện (họ có bán dâu) là đúng.

Các điều kiện như vậy thường rất phổ biến trong lập trình, vì chúng cho phép chúng ta thực hiện hành vi có điều kiện vào các chương trình của chúng ta. Loại câu lệnh điều kiện đơn giản nhất trong C ++ được gọi là câu lệnh if. Một câu lệnh if cho phép chúng ta thực thi một (hoặc nhiều) dòng code chỉ khi một số điều kiện là đúng.

Câu lệnh if đơn giản nhất có dạng sau:

if (condition) statement;

Để dễ đọc, điều này thường được viết như sau:

if (condition)
    statement;

Một điều kiện(condition) (còn được gọi là biểu thức điều kiện) là một biểu thức sẽ được ước lượng thành giá trị Boolean.

Nếu điều kiện(condition) của câu lệnh if ước lượng thành giá trị Boolean là đúng(true), thì câu lệnh(statement) tiếp theo được thực thi. Nếu điều kiện được ước tính thành giá trị Boolean là sai(false), câu lệnh(statement) tiếp theo sẽ bị bỏ qua.

Một số chương trình ví dụ sử dụng câu lệnh if

1. Một chương trình mẫu sử dụng câu lệnh if

Đưa ra chương trình sau:

 #include <iostream> 
 
 int   main ( ) 
 { 
     std::cout   <<   "Enter an integer: "; 
     int x { } ; 
     std::cin >> x; 
 
     if ( x == 0 ) 
         std::cout   <<   "The value is zero\n"; 

     return 0; 
 } 

Đây là đầu ra khi chạy chương trình này:

Enter an integer: 0
 The value is zero

Hãy xem xét cách thức hoạt động của nó chi tiết hơn.

Đầu tiên, người dùng nhập một số nguyên. Khi đó điều kiện x == 0 được ước tính. Toán tử đẳng thức (==) được sử dụng để kiểm tra xem hai giá trị có bằng nhau hay không. Toán tử == trả về true nếu các toán hạng bằng nhau và false nếu không. Vì x có giá trị 0 và 0 == 0 là đúng, biểu thức này ước tính là đúng .

Vì điều kiện đã được đánh giá là đúng , câu lệnh tiếp theo sẽ thực thi, in Bạn đã nhập số không .

Đây là một hoạt động khác của chương trình này:

 Enter an integer: 5

Trong trường hợp này, x == 0 ước tính thành false . Câu lệnh tiếp theo được bỏ qua, chương trình kết thúc và không có gì khác được in.

2. Câu lệnh If else

Cho ví dụ trên, điều gì sẽ xảy ra nếu chúng ta muốn nói với người dùng rằng số họ đã nhập không phải là số không?

Chúng ta có thể viết một cái gì đó như thế này:

 #include <iostream> 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     if   ( x   ==   0 ) 
         std :: cout   <<   "The value is zero\n" ; 
     if   ( x   !=   0 ) 
         std :: cout   <<   "The value is non-zero\n" ; 
 
     return   0 ; 
 } 

Hoặc này:

 #include <iostream> 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     bool   zero   {   ( x   ==   0 )   } ; 
     if   ( zero ) 
         std :: cout   <<   "The value is zero\n" ; 
     if   ( ! zero ) 
         std :: cout   <<   "The value is non-zero\n" ; 
 
     return   0 ; 
 } 

Cả hai chương trình này đều phức tạp. Thay vào đó, chúng ta có thể sử dụng một hình thức thay thế của câu lệnh if được gọi là if-else . If-else có dạng sau:

if (condition)
     true_statement;
 else
     false_statement;

Nếu điều kiện ước tính thành true, true_statement sẽ thực thi. Nếu không thì false_statement thực thi.

Hãy sửa đổi chương trình trước của chúng ta để sử dụng if-else .

 #include <iostream> 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     if   ( x   ==   0 ) 
         std :: cout   <<   "The value is zero\n" ; 
     else 
         std :: cout   <<   "The value is non-zero\n" ; 
 
     return   0 ; 
 } 

Bây giờ chương trình của chúng ta sẽ tạo ra đầu ra sau:

Enter an integer:: 0
The value is zero

Enter an integer:: 5
The value is non-zero

3. Một chuỗi câu lên if else

Đôi khi chúng ta muốn kiểm tra xem một vài điều là đúng hay sai theo trình tự. Chúng ta có thể làm như vậy bằng cách tạo một chuỗi một câu lệnh if thành if-if else, như vậy:

 #include <iostream> 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     if   ( x   >   0 ) 
         std :: cout   <<   "The value is positive\n" ; 
     else   if   ( x   <   0 ) 
         std :: cout   <<   "The value is negative\n" ; 
     else  
         std :: cout   <<   "The value is zero\n" ; 
 
     return   0 ; 
 } 

Toán tử nhỏ hơn (<) được sử dụng để kiểm tra xem một giá trị có nhỏ hơn giá trị khác hay không. Tương tự, giá trị lớn hơn toán tử (>) được sử dụng để kiểm tra xem một giá trị có lớn hơn giá trị khác hay không. Các toán tử này đều trả về giá trị Boolean.

Đây là đầu ra của một vài lần chạy chương trình này:

Enter an integer: 4
The value is positive

 Enter an integer: -3
 The value is negative

 Enter an integer: 0
The value is zero

4. Giá trị trả về Boolean và câu lệnh if

Trong bài học trước ( 4.6 – giá trị Boolean ), chúng ta đã viết chương trình này bằng cách sử dụng hàm trả về giá trị Boolean:

 #include <iostream> 
 
 // returns true if x and y are equal, false otherwise 
 bool   isEqual ( int   x ,   int   y ) 
 { 
     return   ( x   ==   y ) ;   // operator== returns true if x equals y, and false otherwise 
 } 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     std :: cout   <<   "Enter another integer: " ; 
     int   y   { } ; 
     std :: cin   >>   y ; 
 
     std :: cout   <<   std :: boolalpha ;   // print bools as true or false 
    
     std :: cout   <<   x   <<   " and "   <<   y   <<   " are equal? " ; 
     std :: cout   <<   isEqual ( x ,   y ) ;   // will return true or false 
 
     return   0 ; 
 } 

Hãy cải thiện chương trình này bằng cách sử dụng câu lệnh if :

 #include <iostream> 
 
 // returns true if x and y are equal, false otherwise 
 bool   isEqual ( int   x ,   int   y ) 
 { 
     return   ( x   ==   y ) ;   // operator== returns true if x equals y, and false otherwise 
 } 
 
 int   main ( ) 
 { 
     std :: cout   <<   "Enter an integer: " ; 
     int   x   { } ; 
     std :: cin   >>   x ; 
 
     std :: cout   <<   "Enter another integer: " ; 
     int   y   { } ; 
     std :: cin   >>   y ; 
 
     std :: cout   <<   std :: boolalpha ;   // print bools as true or false 
    
     if   ( isEqual ( x ,   y ) ) 
         std :: cout   <<   x   <<   " and "   <<   y   <<   " are equal\n" ; 
     else 
         std :: cout   <<   x   <<   " and "   <<   y   <<   " are not equal\n" ; 
 
     return   0 ; 
 } 

Hai lần chạy chương trình này:

Enter an integer: 5
Enter another integer: 5
5 and 5 are equal

Enter an integer: 6
Enter another integer: 4
6 and 4 are not equal

Trong trường hợp này, biểu thức điều kiện của chúng ta chỉ đơn giản là một hàm gọi hàm isEqual , trả về giá trị Boolean.

5. Điều kiện không phải kiểu Boolean

Trong tất cả các ví dụ trên, các điều kiện của chúng ta là các giá trị Boolean (đúng hoặc sai), biến Boolean hoặc các hàm trả về giá trị Boolean. Điều gì xảy ra nếu điều kiện của bạn là một biểu thức không đánh giá thành giá trị Boolean?

Trong trường hợp như vậy, biểu thức điều kiện được chuyển đổi thành giá trị Boolean: các giá trị khác không sẽ được chuyển đổi thành true và các giá trị zero sẽ được chuyển đổi thành false .

Do đó, nếu chúng ta làm một cái gì đó như thế này:

 #include <iostream> 
 
 int   main ( ) 
 { 
     if   ( 4 )   // nonsensical, but for the sake of example... 
         std :: cout   <<   "hi" ; 
     else 
         std :: cout   <<   "bye" ; 
 
     return   0 ; 
 } 

Điều này sẽ in ra hi, vì 4 là một giá trị khác không được chuyển đổi thành true , khiến cho câu lệnh được gắn vào if sẽ thực thi.

Chúng ta sẽ tiếp tục khám phá các câu lệnh if trong bài học tương lai.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!