Lệnh switch

Lệnh switch cũng giống như cấu trúc else if, nhưng nó mềm dẻo hơn và linh động hơn nhiều so với sử dụng if. Tuy nhiên, nó cũng có mặt hạn chế là kết quả của biểu thức phải là giá trị hằng nguyên (có giá trị cụ thể). Một bài toán sử dụng lệnh switch thì cũng có thể sử dụng if, nhưng ngược lại còn tùy thuộc vào giải thuật của bài toán.

Cấu trúc switch…case (switch thiếu)

Chọn thực hiện 1 trong n lệnh cho trước.

Cú pháp lệnh

switch (biểu thức)

{

case giá trị 1: lệnh 1;

break;

case giá trị 2: lệnh 2;

break;

...

case giá trị n: lệnh n;

[break;]

}

  • Từ khóa switch, case, break phải viết bằng chữ thường.
  • biểu thức phải là có kết quả là giá trị hằng nguyên (char, int, long, ...)
  • lệnh 1,2...n có thể gồm nhiều lệnh, nhưng không cần đặt trong cặp dấu {}

Lưu đồ

Hình 4.7. Lưu đồ cấu trúc switch

  • Khi giá trị của biểu thức bằng giá trị i thì lệnh i sẽ được thực hiện. Nếu sau lệnh i không có lệnh break thì sẽ tiếp tục thực hiện lệnh i + 1…Ngược lại thoát khỏi cấu trúc switch.

Ví dụ: Viết chương trình nhập vào số 1, 2, 3. In ra tương ứng 1, 2, 3 dấu *.

include <iostream>

using namespace std;

void main(void)

{

int number;

cout << "Nhap vao so 1, 2 hoac 3: ";

cin >> number;

switch (number)

{

case 3: cout << "*";

case 2: cout << "*";

case 1: cout << "*";

};

}

Chương trình

  • Kết quả in ra màn hình
Nhap vao so 1, 3 hoac 3: 2 Cho chạy lại chương trình và thử lại với các tía trị 1, 3, 0, 4
  • Nhận xét

Trong chương trình trên khi nhập vào number bằng 2 lệnh cout << “” ở case 2 được thực thi, nhưng do không có lệnh break; sau đó nên lệnh cout << “” ở case 1 tiếp tục được thực thi. Kết quả in ra **.

  • Lưu ý: Không đặt dấu chấm phẩy sau câu lệnh switch. Ví dụ: switch(i); Khi ấy trình biên dịch không báo lỗi nhưng các lệnh trong switch không được thực hiện.

Cấu trúc switch…case…default (switch đủ)

Chọn thực hiện 1 trong n + 1 lệnh cho trước.

Cú pháp lệnh:

switch (biểu thức)

{

case giá trị 1: lệnh 1;

break;

case giá trị 2: lệnh 2;

break;

case giá trị n: lệnh n;

break;

default : lệnh;

[break];

}

  • Từ khóa switch, case, break, default phải biết bằng chữ thường.
  • biểu thức phải có kết quả là giả trị nguyên (char, int, long …)
  • Lệnh 1,2…n có thể gồm nhiều lệnh, nhưng không cần đặt trong cặp dấu {}.

Lưu đồ:

Hình 4.8. Lưu đồ cấu trúc switch … case … default

  • Khi giá trị của biểu thức bằng giá trị i thì lệnh i sẽ được thực hiện. Nếu sau lệnh i không có lệnh break thì sẽ tiếp tục thực hiện lệnh i + 1…Ngược lại thoát khỏi cấu trúc switch. Nếu giá trị biểu thức không trùng với bất kỳ giá trị i nào thì lệnh tương ứng với từ khóa default sẽ được thực hiện.

Ví dụ: Viết chương trình với đề bài như ở câu lệnh switch thiếu. Sử dụng lệnh switch đầy đủ.

include <iostream>

using namespace std;

void main(void)

{

int number;

cout << "Nhap vao so 1, 2 hoac 3: ";

cin >> number;

switch (number)

{

case 3: cout << "*";

case 2: cout << "*";

case 1: cout << "*";

break;

default: cout << "Ban phai nhap vao so 1, 2 hoac 3!";

};

}

Kết quả in ra màn hình

Nhap vao so 1, 2 hoac 3: 3 Cho chạy lại chương trình và thử lại với:

Trong chương trình trên. Nếu bạn nhập vào 1, 2, 3 sẽ in ra số sao tương ứng. Ngoài các số này chương trình sẽ in ra câu thông báo "Bạn phải nhập vào số 1, 2 hoặc 3".

Cấu trúc switch lồng

Quyết định sẽ thực hiện 1 trong n khối lệnh cho trước.

Cú pháp lệnh:

Cú pháp là một trong 2 dạng trên, nhưng trong 1 hoặc nhiều lệnh bên trong phải chứa ít nhất một trong 2 dạng trên gọi là cấu rúc switch lồng nhau. Thường cấu trúc switch lồng nhau cnafg nhiều cấp độ phức tạp càng cao, chương trình chạy càng chập và trong lúc lập trình dễ bị nhầm lẫn.

Lưu đồ

Tương tự 2 dạng trên. Nhưng trong mỗi lệnh có thể có một (nhiều) cấu trúc switch ở 2 dạng trên.

Ví dụ: Viết chương trình menu 2 cấp.

Chương trình

/* Chuong trinh menu 2 cap */

include <iostream>

using namespace std;

void main(void)

{

int menu, isSubMenu;

cout << "-------------------------" << endl;

cout << " MAIN MENU " << endl;

cout << "-------------------------" << endl;

cout << "1. File" << endl;

cout << "2. Edit" << endl;

cout << "3. Search" << endl;

cout << "Chon muc tuong ung: ";

cin >> menu;

switch(menu)

{

case 1: cout << "-------------------------" << endl;

cout << " MENU FILE " << endl;

cout << "-------------------------" << endl;

cout << "1. New" << endl;

cout << "2. Open" << endl;

cout << "Chon muc tuong ung: ";

cin >> isSubMenu;

switch(isSubMenu)

{

case 1: cout << "Ban da chon chuc nang New File" << endl;

break;

case 2: cout << "Ban da chon chuc nang Open File" << endl;

}

break; //break cua case 1 – switch(menu)

case 2: cout << "Ban da chon chuc nang Edit" << endl;

break;

case 3: cout << "Ban da chon chuc nang Search" << endl;

};

}

  • Kết quả in ra màn hình

| -------------------------- | Quan sát kết quả. | | --- | --- |

results matching ""

    No results matching ""