Trình Bày Cấu Trúc Rẽ Nhánh Switch / 2023 / Top 19 # Xem Nhiều Nhất & Mới Nhất 11/2022 # Top View | Nhatngukohi.edu.vn

Cấu Trúc Rẽ Nhánh Switch / 2023

1. Mô tả cấu trúc rẽ nhánh switch – case.

Cấu trúc rẽ nhánh switch – case cho phép bạn lựa chọn một trong nhiều phương án có khả năng xảy ra, nó có thể dùng dể thay thế cho cấu trúc điều khiển if - else if - else mà tôi đã trình bày trong bài cấu trúc điều khiển if – else trong Java.

Vậy khi nào chúng ta nên sử dụng cấu trúc rẽ nhánh switch – case thay thế cho cấu trúc điều khiển if - else if - else? Khi mà chúng ta có số trường hợp cần xử lý lớn hơn 3 thì khi đó chúng ta nên sử dụng switch - case để dễ dàng kiểm tra và xử lý, giúp cho chương trình dễ quan sát hơn.

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 0;] }

trong đó:

Biểu_thức phải trả về kết quả là một số nguyên, chuỗi hoặc một ký tự.

Giá_trị_1, giá_trị_2,..., giá_trị_n là các biểu thức hằng, nguyên hoặc ký tự và chúng phải khác nhau.

Lệnh 1, Lệnh 2, ..., Lệnh n, Lệnh 0 là các lệnh trong thân của switch. Các bạn thấy sau mỗi lệnh này chúng ta có từ khóa break;, từ khóa này có thể có hoặc không có tùy theo từng trường hợp.

Cách thức hoạt động của switch – case như sau:

Đầu tiên, chương trình sẽ so sánh giá trị của biểu_thức với các giá trị từ giá_trị_1, giá_trị_2,..., giá_trị_n. Nếu trong các giá trị từ giá_trị_1, giá_trị_2,..., giá_trị_n có giá trị nào bằng với giá trị của biểu_thức thì chương trình sẽ bắt đầu thực hiện các lệnh tương ứng nằm trong case của giá trị đó cho đến khi gặp một lệnh break đầu tiên thì thoát ngay khỏi switch, bỏ qua các case (trường hợp) còn lại và thực hiện lệnh đầu tiên nằm ngay sau cấu trúc này. Nếu giá trị của biểu_thức không bằng với bất kỳ giá trị nào trong danh sách giá_trị_1, giá_trị_2 ... giá_trị_n thì Lệnh 0 sẽ được thực hiện nếu có thành phần default.

Lưu đồ hoạt động:

Dạng 1 là cấu trúc switch có sử dụng từ khóa default, còn dạng 2 là cấu trúc switch không sử dụng từ khóa default.

Lưu ý:

Lệnh break là để nhảy ra khỏi lệnh switch, nếu không có lệnh này cấu trúc switch sẽ duyệt cả các trường hợp phía dưới cho đến khi gặp dấu đóng switch (dấu }) (vì chưa gặp break coi như chưa ra khỏi lệnh switch).

Khi sử dụng lệnh switch có thể xảy ra nhiều giá trị trả về cho một trường hợp (một khả năng xảy ra của biểu thức).

2. Ví dụ switch đơn giản.

