Bài 3: Các cấu trúc điều khiển cơ bản trong C# - Nền tảng lập trình C#


Cấu trúc điều khiển (Control Structure) là một trong các đặc trưng cơ bản của phương pháp lập trình cấu trúc. Trong đó, người ta sử dụng 3 cấu trúc điều khiển để tạo nên logic của chương trình.


Tổng quan về cấu trúc điều khiển

  • Một chương trình không chỉ bao gồm các lệnh tuần tự nối tiếp nhau. Trong quá trình chạy nó có thể rẽ nhánh hay lặp lại một đoạn mã nào đó. Để làm điều này chúng ta sử dụng các cấu trúc điều khiển.
  • Cùng với việc giới thiệu các cấu trúc điều khiển chúng ta cũng sẽ phải biết tới một khái niệm mới: khối lệnh, đó là một nhóm các lệnh được ngăn cách bởi dấu chấm phẩy (;) nhưng được gộp trong một khối giới hạn bởi một cặp ngoặc nhọn: { và }.
  • Nếu khối lệnh chỉ có 1 lệnh thì không cần sử dụng 3 cặp dấu ngoặc nhọn { và }

Trong C# có 3 loại cấu trúc cơ bản:

  • Cấu trúc tuần tự
  • Cấu trúc quyết định chọn lựa rẽ nhánh
  • Cấu trúc lặp

Các cấu trúc điều khiển

  • Cấu trúc rẽ nhánh
  • Toán tử điều kiện ?
  • Cấu trúc lựa chọn switch
  • Cấu trúc lặp while, do, for, foreach

Cấu trúc rẽ nhánh - IF

Cú pháp

if (<Điều kiện>)
{
   <Khối lệnh A>
}

Ý nghĩa: Nếu <Điều kiện> Đúng Thì Thực hiện <Khối lệnh A>

<Điều kiện>: là 1 biểu thức logic, trả về true (Đúng) hoặc false (Sai)

Sơ đồ hoạt động:

Cấu trúc rẽ nhánh if

Ví dụ: Kiểm tra điểm trung bình để xét kết quả đậu hay rớt. Nếu điểm trung bình >=5 thì kết quả là đạt

Console.Write("Nhập vào điểm trung bình: ");
float dtb = (float)Console.Read();
if (dtb >= 5)
   Console.WriteLine("Kết quả đạt");

Dạng 2: if else … else …

  • Đặt vấn đề: Trường Y có nhu cầu xét kết quả học tập của học sinh dựa vào điểm trung bình để quyết định xem học sinh đó có được lên lớp hay không. Có 2 trường hợp có thể xảy ra:
    • Trường hợp 1: được lê l n lớp (điểm t bì h 5 0) rung bình >= 5.0)
    • Trường hợp 2: không được lên lớp (điểm trung bình <= 5.0)
  • 2 trường hợp của bài toán trên loại trừ nhau, để giải quyết bài toán này chúng ta dùng cấu trúc if … else …

Cú pháp

if (<Điều kiện>)
{
   <Khối lệnh A>
}
else // khi điều kiện của if là false
{
   <Khối lệnh B>
}

Ý nghĩa Nếu <Điều kiện> Đúng Thì Thực hiện <Khối lệnh A> Ngược lại, <Điều kiện> Sai Thực hiện <Khối lệnh B>

Sơ đồ hoạt động

Cấu trúc rẽ nhánh if else

Ví dụ 1: Xét kết quả học tập dựa vào điểm trung bình Nếu DTB <5 thì Kết quả là Ở lại lớp Ngược lại là Được lên lớp

if (dtb >= 5)
  Console.Write("Được lên lớp");
else
  Console.Write("Ở lại lớp");

Ví dụ 2: Xét kết quả học tập dựa vào điểm trung bình Nếu DTB <5 thì Kết quả là Ở lại lớp và phải thi lại Ngược lại là Được lên lớp và không phải thi lại

double dtb = double.Parse(Console.ReadLine());
if (dtb >= 5)
{
   Console.Write("Kết quả đạt");
   Console.Write("Bạn không phải thi lại");
}
else
{
   Console.Write("Kết quả không đạt");
   Console.Write("Bạn vui lòng thi lại");
}

Toán tử điều kiện - ?

  • Toán tử ? hoạt động tương tự như dạng 2 của cú pháp IF
  • Cú pháp
    • Biến_kết_quả = <Điều kiện> ? <biểu_thức_1> : <biểu_thức_2>
  • Ý nghĩa
    • Nếu <Điều kiện> Đúng
      • Thì Trả về <Biểu_thức_1>
    • Ngược lại
      • Trả về <Biểu thức 2>
  • <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false

Ví dụ: Xét kết quả học tập dựa vào điểm trung bình: Nếu DTB <5 thì Kết quả là Ở lại lớp. Ngược lại là Được lên lớp

double dtb = double.Parse(Console.ReadLine());
string ket_qua = (dtb > 5) = 5) ? "Được lê l n lớp" : "Ở lại lớp";
Console.WriteLine("Kết quả: {0}", ket_qua);

Cấu trúc lựa chọn – switch

  • Với cấu trúc IF, khi có nhiều trường hợp cần xét, ta sẽ dùng toán tử || để nối các điều kiện phức tạp khi có quá nhiều điều kiện
  • Do đó có thể sử dụng cấu trúc chọn switch để thay thế cho cấu trúc IF trong trường hợp này
switch (<biểu thức chọn lựa>)
{
   case <giá trị 1>:
      <Tập lệnh 1>
      break;
   case <giá trị 2>:
      <Tập lệnh 2>
      break;
   …
   default: // các lệnh thực thi khi <biểu thức> không bằng bất kỳ <giá trị> nào của case
      <Tập lệnh n>
      break;
}

Ý nghĩa

  • case: Liệt kê các trường hợp cần xét
  • Giá trị i: chứa các giá trị cần so sánh với <biểu thức>
  • Tập lệnh x: được thực hiện khi biểu thức chọn lựa = một trong số các giá trị của <Tập giá trị i>

Ví dụ: nhập vào thứ, cho biết tên thứ trong tuần

int thu = Int.Parse(Console.ReadLine());
switch (thu)
{
   case 2:
      Console.WriteLine(“Thứ Hai”);
      break;
   ...
   case 8:
      Console.WriteLine(“Chủ Nhật”);
      break;
   default:
      Console.WriteLine(“Thứ nhập vào không hợp lệ”);
      break;
}

Chú ý: Nếu như các trường hợp cần xét có cùng một tập giá trị thì lần lượt liệt kê các trường hợp, sau đó mới viết tập giá trị

int thang = int.Parse(Console.ReadLine());
int nam = int.Parse(Console.ReadLine());
switch(thang)
{
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
      Console.WriteLine(“Tháng {0} năm {1} có 31 ngày”, thang, nam);
      break;
}

 

Chia sẽ bài viết :