uocmo_kchodoi

Moderator
ĐIỀU KHIỂN LUÔNG TRONG C#

Dưới đây là mẫu chung của một cấu trúc điều khiển luồng hay gặp trong ngôn ngữ lập trình.

decision_making.jpg

C# cung cấp các loại lệnh điều khiển luồng sau.

1. LỆNH IF

Một lệnh if trong C# chứa một biểu thức logic được theo sau bởi một hoặc nhiều lệnh.

Cú pháp

if(biểu_thức)
{
/* các lệnh được thực thi nếu biểu_thức là true */
}


Nếu biểu thức logic được ước lượng là true, thì sau đó khối code bên trong lệnh if sẽ được thực thi. Nếu biểu thức logic được ước lượng là false, thì khi đó, lệnh ngay sau lệnh if sẽ được thực thi.

Sơ đồ
if_statement.jpg
Ví dụ

using System;

namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Lenh if trong C#");
Console.WriteLine("-------------------------------");

/* phan dinh nghia bien cuc bo */
int a = 10;
/* kiem tra dieu kien cua bieu thuc trong lenh if*/
if (a < 20)
{
/* neu dieu kien la true thi se in ra dong sau: */
Console.WriteLine("a nho hon 20");
}
Console.WriteLine("Gia tri cua a la: {0}", a);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

lenh-if.PNG


2. LỆNH IF...ELSE

Một lệnh if có thể theo sau bởi một lệnh else (tùy ý: có hoặc không), mà có thể được thực hiện khi biểu thức logic có giá trị false.

Cú pháp

