Top 14 # Xem Nhiều Nhất Với Cấu Trúc Rẽ Nhánh If Mới Nhất 6/2023 # Top Like | Comforttinhdauthom.com

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

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 Trong Python

If là gì? Có ăn được không?

If là một từ tiếng Anh thường gặp, khi dịch nó ra tiếng Việt ta sẽ được nghĩa là “Nếu” hoặc là “Giá mà”, “Miễn là”,… Dĩ nhiên là “Nếu” là một từ chẳng mấy xa lạ với các bạn. Chúng ta sử dụng nó cả trăm, ngàn lần một ngày.

Nếu hôm nay chủ nhật, Tèo sẽ đi chơi.

Nếu được vote up câu hỏi thì bạn được cộng điểm, còn nếu bị vote down bạn sẽ bị trừ điểm, không có vote thì số điểm không thay đổi.

If

Đây là ví dụ về câu lệnh if cơ bản nhất. Nếu … thì …

Từ đó, Python đã xây dựng một cấu trúc nếu tương tự như trên:

if expression:

# If-block

Lưu ý: Tất cả các câu lệnh nằm trong if-block là các câu lệnh có lề thụt vào trong so với câu lệnh if. Chi tiết Kteam sẽ trình bày ở phần tiếp theo

Ở đây, nếu expression là một giá trị khi đưa về kiểu dữ liệu Boolean là True thì Python sẽ nhảy vào thực hiện các câu lệnh trong if-block. Còn nếu không thì không thì sẽ bỏ qua if-block đó.

If – else if

Đây là bản nâng cấp của cấu trúc if vừa rồi chúng ta tìm hiểu. Nó có cấu trúc như sau:

if expression:

# If-block

elif 2-expression:

# 2-if-block

elif 3-expression:

# 3-if-block

elif n-expression:

# n-if-block

Ở đây, bạn có thể đặt bao nhiêu lần nếu cũng được. Và từ câu lệnh if đến lần elif lần thứ n – 1 (câu lệnh với n-expression) là một khối, ta sẽ đặt cho nó một cái tên là khối BIG để dễ hiểu. Nó sẽ hoạt động như sau:

Bước 1: Kiểm tra xem expression có phải là một giá trị Boolean True hay không?

Bước 2: Nếu có, thực hiện if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 3.

Bước 3: Kiểu tra xem 2-expression có phải là một giá trị Boolean True hay không?

Bước 4: Nếu có, thực hiện 2-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 5.

Bước 5: Kiểm tra xem 3-expression có phải là một giá trị Boolean True hay không?

Bước 6: Nếu có, thực hiện 3-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 7

Bước (n – 1) x 2: Kiểm tra xem n-expression có phải là một giá trị Boolean True hay không?

Bước (n – 1) x 2 + 1: Nếu có, thực hiện n-if-block.

Bước (n – 1) x 2 + 2: Kết thúc khối BIG.

Ví dụ để các bạn dễ hiểu hơn

If – else

Cấu trúc vừa rồi không biết có làm bạn đau đầu hay không. Nếu có, hãy thư giãn vì cấu trúc sau đây đơn giản hơn nhiều.

if expression:

# If-block

else:

# else-block

Nếu expression là một giá trị Boolean True, thực hiện if-block và kết thúc. Không quan tâm đến else-block. Còn nếu không sẽ thực hiện else-block và kết thúc.

Ví dụ:

If – else if – else

if expression:

# If-block

elif 2-expression:

# 2-if-block

elif n-expression:

# n-if-block

else:

# else-block

Bạn có thể đặt bao nhiêu lần elif cũng được nhưng else thì chỉ một. Và từ câu lệnh if đến câu lệnh else là một khối, ta cũng sẽ đặt cho nó một cái tên là khối BIG để dễ hiểu. Nó sẽ hoạt động như sau:

Bước 1: Kiểm tra xem expression có phải là một giá trị Boolean True hay không?

Bước 2: Nếu có, thực hiện if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 3.

Bước 3: Kiểu tra xem 2-expression có phải là một giá trị Boolean True hay không?

Bước 4: Nếu có, thực hiện 2-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 5

Bước (n – 1) x 2: Kiểm tra xem n-expression có phải là một giá trị Boolean True hay không?

Bước (n – 1) x 2 + 1: Nếu có, thực hiện n-if-block sau đó kết thúc khối BIG.

