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
Nội dung chính
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.