Ở bài trước chúng ta đã tìm hiểu về nhập xuất trong C#. Bài này, chúng ta sẽ đi tìm hiểu về cấu trúc if else trong C#. Cấu trúc rẽ nhánh if else thường được dùng để kiểm tra một biểu thức hay dữ liệu đầu vào từ đó đưa chương trình sang các hướng cụ thể khác nhau. Chi tiết về cấu trúc rẽ nhánh chúng ta sẽ tìm hiểu ở phần sau.
Cấu trúc rẽ nhánh là gì?
Cấu trúc rẽ nhánh là cấu trúc sẽ kiểm tra tính đúng đắn của một biểu thức logic từ đó quyết định xem có thực hiện một đoạn code nào đó hay không. Thường các cấu trúc rẽ nhánh sẽ hoạt động như sau:
Khi điều kiện đúng thì sẽ thực hiện câu lệnh bên trong nó còn không thì sẽ bỏ qua các câu lệnh bên trong đó.
Cấu trúc if else trong C#
Chúng ta đã hiểu sơ sơ về cấu trúc rẽ nhánh trong một ngôn ngữ lập trình nào đó sau đây chúng ta sẽ tìm hiểu kĩ hơn về nó.
Để có thể sử dụng cấu trúc rẽ nhánh if else trong C# chúng ta sử dụng theo khuôn mẫu sau đây:
if (<biểu thức logic>) { <câu lệnh> ... } else { <câu lệnh> ... }
Ở khuôn mẫu trên <biểu thức logic>
sẽ là biểu thức mang giá trị true
hoặc false
nếu như biểu thức này đúng chương trình sẽ thực hiện các câu lệnh trong khối lệnh này và bỏ qua khối lệnh else
còn ngược lại, nếu biểu thức đó sai thì chương trình sẽ bỏ qua các câu lệnh trong khối lệnh đó và tiếp tục thực hiện các câu lệnh trong khối lệnh else
.
Nói như vậy thì có thể hơi khó hình dung, các bạn xét ví dụ sau đây:
using System; namespace luyencodec_ { class Program { static void Main(String[] args) { int a = 10; int b = 100; if (a < b) { Console.WriteLine("a nho hon b"); } else { Console.WriteLine("a khong nho hon b"); } Console.ReadKey(); // dừng màn hình } } }
Chương trình này cho ra kết quả:
a nho hon b
Trong chương trình mình đã khai báo 2 biến a = 10
và b = 100
và sau đó mình sử dụng cấu trúc rẽ nhánh if else để kiểm tra xem a có nhỏ hơn b hay không. Vì rõ ràng a nhỏ hơn b nên biểu thức a < b
sẽ đúng và thực hiện câu lệnh trong khối lệnh if
và bỏ qua luôn khối lệnh else
bên dưới. Giờ chúng ta thử thay đổi 2 giá trị a
và b
đi xem có gì thay đổi không nhé !
using System; namespace luyencodec_ { class Program { static void Main(String[] args) { int a = 50; int b = 40; if (a < b) { Console.WriteLine("a nho hon b"); } else { Console.WriteLine("a khong nho hon b"); } Console.ReadKey(); // dừng màn hình } } }
Chương trình này cho ra kết quả là:
a khong nho hon b
Lần này vì a = 50
và b = 40
rõ ràng là a đã lớn hơn b nên biểu thức a < b
sẽ sai và trả về giá trị là false
. Vì biểu thức lúc này là false
nên chương tình sẽ bỏ qua khối lệnh if và thực hiện luôn khối lệnh else
.
Nếu như bạn muốn kiểm tra chi tiết hơn trong trường hợp a == b
thì chương trình sau sẽ giải đáp thắc mắc của bạn:
using System; namespace luyencodec_ { class Program { static void Main(String[] args) { int a = 40; int b = 40; if (a < b) { Console.WriteLine("a nho hon b"); } else if (a == b) { Console.WriteLine("a bang b"); } else { Console.WriteLine("a khong nho hon b"); } Console.ReadKey(); // dừng màn hình } } }
Lúc này chương trình sẽ cho ra kết quả:
a bang b
Giải thích qua một chút, a = 40
và b = 40
rõ ràng là a = b, nên biểu thức a < b
sẽ sai và trả về giá trị là false
. Chương trình lúc này sẽ bỏ qua khối lệnh if
và thực hiện sang khối lệnh else
. Nhưng lần này trong khối lệnh else
tiếp theo lại xuất hiện thêm biểu thức if bên trong vì vậy chương trình sẽ lại kiểm tra biểu thức a == b
và biểu thức này đúng nên sẽ trả về giá trị là true
nên sẽ thực hiện câu lệnh bên trong và bỏ qua khối lệnh else
còn lại.
Toán tử 3 ngôi ?: trong C#
Giả sử giờ chúng ta muốn kiểm tra một điều kiện và trả về cái gì đó hoặc để gán cho cái gì đó thì việc phải thêm 1, 2 câu lệnh if else vào sẽ làm mất thời gian code cũng như là code của bạn trông sẽ dài hơn rất nhiều. Vậy nên C# đã tích hợp một toán tử 3 ngôi để hỗ trợ điều này. Cấu trúc của toán tử 3 ngôi ?:
như sau.
<biểu thức logic> ? <giá trị trả về nếu biểu thức đúng> : <giá trị trả về nếu biểu thức sai>;
Để dễ hiểu hơn ta xét một ví dụ đơn giản:
using System; namespace luyencodec_ { class Program { static void Main(String[] args) { int a = 10 < 40 ? 10 : 40; Console.WriteLine(a); Console.ReadKey(); // dừng màn hình } } }
Chương trình trên sử dụng toán tử 3 ngôi ?:
và kết quả cho ra:
10
Chúng ta thấy rõ ràng biểu thức logic trên 10 < 40
là hiển nhiên đúng nên nó lấy giá trị khi biểu thức đúng là 10
vì biểu thức này đúng nên không trả về giá trị là 40
. Chương trình in ra là 10
chứng tỏ rằng 10
đã được gán cho biến a
.
Tổng kết
Như vậy là thông qua bài viết này chúng ta đã hiểu được cấu trúc rẽ nhánh if else trong C#. Đây cũng là cấu trúc rẽ nhánh đầu tiên được giới thiệu của C#. Ở bài sau mình sẽ giới thiệu cho các bạn cấu trúc rẽ nhánh thứ 2 là cấu trúc switch case. Các bạn có thể làm bài tập cuối bài để hiểu hơn về cấu trúc này. Cảm ơn bạn đã theo dõi bài viết này. Hãy tiếp tục đồng hành cùng Lập trình không khó trong các bài viết tiếp theo nhé !
Để lại một bình luận