Bước (n – 1) x 2 + 2: Nếu không thì thực hiện else-block và kết thúc khối BIG.

Ví dụ:

Block trong Python

Với đa số ngôn ngữ lập trình hiện nay, thường dùng cặp dấu ngoặc { } để phân chia các block.

Riêng đối với Python lại sử dụng việc định dạng code để suy ra các block. Đây là điều giúp code Python luôn luôn phải đẹp mắt.

Một số điều lưu ý về việc định dạng code block trong Python:

Câu lệnh mở block kết thúc bằng dấu hai chấm (:), sau khi sử dụng câu lệnh có dấu hai chấm (:) buộc phải xuống dòng và lùi lề vào trong và có tối thiểu một câu lệnh để không bỏ trống block.

Những dòng code cùng lề thì là cùng một block.

Một block có thể có nhiều block khác.

Khi căn lề block không sử dụng cả tab lẫn space.

Nên sử dụng 4 space để căn lề một block

Các câu lệnh nằm trong một khung màu là một block, và block đó được mở bởi câu lệnh nằm ngay bên trên khung màu.

Lưu ý: Kteam có đề cập đến việc sau khi sử dụng câu lệnh có dấu hai chấm (:) buộc phải xuống dòng và lùi lề vào trong. Tuy nhiên, Bạn vẫn có thể đi ngược lại điều này trong một vài trường hợp

Tuy nhiên, việc sử dụng như vậy không được khuyến khích vì chỉ tiết kiếm được một vài dòng code mà lại gây khó đọc thì không đáng để tiết kiệm.

Và bạn cũng đã biết thêm một điều Python không hề cấm dấu chấm phẩy (;). Nó vẫn là một cú pháp hợp lệ. Nếu bạn quen tay có thể dùng dấu chấm phẩy (;) thoải mái.

Cấu Trúc Rẽ Nhánh Trong C

2

int

main

()

3

{

4

int

a

=

5

;

6

printf

(

“%d la so duong

n

,

a

);

7

}

8

if

(

a

<

0

)

{

9

printf

(

“%d la so am

n

,

a

);

10

printf

(

“a nho hon 0”

);

11

}

12

return

0

;

13

}

3

else

2

int

main

()

{

3

int

a

=

5

;

6

else

{

8

printf

(

“%d khong la so duong

n

,

a

);

9

}

10

return

0

;

11

}

5

else

2

int

main

()

{

3

int

a

=

5

;

4

printf

(

“Nhap so nguyen a: “

);

5

scanf

(

“%d”

,

&

a

);

6

8

printf

(

“a la so duong

n

);

9

else

if

(

a

<

0

)

10

printf

(

“a la so am

n

);

11

else

12

f

(

“a = 0”

);

13

return

0

;

14

}

4

….

6

}

• Khi một cấu trúc rẽ nhánh switch được thực thi, chương trình sẽ tính toán giá trị của biểu thức. Kết quả thu được phải là kiểu nguyên (ta có thể ép kiểu cho nó. Xem Toán tử trong C để biết cách ép kiểu). Tiếp đó nó so sánh kết quả thu được với các giá trị 1,2… , khi tìm thấy một giá trị bằng với kết quả thu được ở trên, nó thực hiện cách lệnh từ sau dấu : tương ứng cho tới cuối cấu trúc switch hoặc tới khi bắt gặp lệnh break;

2

int

main

()

{

3

int

chuSo

;

4

printf

(

“Nhap chu so: “

);

5

scanf

(

“%d”

,

&

chuSo

);

6

switch

(

chuSo

)

{

7

case

0

:

8

printf

(

“Khong”

);

9

break

;

10

case

1

:

11

printf

(

“Mot”

);

12

break

;

13

case

2

:

14

printf

(

“Hai”

);

15

break

;

16

case

3

:

17

printf

(

“Ba”

);

18

break

;

19

case

4

:

20

printf

(

“Bon”

);

21

break

;

22

case

5

:

23

printf

(

“Nam”

);

24

break

;

25

case

6

:

26

printf

(

“Sau”

);

27

break

;

28

case

7

:

29

printf

(

“Bay”

);

30

break

;

31

case

8

:

32

printf

(

“Tam”

);

33

break

;

34

case

9

:

35

printf

(

“Chin”

);

36

break

;

37

default

:

38

printf

(

“Khong phai chu so!”

);

39

}

40

return

0

;

41

}

