20 tháng 3, 2020

Cấu trúc rẽ nhánh Switch case trong C#

Trong bài trước, mình đã cùng các bạn tìm hiểu về cấu trúc rẽ nhánh if - else, đây là cấu trúc có trong hầu hết các ngôn ngữ lập trình. Trong bài viết này, mình sẽ giới thiệu một dạng khác của cấu trúc rẽ nhánh. 
Đặt vấn đề là khi có quá nhiều trường hợp xảy ra, nếu chúng ta dùng câu lệnh if sẽ rất rối rắm và dài dòng. Vì vậy các ngôn ngữ lập trình cấp cao đều cung cấp một dạng câu lệnh switch - case liệt kê các giá trị và thực hiện câu lệnh với mỗi giá trị tương ứng. 

Switch case trong C#

Cấu trúc switch case trong C#

1: Switch - case dạng thiếu

Cú pháp
switch (biểu thức)
{
case <giá trị thứ 1>: <câu lệnh thứ 1>;
                    break;
case <giá trị thứ 2>: <câu lệnh thứ 2>;
                    break;
..........
case <giá trị thứ n>: <câu lệnh thứ n>;
                    break;
}
- switch, case là từ khóa bắt buộc
- break là lệnh nhảy. Ngoài break thì còn lệnh nhảy khác như goto nhưng ít được sử dụng
- biểu thức phải trả về kết quả kiểu:
  • Số nguyên (int, long, byte,......)
  • Ký tự hoặc chuỗi (char, string)
  • Kiểu liệt kê
Ý nghĩa: Duyệt lần lượt từ trên xuống dưới và kiểm tra xem giá trị của biểu thức bằng với giá trị nào được liệt kê thì thực hiện câu lệnh tương ứng với giá trị đó.

Ví dụ: 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Nhap vao thang can kiem tra: ");
            int x = Convert.ToInt32(Console.ReadLine());
            switch (x)
            {
                case 1:
                case 2:
                case 3:
                    Console.WriteLine("Thang {0} la mua xuan", x);
                    break;
                case 4:
                case 5:
                case 6:
                    Console.WriteLine("Thang {0} la mua he", x);
                    break;
                case 7:
                case 8:
                case 9:
                    Console.WriteLine("Thang {0} la mua thu", x);
                    break;
                case 10:
                case 11:
                case 12:
                    Console.WriteLine("Thang {0} la mua dong", x);
                    break;
            }
            Console.ReadKey();
        }
    }
}

Kết quả: 

2: Switch - case dạng đủ 

Trong ví dụ trên, nếu người dùng nhập vào giá trị không phải số nguyên từ 1 đến 12 thì chương trình sẽ không chạy. Vậy chúng ta phải dùng đến dạng đủ của switch - case để dự phòng trường hợp biểu thức có giá trị không nằm trong các giá trị được liệt kê.

Cú pháp
switch (biểu thức)
{
case <giá trị thứ 1>: <câu lệnh thứ 1>;
                    break;
case <giá trị thứ 2>: <câu lệnh thứ 2>;
                    break;
.......................................
case <giá trị thứ n>: <câu lệnh thứ n>;
                    break;
default: <câu lệnh mặc định>;
                    break;
}

Ý nghĩa: Tương tự dạng thiếu, chỉ khác là nếu biểu thức không bằng bất cứ giá trị nào được liệt kê thì thực hiện câu lệnh mặc định

Sơ đồ minh họa 2 dạng switch - case

Ví dụ:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Nhap vao thang can kiem tra: ");
            float x = float.Parse(Console.ReadLine());
            switch (x)
            {
                case 1:
                case 2:
                case 3:
                    Console.WriteLine("Thang {0} la mua xuan", x);
                    break;
                case 4:
                case 5:
                case 6:
                    Console.WriteLine("Thang {0} la mua he", x);
                    break;
                case 7:
                case 8:
                case 9:
                    Console.WriteLine("Thang {0} la mua thu", x);
                    break;
                case 10:
                case 11:
                case 12:
                    Console.WriteLine("Thang {0} la mua dong", x);
                    break;
                default:
                    Console.WriteLine("Ban nhap khong hop le");
                    break;
            }
            Console.ReadKey();
        }
    }
}

Kết quả sẽ khác với ví dụ trước, nếu bạn nhập không phải là số nguyên từ 1 đến 12 thì chương trình sẽ thông báo là "Ban nhap khong hop le"

SHARE THIS

Blogger Nguyễn Dương

Có một câu nói mà mình rất thích đó là "Thật sai lầm khi nghĩ rằng một khi rời khỏi trường học, bạn không cần học thêm điều mới nữa". Chính vì thế mà hãy luôn luôn học hỏi, con người chỉ ngừng phát triển khi ngừng học hỏi. Nếu như bạn chưa hiểu nội dung bài viết hoặc đang khúc mắc khi thao tác thì hãy bình luận phía dưới bài viết để mọi người cùng thảo luận nhé!