if(biểu_thức)
{
/* các lệnh được thực thi nếu biểu thức là true */
}
else
{
/* các lệnh được thực thi nếu biểu thức là 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.

Sơ đồ
if_else_statement.jpg
Ví dụ

using System;

namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Lenh if...else trong C#");
Console.WriteLine("-------------------------------");

/* phan dinh nghia bien cuc bo */
int a = 100;

/* kiem tra dieu kien */
if (a > 20)
{
/* neu dieu kien la true thi in dong sau: */
Console.WriteLine("a nho hon 20");
}
else
{
/* neu dieu kien la false thi in dong sau: */
Console.WriteLine("a khong nho hon 20");
}
Console.WriteLine("Gia tri cua a la: {0}", a);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

lenh-if-else.PNG


3. LỆNH IF...ELSE IF....ELSE....

Một lệnh if có thể được theo sau bởi một lệnh else if…else tùy ý, mà rất có ích để kiểm tra các điều kiện đa dạng.

Khi sử dụng lệnh if, else if, else, có một số điểm chính cần ghi nhớ:
  • Một lệnh if có 0 hoặc một lệnh else và chúng phải theo sau bởi bất kỳ lệnh else if nào.

  • Một lệnh if có 0 tới nhiều lệnh else if và chúng phải ở trước lệnh else.

  • Một khi lệnh else if thực hiện, nó sẽ không kiểm tra lại bất kỳ lệnh else if hoặc lệnh else còn lại khác.
Cú pháp

Cú pháp của một lệnh if...else if...else trong C# là:

if(biểu_thức 1)
{
/* các lệnh được thực thi nếu biểu thức 1 là true */
}
else if( biểu_thức 2)
{
/* các lệnh được thực thi nếu biểu thức 2 là true */
}
else if( biểu_thức 3)
{
/* các lệnh được thực thi nếu biểu thức 3 là true */
}
else
{
/* các lệnh được thực thi nếu không có biểu thức nào là true */
}

Ví dụ

using System;
namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Lenh if...else trong C#");
Console.WriteLine("-------------------------------");

/* phan dinh nghia bien cuc bo */
int a = 100;

/* kiem tra dieu kien */
if (a == 10)
{
/* neu dieu kien la true thi in dong sau: */
Console.WriteLine("Gia tri cua a la 10");
}

else if (a == 20)
{
/* neu dieu kien cua else if nay la true */
Console.WriteLine("Gia tri cua a la 20");
}

else if (a == 30)
{
/* neu dieu kien cua else if nay la true */
Console.WriteLine("Gia tri cua a la 30");
}

else
{
/* neu khong co dieu kien nao o tren la true */
Console.WriteLine("Khong co dieu kien nao o tren la true");
}
Console.WriteLine("Gia tri chinh xac cua a la: {0}", a);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

lenh-if-else-1.PNG


4. LỒNG CÁC LỆNH IF: Bạn có thể sử dụng lệnh if hoặc lệnh else if bên trong lệnhif hoặc else if khác

Nó là hợp lệ để lồng các lệnh if-else trong C#, nghĩa là bạn có thể sử dụng một lệnh if hoặc else bên trong lệnh if hoặc else khác.

Cú pháp

Cú pháp để lồng các lệnh if trong C# là như sau:

if( biểu_thức 1)
{
/* các lệnh được thực thi nếu biểu thức 1 là true */
if(biểu_thức 2)
{
/* các lệnh được thực thi nếu biểu thức 2 là true */
}
}

Bạn có thể lồng else if…else theo cách tương tự như bạn đã lồng lệnh if.

Ví dụ

using System;
namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Long cac lenh if trong C#");
Console.WriteLine("-------------------------------");

//* phan dinh nghia bien cuc bo */
int a = 100;
int b = 200;

/* kiem tra dieu kien */
if (a == 100)
{
/* neu dieu kien la true, tiep tuc kiem tra: */
if (b == 200)
{
/* neu dieu kien la true thi in dong sau: */
Console.WriteLine("Gia tri cua a la 100 va b la 200");
}
}
Console.WriteLine("Gia tri chinh xac cua a la: {0}", a);
Console.WriteLine("Gia tri chinh xac cua b la : {0}", b);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

long-cac-lenh-if.PNG


5. LỆNH SWITCH: Lệnh switch cho phép kiểm tra điều kiện của một biến trước khi thực thi các lệnh

Một lệnh switch trong C# cho một biến được kiểm tra một cách bình đẳng trong danh sách các giá trị. Mỗi giá trị được gọi là một case - trường hợp và biến được chuyển tới được kiểm tra cho mỗi trường hợp switch.

Cú pháp

switch(biểu_thức) {
case biểu_thức_hằng :
các lệnh cần thực thi;
break; /* tùy ý */
case biểu_thức_hằng :
các lệnh cần thực thi;
break; /* tùy ý */

/* số lượng lệnh case là tùy theo bạn */
default : /* tùy ý */
các lệnh cần thực thi;
}

Các quy tắc sau được áp dụng tới một lệnh switch:
  • Biểu thức biểu_thức được sử dụng trong một lệnh switch phải có kiểu là integer hoặc liệt kê, hoặc là một trong các kiểu lớp trong đó lớp có một hàm biến đổi đơn tới một kiểu integer hoặc kiểu liệt kê.

  • Bạn có thể có bất kỳ số lệnh case nào trong một switch. Mỗi case được theo sau bởi giá trị để được so sánh và một dấu hai chấm.

  • biểu_thức_hằng cho một case phải cùng kiểu dữ liệu với biến trong switch, và nó phải là hằng số.

  • Khi biến được chuyển tới là cân bằng với một case, lệnh theo sau case đó sẽ thực thi tới khi gặp lệnh break.

  • Khi gặp lệnh break, switch kết thúc, và dòng điều khiển nhảy tới dòng lệnh tiếp theo của lệnh switch đó.

  • Không phải mỗi case cần chứa một lệnh break. Nếu không có lệnh break nào xuất hiện, dòng điều khiển sẽ không tới được case tiếp theo cho tới khi bắt gặp một lệnh break.

  • Một lệnh switch có thể có một case mặc định tùy chọn, mà phải xuất hiện ở cuối cùng của switch. Case mặc định này có thể được sử dụng để thực hiện một nhiệm vụ khi không có case nào true. Trong trường hợp case mặc định này thì không cần lệnh break.
Sơ đồ
switch_statement.jpg
Ví dụ
using System;
namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Lenh switch trong C#");
Console.WriteLine("-------------------------------");

/* phan dinh nghia bien cuc bo */
char grade = 'B';

switch (grade)
{
case 'A':
Console.WriteLine("Xuat sac!");
break;
case 'B':
case 'C':
Console.WriteLine("Gioi");
break;
case 'D':
Console.WriteLine("Trung binh");
break;
case 'F':
Console.WriteLine("Hoc lai");
break;
default:
Console.WriteLine("Gia tri khong hop le");
break;
}
Console.WriteLine("Hoc luc cua ban la: {0}", grade);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

lenh-switch.PNG


6. LỒNG CÁC LỆNH SWITCH: Bạn có thể sử dụng một lệnh switch bên trong một lệnhswitch khác

Nó là có thể để có một lệnh switch như là một phần của dãy lệnh trong một lệnh switch ở vòng ngoài. Ngay cả khi hằng số case trong và ngoài lệnh switch chứa các giá trị bình thường, sẽ không có sự xung đột diễn ra ở đây.

Cú pháp

switch(biểu_thức)
{
case 'A':
printf("A này là của lệnh switch bên ngoài!" );
switch(biểu_thức)
{
case 'A':
printf("A này là của lệnh switch bên trong!" );
break;
case 'B': /* B của lệnh switch bên trong */
}
break;
case 'B': /* của lệnh switch bên ngoài */
}

Ví dụ

using System;
namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Long cac lenh switch trong C#");
Console.WriteLine("-------------------------------");

int a = 100;
int b = 200;

switch (a)
{
case 100:
Console.WriteLine("Dong nay thuoc lenh switch ben ngoai!");
switch (b)
{
case 200:
Console.WriteLine("Dong nay thuoc lenh switch ben trong!");
break;
}
break;
}
Console.WriteLine("Gia tri chinh xac cua a la: {0}", a);
Console.WriteLine("Gia tri chinh xac cua b la: {0}", b);
Console.ReadLine();

Console.ReadKey();
}
}
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

long-cac-lenh-switch.PNG


7. TOÁN TỬ ? :

Toán tử điều kiện ? : có thể được dùng để thay thế cho lệnh if...else. Nó có mẫu chung như sau:

Exp1 ? Exp2 : Exp3;

Trong đó Exp1, Exp2 và Exp3 là các biểu thức. Chú ý việc sử dụng và đặt của dấu hai chấm.

Giá trị của biểu thức Exp1 trước dấu ? có giá trị true, Exp2 được thực hiện, và giá trị của nó là giá trị của biểu thức. Nếu Exp1 là false thì Exp3 được thực hiện và giá trị của nó là giá trị của biểu thức.

Trên đây là bài viết về các cách để người lập trình có thể sử dụng trong việc điều khiển luồng trong các bài toán của C#. Hi vọng bài viết sẽ giúp ích được cho các bạn.

Nguồn: Vietjack.com
 

Chủ đề mới

VnKienthuc lúc này

Không có thành viên trực tuyến.

Định hướng

Diễn đàn VnKienthuc.com là nơi thảo luận và chia sẻ về mọi kiến thức hữu ích trong học tập và cuộc sống, khởi nghiệp, kinh doanh,...
Top