Chúng ta có ví dụ sau: Nhập vào một số nguyên từ 1 – 12 từ bàn phím và hiển thị ra tháng tương ứng với số đó ( nhập vào số 1 thì sẽ hiển thị ra là “Tháng 1”.

package cau_truc_switch_case; import java.util.Scanner; public class HienThiThangTuongUng { public static void main(String[] args) { int thang; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào 1 số nguyên (từ 1 đến 12): "); thang = scanner.nextInt(); switch (thang) { case 1: System.out.println("Tháng 1"); break; case 2: System.out.println("Tháng 2"); break; case 3: System.out.println("Tháng 3"); break; case 4: System.out.println("Tháng 4"); break; case 5: System.out.println("Tháng 5"); break; case 6: System.out.println("Tháng 6"); break; case 7: System.out.println("Tháng 7"); break; case 8: System.out.println("Tháng 8"); break; case 9: System.out.println("Tháng 9"); break; case 10: System.out.println("Tháng 10"); break; case 11: System.out.println("Tháng 11"); break; case 12: System.out.println("Tháng 12"); break; default: System.out.println("Số nhập vào phải nằm trong khoảng từ 1 đến 12."); } } }

Kết quả sau khi biên dịch chương trình:

Nếu bạn nhập vào tháng 14 thì chương trình sẽ hiển thị kết quả như sau:

Giải thích hoạt động của chương trình trên:

Khi chương trình được thực thi, tôi nhập vào số 4 thì chương trình sẽ nhận thấy số 4 đó ứng với giá trị tại chỉ thị case 4 nên chương trình sẽ chạy tới case 4, sau đó thực hiện lệnh bên trong case này – đó là hiển thị ra màn hình dòng thông báo “Tháng 4“.

Giả sử sau đó tôi nhập vào số 14 thì chương trình sẽ nhận thấy nó khác với các giá trị từ 1 đến 12, không ứng với bất kỳ giá trị tại chỉ thị case nào nên trường hợp mặc định (ứng với nhãn default) được làm. Vì vậy, dòng thông báo “Số nhập vào phải nằm trong khoảng từ 1 đến 12” sẽ được hiển thị.

Giả sử tôi sửa đoạn chương trình trên thành như sau:

package cau_truc_switch_case; import java.util.Scanner; public class HienThiThangTuongUng { public static void main(String[] args) { int thang; String thangTuongUng = ""; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào 1 số nguyên (từ 1 đến 12): "); thang = scanner.nextInt(); switch (thang) { case 1: thangTuongUng = "Tháng 1"; case 2: thangTuongUng = "Tháng 2"; case 3: thangTuongUng = "Tháng 3"; case 4: thangTuongUng = "Tháng 4"; case 5: thangTuongUng = "Tháng 5"; case 6: thangTuongUng = "Tháng 6"; case 7: thangTuongUng = "Tháng 7"; case 8: thangTuongUng = "Tháng 8"; break; case 9: thangTuongUng = "Tháng 9"; break; case 10: thangTuongUng = "Tháng 10"; break; case 11: thangTuongUng = "Tháng 11"; break; case 12: thangTuongUng = "Tháng 12"; break; default: System.out.println("Số nhập vào phải nằm trong khoảng từ 1 đến 12."); } System.out.println(thangTuongUng); } }

Sau khi biên dịch thì chương trình sẽ hiển thị kết quả như sau:

Các bạn thấy tôi nhập vào số 1 nhưng kết quả hiển thị ra là tháng 8. Các bạn biết vì sao không? Như tôi đã nói ở trên, ” Lệnh break là để nhảy ra khỏi lệnh switch, nếu không có lệnh này cấu trúc switch sẽ duyệt cả các trường hợp phía dưới cho đến khi gặp dấu đóng switch (dấu })“, vì vậy khi bạn nhập vào số 1 thì chương trình sẽ lần lượt gán các giá trị tháng tương ứng cho chuỗi thangTuongUng và khi chạy đến case 8 thì lúc này chuỗi thangTuongUng sẽ có giá trị là ” Tháng 8” và sau đó gặp lệnh break nên sẽ kết thúc lệnh switch này và hiển thị giá trị ” Tháng 8” ra màn hình.

3. Ví dụ switch có nhiều giá trị trả về cho một trường hợp.

Các bạn theo dõi ví dụ sau: Viết chương trình nhập vào 1 số nguyên, nếu:

Số nhập vào là 0 thì thông báo “Số 0“.

Số nhập vào là 1, 2 thì thông báo “Số nhỏ“.

Số nhập vào là 3, 4, 5 thì thông báo “Số trung bình“.

Số nhập vào lớn hơn 5 thì thông báo “Số lớn“.

Chúng ta sẽ làm ví dụ này như sau:

package cau_truc_switch_case; import java.util.Scanner; public class HienThiChuoiSoTuongUng { public static void main(String[] args) { int number; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào 1 số bất kỳ: "); number = scanner.nextInt(); switch (number) { case 0: System.out.println("Số 0"); break; case 1: case 2: System.out.println("Số nhỏ"); break; case 3: case 4: case 5: System.out.println("Số trung bình"); break; default: System.out.println("Số lớn"); } } }

Kết quả sau khi biên dịch chương trình:

Các bạn thấy trong đề bài trên chúng ta có 3 trường hợp số 3, 4, 5 cùng có kết quả chung là ” Số trung bình“, vì vậy 3 trường hợp này chỉ dùng chung một chỉ thị break. Chẳng hạn khi số nhập vào là 3: chương trình chạy tới case 3, sau đó chạy tiếp và hiển thị dòng thông báo ” Số trung bình” ra màn hình và chỉ nhảy khỏi cấu trúc switch khi gặp chỉ thị break ở dòng 26.

4. Lời kết.

Cấu Trúc Rẽ Nhánh Switch … Case Trong Javascript / 2023

Chúng ta có thể sử dụng nhiều lệnh chúng tôi như trong chương trước để thực hiện một nhánh nhiều lựa chọn. Tuy nhiên, nó luôn luôn không phải là giải pháp tốt nhât, đặc biệt khi tất các các nhánh phụ thuộc vào giá trị của một biến đơn.

Bắt đầu với JavaScript, bạn có thể sử dụng một lệnh switch để xử lý chính xác tình huống này, và nó thực sự hiệu quả hơn so với việc lặp đi lặp lại các lệnh chúng tôi if.

Sơ đồ sau giải thích lệnh switch-case làm việc:

1. Lệnh switch case trong Javascript

Lênh switch case có công dụng giống như lệnh if else đó là đều dùng để rẻ nhánh chương trình, ứng với mỗi nhánh sẽ có một điều kiện cụ thể và điều kiện đó phải sử dụng toán tử so sánh bằng, còn đối với lệnh if else thì bạn có thể truyền vào một mệnh đề bất kì và Sử dụng nhiều toán tử khác nhau.

Cú pháp :

switch (variable) { case value_1 : {

Nếu như trong tất cả các case không có case nào phù hợp thì nó sẽ chạy lệnh ở default, ngược lại nếu có case nào phù hợp thì chương trình sẽ chạy trong case đó, đồng thời lệnh break sẽ giúp chương trình thoát khỏi lệnh switch, còn nếu bạn không thêm lệnh break thì chương trình sẽ tiếp tục kiểm tra và chạy tiếp ở case tiếp theo.

Quy trình chạy như sau:

Nếu tham số variable có giá trị là value_1 thì những đoạn code nằm bên trong case 1 sẽ được thực hiện, ngược lại nó sẽ nhảy xuống case tiếp theo.

Lúc này nếu variable có giá trị là value_2 thì những đoạn code trong case 2 sẽ được thực hiện, ngược lại nó kiểm tra tiếp xem còn case nào không.

Nhận thấy không còn case nào nữa nên nó sẽ kiểm tra có lệnh default không? Vì có lệnh default nên nó sẽ chạy đoạn code trong lệnh default đó rồi thoát khỏi switch case.

Ví Dụ: Viết chương trình cho người dùng nhập vào một số, kiểm tra số đó là số chẵn hay số lẻ.

Với bài toán này thì mình kết hợp lệnh prompt() để lấy thông tin từ người dùng, đồng thời kết hợp lệnh switch case để hiển thị kết quả. Có một lưu ý bạn nên sử dụng hàm parseInt() để chuyển dữ liệu người dùng nhập sang number.

Chương trình sử dụng lệnh switch

Với ví dụ này thì bạn hoàn toàn có thể sử dụng lệnh if else để thực hiện.

Chương trình sử dụng lệnh if else

var number = parseInt(prompt("Nhập số cần kiểm tra")); var mod = (number % 2); if (mod == 0){ document.write(number + " là số chẵn"); } else if (mod == 1){ document.write(number + " là số lẽ"); } else{ document.write("Ký tự bạn nhập không phải số"); }

Ví dụ: Viết chương trình cho người dùng nhập một màu, kiểm tra màu đó có phải màu đỏ (red) hay màu vàng (yellow) hay không? Nếu không phải thì thông báo cho người dùng biết nhập sai màu.

Chúng ta sẽ giải bài này bằng nhiều cách khác nhau và mỗi cách bạn sẽ học được một kinh nghiệm xử lý lệnh switch case.

Trường hợp không có default

Trường hợp này nếu bạn nhập một màu khác với màu đỏ (red) và vàng (yellow) thì sẽ không có thông báo gì.

Trường hợp không có break

Trường hợp này nếu bạn nhập vào màu đỏ (red) thì chương trình sẽ in ra cả lệnh ở case màu vàng (yellow) phía dưới, lý do là trong case màu đỏ ta không sử dụng lệnh break để thoát khỏi lệnh switch nên nó sẽ chạy thẳng xuống case phía dưới luôn mà không cần kiểm tra điều kiện.

var color = prompt("Nhập màu cần kiểm tra"); switch (color){ case 'red' : document.write("Bạn nhập màu đỏ, đúng rồi đó"); case 'yellow' : document.write("Bạn nhập màu vàng, đúng rồi đó"); break; default : document.write("Màu bạn nhập không có trong hệ thống"); }

Giả sử bạn thêm một case nữa cho màu xanh (blue), lúc nếu bạn nhập vào màu đỏ (red) thì kết quả chỉ in thêm lệnh màu vàng (yellow) thôi. Từ đó suy ra rằng nếu không có break thì nó chỉ chạy luôn case đầu tiên phía dưới nó. Ví dụ :

Trường hợp gôm nhóm case

Nếu bạn để ý kỹ hơn thì thì thấy rằng nếu người dùng nhập vào màu đỏ (red), vàng (yellow) và xanh (blue) thì đều có thông báo nhập đúng. Vậy tai sao mình không gôm ba trường hợp đó thành một thôi. Ví dụ :

Từ ba trường hợp trên ta suy ra được kết luận như sau:

Để xử lý cho một trường hợp ngoại lệ nào đó thì ta sử dụng lệnh default.

Nếu nhiều nhánh cùng xử lý chung một đoạn code thì ta sẽ bỏ đi lệnh break ở bên trong, như vậy nó sẽ chạy luôn case ở phía dưới mà không cần kiểm tra điều kiện.

All Rights Reserved

Bài 9. Cấu Trúc Rẽ Nhánh / 2023

Ngày soạn 16/10/2020Tiết: 12 TÊN BÀI: Cấu trúc rẽ nhánhI-MỤC TIÊU CỦA BÀI DẠY 1. Kiến thức.-Nắm được khái niệm rẽ nhánh dạng thiếu và đủ-Nắm được câu lệnh If – then dạng thiếu và đủ -Nắm được cú pháp câu lệnh ghép2. Kỹ năng.-Mô phỏng được lược đồ rẽ nhánh dạng thiếu và đủ3. Thái độ: Nghiêm túc trong học tập để biết cách sử dụng câu lệnh If- then, câu lệnh ghép4. Đinh hướng phát triển năng lực : Năng lực tự học, năng lực hợp tác, năng lực giao tiếp, năng lực quan sát, năng lực phát hiện và giải quyết vấn đề, năng lực tính toán, năng lực vận dụng kiến thức vào cuộc sống II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH1-Giáo viên: SGK, SGV, giáo án,2-Học sinh:SGK, vở ghi.III. PHƯƠNG PHÁP, KỸ THUẬT DẠY HỌC1-Phương pháp: Thuyết trình, vấn đáp2- Kỹ thuật dạy học XYZ, ổ bi, bể cáIV.TIẾN TRÌNH BÀI DẠY ( TỔ CHỨC CÁC HOẠT ĐỘNG ) *Ổn định lớp: Kiểm tra sĩ số, nội vụ lớp họcLớp11A611A7

Ngày giảng:

A. Hoạt động khởi động1- Kiểm tra bài cũ: Không kiểm tra bài cũ mà kết hợp trong bài mới2-Tạo tình huống ( vào bài mới )Hôm nay chúng ta học sang chương mới, Chương III Cấu trúc rẽ nhánh và lặp. Bài hôm nay là bài 9. Cấu trúc rẽ nhánhB.Hoạt động hình thành kiến thức

MỤC TIÊU( Hoặc ghi cả Nội dung là do từng GV)HOẠT ĐỘNG CỦA GVHOẠT ĐỘNG CỦA HỌC SINH

Hoạt động 1: Rẽ nhánh

Thường ngày, có rất nhiều việc chỉ được thực hiện khi một điều kiện cụ thể nào đó được thoả mãn. Ví dụ, Châu và Ngọc thường cùng nhau chuẩn bị các bài thực hành môn tin học.Một lần Châu hẹn với Ngọc: Chiều mai nếu trời không mưa thì Châu sẽ đến nhà Ngọc .Ta gọi cách diễn đạt đó là dạng thiếu:Nếu … thì ….Một lân khác, Ngọc hẹn với Châu: Chiều mai nếu trời không mưa thì Ngọc sẽ đến nhà Châu, nếu mưa thì sẽ gọi điện cho Châu để trao đổi.Ta nói cách diễn đạt đó thuộc dạng đủ:Nếu …. thì …, nếu không thì …GV: Theo em hiểu rẽ nhánh là gì ?

Từ đó có thể thấy, trong nhiều thuật toán, các thao tác tiếp theo sẽ phụ thuộc vào kết quả nhận được từ các bước trước đó.Ví dụ, để giải phương trình bậc hai:ax2+ bx + c (a≠0)Trước tiên, ta tính biệt số deltaD = b2 – 4ac.Nếu D không âm, ta sẽ đưa ra các nghiệm.Trong trường hợp ngược lại ta phải thông báo phương trình vô nghiệm.

Hs: Rẽ nhánh giống như đi đến ngã ba hoặc ngã tư đường rồi rẽ theo một hướng (nhánh) nào đó.

Lắng nghe, ghi chép

Hoạt động 2: Câu lệnh If – then

Cấu Trúc Rẽ Nhánh Trong Lập Trình C / 2023

Cấu trúc rẽ nhánh là một cấu trúc được dùng rất phổ biến trong các ngôn ngữ lập trình nói chung. Trong C, có hai dạng: dạng không đầy đủ và dạng đầy đủ.

Cú pháp:

Lưu đồ cú pháp:

Kiểm tra Biểu thức điều kiện trước.

Nếu điều kiện đúng (!= 0) thì thực hiện câu lệnh hoặc khối lệnh liền sau điều kiện.

Nếu điều kiện sai thì bỏ qua lệnh hoặc khối lệnh liền sau điều kiện (những lệnh và khối lệnh sau đó vẫn được thực hiện bình thường vì nó không phụ thuộc vào điều kiện sau if).

int main ()

{

float a;

printf(“Nhap a = “); scanf(“%f”,&a);

if (a !=0 )

printf(“Nghich dao cua %f la %f”,a,1/a);

getch();

return 0;

}

– Lệnh getch() luôn luôn được thực hiện vì nó không phải là “lệnh liền sau” điều kiện if.

Ví dụ 2: Yêu cầu người chạy chương trình nhập vào giá trị của 2 số a và b, nếu a lớn hơn b thì in ra thông báo “Gia trị của a lớn hơn giá trị của b”, sau đó hiển thị giá trị cụ thể của 2 số lên màn hình.

int main ()

{

int a,b;

printf(“Nhap vao gia tri cua 2 so a, b!”);

scanf(“%d%d”,&a,&b);

{

printf(” Gia tri cua a lon hon gia tri cua b”);

printf(” a=%d, b=%d”,a,b);

}

getch();

return 0;

}

Nếu chúng ta nhập vào giá trị của a lớn hơn giá trị của b thì khối lệnh:

{

printf(” Gia tri cua a lon hon gia tri cua b”);

printf(” a=%d, b=%d”,a,b);

}

sẽ được thực hiện, ngược lại khối lệnh này không được thực hiện.

Cú pháp:

else

Lưu đồ cú pháp:

Giải thích:

Công việc 1, công việc 2 được thể hiện là 1 câu lệnh hay 1 khối lệnh.

Đầu tiên Biểu thức điều kiện được kiểm tra trước.

Nếu điều kiện đúng thì thực hiện công việc 1.

Nếu điều kiện sai thì thực hiện công việc 2.

Các lệnh phía sau công việc 2 không phụ thuộc vào điều kiện.

int main ()

{

float a;

printf(“Nhap a = “); scanf(“%f”,&a);

if (a !=0 )

printf(“Nghich dao cua %f la %f”,a,1/a);

else

printf(“Khong the tim duoc nghich dao cua a”);

getch();

return 0;

}

– Lệnh getch() luôn luôn được thực hiện.

Ví dụ 2: Yêu cầu người chạy chương trình nhập vào giá trị của 2 số a và b, nếu a lớn hơn b thì in ra thông báo “Gia trị của a lớn hơn giá trị của b, giá trị của 2 số”, ngược lại thì in ra màn hình câu thông báo “Giá trị của a nhỏ hơn hoặc bằng giá trị của b, giá trị của 2 số”.

int main ()

{

int a, b;

printf(“Nhap vao gia tri cua 2 so a va b !”);

scanf(“%d%d”,&a,&b);

{

printf(” a lon hon b”);

printf(” a=%d b=%d “,a,b);

}

else

{

printf(” a nho hon hoac bang b”);

printf(” a=%d b=%d”,a,b);

}

printf(” Thuc hien xong lenh if”);

getch();

return 0;

}

– Nếu chúng ta nhập vào 40 30  thì kết quả hiển ra trên màn hình là

a lon hon b

a=40 b=30

Thuc hien xong lenh if

– Còn nếu chúng ta nhập 40 50  thì kết quả hiển ra trên màn hình là

a nho hon hoac bang b

a=40 b=50

Thuc hien xong lenh if

Ví dụ 3: Yêu cầu người thực hiện chương trình nhập vào một số nguyên dương là tháng trong năm và in ra số ngày của tháng đó.

– Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12

– Tháng có 30 ngày: 4, 6, 9, 10

– Tháng có 28 hoặc 29 ngày : 2

int main ()

{

int thg;

printf(“Nhap vao thang trong nam !”);

scanf(“%d”,&thg);

printf(” Thang %d co 31 ngay “,thg);

printf(” Thang %d co 30 ngay”,thg);

else if (thg==2)

printf(” Thang %d co 28 hoac 29 ngay”,thg);

else printf(“Khong co thang %d”,thg);

printf(” Thuc hien xong lenh if”);

getch();

return 0;

}

– Nếu chúng ta nhập vào một trong các số 1, 3, 5, 7, 8, 10, 12 thì kết quả xuất hiện trên màn hình sẽ là

Thuc hien xong lenh if

– Nếu chúng ta nhập vào một trong các số 4, 6, 9, 11 thì kết quả xuất hiện trên màn hình sẽ là

Thuc hien xong lenh if

– Nếu chúng ta nhập vào số 2 thì kết quả xuất hiện trên màn hình sẽ là

Thang 2 co 28 hoac 29 ngay

Thuc hien xong lenh if

– Nếu chúng ta nhập vào số nhỏ hơn 0 hoặc lớn hơn 12 thì kết quả xuất hiện trên màn hình sẽ là

Thuc hien xong lenh if

– Ta có thể sử dụng các câu lệnh chúng tôi lồng nhau. Trong trường hợp chúng tôi lồng nhau thì else sẽ kết hợp với if gần nhất chưa có else.

– Trong trường hợp câu lệnh if “bên trong” không có else thì phải viết nó trong cặp dấu {} (coi như là khối lệnh) để tránh sự kết hợp else if sai.

a=so2;

a=so3;

{

a=so2;

}

a=so3;