Bai 9 Cấu Trúc Rẽ Nhánh

Tuần: ngày soạn: ngày dạyCHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶPTiết 12 Bài 9: CẤU TRÚC RẼ NHÁNHMục tiêu bài học.Kiến thứcHiểu nhu cầu cấu trúc rẽ nhánh trong biểu dienx thuật toánHiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ)Hiểu câu lệnh ghép.Kĩ năng:Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản.Viết được các câu lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để thực hiện được thuật toán của một số bài toán đơn giảnThái độ:Rèn luyện tác phong làm việc theo nhóm.Phương pháp, phương tiệnPhương phápThuyết trình, truy vấn, ấy ví dụ hướng dẫn mẫuHoạt động nhómPhương tiện:Giáo án điện tử, máy chiếu, máy tính.Bảng phụ (đề bài hoạt động nhóm, bút dạ)Lưu ý sư phạmĐặt vấn đề thông qua một câu ca dao vừ gắn học sinh bài học thực tế, để học sinh phát triển ngôn ngữ và phát biểu sy nghĩ cá nhân. Phát triển khả năng tư duy và trình bày logic của học sinh.Sử dụng thuật toán giải phương trình bậc 2 để lien hẹ với công thức nghiệm đã được học trong chương trình toán họcNên để học sinh tự rút ra câu trúc rẽ nhánh trong một thuật toán. Giáo viên đưa ra cú pháp và áp dụng trước để cho học sinh thực hiện theo (áp dụng với những lớp thường đối tượng tiếp thu kiến thức chậm)Quán triệt tinh thần lý thuyết kiến tạo. từ lý thuyết học sinh có thể vận dụng vào bài của mìnhTổ chức dạy họcỔn định lớpỔn định trật tự, kiểm tra sĩ số.Kiểm tra bài cũ Câu 1: Nêu cú pháp và lấy ví dụ các lệnh nhập xuất dữ liệu trong ngôn ngữ lập trình Pascal.Câu 2: Nêu ý nghĩa câu lệnh sauProgram baitap1;Uses crt;Const Max = 100;Var a,b: real;Bài mớiHOẠT ĐỘNG CỦA THẦY VÀ TRÒNỘI DUNG KIẾN THỨC

Đặt vấn đề:Dân gian ta có câu ca daoCá không ăn muối cá ươnCon không nghe lời cha mẹ trăm đường con hư.Các em ai cũng đều đã được học và hiểu về ý nghĩa câu cac dao trên. Đúng vậy con cá nếu ta bắt ra khỏi nước không cho muối để ngoài môi trường nó xẽ bị hỏng thối cũng như con người khi nhỏ không nghe lời cha mẹ thầy cô thì sẽ thành những người con hư sau này là những sản phẩm không tốt của xã hội. Từ đó ta có thể thấy trong cuộc sống có những việc làm được khi thỏa mãn một điều kiện nào đó. Và với tin học người ta gọi đó là rẽ nhánh. Vậy rẽ nhánh là gì chúng ta sẽ đi tìm hiểu trong bài học ngày hôm nay.

HĐ 1: Tìm hiểu khái niệm rẽ nhánh

GV: yêu cầu học sinh mở SGK trang ….tìm hiểu khái niệm rẽ nhánh.GV: sử dụng câu ca dao trên nêu ra một số cấu trúc rẽ nhánh.-Nếu cá không muối thì cá ươnGV: yêu cầu học sinh lấy ví dụ câu có cấu trúc rẽ nhánh từ nội dung câu ca dao trênHS: suy nghĩ và trả lời-Nếu con cái không nghe lời cha mẹ thì là con hư-Nếu con cái biết nghe lời cha mẹ thì là con ngoan.…..-Nếu con cái nghe lời cha mẹ thì là con ngoan nếu không thì là con hư.Gv: yêu cầu học sinh nhận xét các câu đưa ra. Phân chia làm mấy loại và đặc điểm chung của chúng.Hs: trả lờiGv: tổng kết: Có thể thấy cấu trúc rẽ nhánh được chia làm hai loại. Dạng thiếu và dạng đủGv: ghi bảngHs: tiếp nhận kiến thức.

1. Rẽ nhánhDạng thiếu:Nếu …………. thìDạng đủ: Nếu … thì…. Nếu không thì…

VD: Giải phương trình bậc haiax2 + bx +c = 0