Bài giảng Kỹ thuật lập trình C/C++ - Chương 4: Cấu trúc rẽ nhánh bao gồm các nội dung: Ứng dụng của cấu trúc rẽ nhánh, câu lệnh và chương trình, cấu trúc if, cấu trúc if-else, cấu trúc if-else lồng nhau, cấu trúc switch-case. Mời các bạn cùng tham khảo nội dung chi tiết.
Chương 04 CẤU TRÚC RẼ NHÁNH Lê Thành Sách Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Nội dung n n n n n n n Ứng dụng cấu trúc rẽ nhánh Câu lệnh & Chương trình Cấu trúc: if Cấu trúc: if-else Cấu trúc: if-else lồng Cấu trúc: switch-case Tổng kết Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Ứng dụng cấu trúc rẽ nhánh n n Các ứng dụng hữu ích thực tế điều có dùng đến cấu trúc rẽ nhánh Ví dụ n Bài toán 1: Nhập ngày (gồm ngày, tháng, năm) n Một chương trình tốt KHƠNG giả sử ngày, tháng năm đọc vào thuộc miền giá trị cho phép n Để khắc phục trường hợp lỗi với tháng, cấu trúc sau sử dụng if ( (tháng < 0) (tháng > 12) ) - Xử lý lỗi với tháng endif Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Ứng dụng cấu trúc rẽ nhánh n Ví dụ n Bài tốn 2: Giải Phương trình bậc (PTB2) n Nếu ứng dụng cho phép nhập hệ số A, B, C PTB2 n A B: không khác n Phương trình đầu vào chưa bậc hay bậc n n => Chương trình có lỗi thực thi khơng kiểm tra xem A B có khác hay khơng => Đã dùng đến cấu trúc rẽ nhánh để kiểm tra điều kiện nói Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Ứng dụng cấu trúc rẽ nhánh n Ví dụ n Bài tốn 3: Trong ứng dụng kế toán, xác định thuế suất cá nhân n Bảng thuế suất Năm 2016 bảng (nguồn: Kế toán Thiên ứng) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Ứng dụng cấu trúc rẽ nhánh n Ví dụ n Bài tốn 3: Trong ứng dụng kế toán, xác định thuế suất cá nhân n Bảng thuế suất Năm 2016 bảng (nguồn Kế toán Thiên ứng) n n => Thuế suất phải tính từ “thu nhập tính thuế” n Có nhiều trường hợp khác mà áp thuế suất khác => Dùng cấu trúc rẽ nhánh để xác định “thuế suất” Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Ứng dụng cấu trúc rẽ nhánh n Ví dụ n Bài toán 4: Hiện thực cách tương tác người sử dụng cho phần mềm (có giao diện đồ hoạ hay khơng) n Chương trình phải lắng nghe kiện xảy ứng dụng n Có giao diện đồ hoạ: n Sự kiện, chuột trái, phải, giữa, chọn menu A, menu B, v.v n Trên console n Đó mã công việc (con số, chữ) nhập vào n Chương trình phải thực cơng việc khác tương ứng với kiện hay mã công việc n => Cần đến cấu trúc rẽ nhánh (switch, có nhiều trường hợp) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Câu lệnh & Chương trình n n Câu lệnh gì? n Là câu chương trình viết ngơn ngữ lập trình n Kết thúc câu dấu chấm phẩy ( ) n Tương tự câu ngôn ngữ tự nhiện dấu chấm (.) ; Các loại câu lệnh n Câu lệnh đơn (câu đơn) n Là câu lệnh đơn giản học trước, như: n Câu khai báo biến n Câu lệnh gán n Câu lệnh gọi hàm n V.v Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Câu lệnh & Chương trình n Các loại câu lệnh n n Câu lệnh đơn (câu đơn) Câu lệnh phức (câu phức) n Một danh sách câu lệnh thực Đánh dấu danh sách cặp dấu: { } { } n // Các cấu trúc điều khiển (if, if-else, switch, for, while, … while) xem câu lệnh phức Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Câu lệnh & Chương trình n Các loại câu lệnh n n n Câu lệnh đơn (câu đơn) Câu lệnh phức (câu phức) Câu lệnh rỗng (câu rỗng) n có dấu ; đứng cuối n Vẫn cho phép C/C++ không hữu dụng nhiều Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 10 https://fb.com/tailieudientucntt Câu lệnh switch-case Cú pháp switch (){ case : case : case : default: } switch, case, default: Từ khoá : : (i=1, , N), giá trị mã trường hợp Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 42 https://fb.com/tailieudientucntt Câu lệnh switch-case Cú pháp switch (){ case : case : case : case : default: } Trường hợp muốn: thực thi cho trường hợp 1,2, Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 43 https://fb.com/tailieudientucntt Câu lệnh switch-case Cú pháp switch (){ case : break; case : case : default: } Trường hợp muốn: thực thi xong thi thoát khỏi cấu trúc switchcase luôn, không thực thi câu lệnh Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 44 https://fb.com/tailieudientucntt Câu lệnh switch-case Cú pháp switch (){ case : break; case : break; case : break; default: } Trường hợp muốn: Muốn câu lệnh thực thi với trường hợp tương ứng Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 45 https://fb.com/tailieudientucntt Câu lệnh switch-case Cú pháp switch (){ case : break; case : break; case : break; } Trường hợp muốn: Muốn câu lệnh thực thi với trường hợp tương ứng Khơng có phần thực thi Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 46 https://fb.com/tailieudientucntt Câu lệnh switch-case Ví dụ n Bài tốn: n n Chương trình nhận lựa chọn từ người dùng n Các lựa chọn n Ý nghĩa số chưa cần lúc In lựa chọn người dùng n Có thể thay chức in khối công việc sau Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 47 https://fb.com/tailieudientucntt Câu lệnh switch-case Ví dụ n Ví dụ #include #include int main(){ int luachon; printf("Nhap vao lua chon: \n"); scanf("%d", &luachon); switch (luachon){ case 1: printf("Truong hop 1\n"); printf("Hanh dong 1\n"); case 2: printf("Truong hop 2\n"); printf("Hanh dong 2\n"); default: printf("Hanh dong mac dinh\n"); } return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 48 https://fb.com/tailieudientucntt Câu lệnh switch-case Ví dụ n Ví dụ Chương trình in tên hai hành động Vì khơng có lệnh break; #include #include int main(){ int luachon; printf("Nhap vao lua chon: \n"); scanf("%d", &luachon); switch (luachon){ case 1: printf("Truong hop 1\n"); printf("Hanh dong 1\n"); case 2: printf("Truong hop 2\n"); printf("Hanh dong 2\n"); default: printf("Hanh dong mac dinh\n"); } return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 49 https://fb.com/tailieudientucntt Câu lệnh chuyển đổi n Ví dụ break: khiến chương trình in tên hành động tương ứng lựa chọn #include #include int main(){ int luachon; printf("Nhap vao lua chon: \n"); scanf("%d", &luachon); switch (luachon){ case 1: printf("Truong hop 1\n"); printf("Hanh dong 1\n"); break; case 2: printf("Truong hop 2\n"); printf("Hanh dong 2\n"); break; default: printf("Hanh dong mac dinh\n"); } return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 50 https://fb.com/tailieudientucntt Câu lệnh switch-case Ví dụ n Một ví dụ khác menu: n Có sử dụng enum Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 51 https://fb.com/tailieudientucntt Kiểu liệt kê câu lệnh chuyển đổi n Ví dụ #include #include enum Luachon {DongY, TuChoi, ChuaQuyetDinh}; int main(){ enum Luachon luachon; printf("Nhap vao lua chon cua ban \n"); printf("0 Ban dong y \n"); printf("1 Ban tu choi \n"); printf("2 Ban chua co quyet dinh \n"); scanf("%d", &luachon); switch (luachon){ case DongY: printf("Ban dong y\n"); break; case TuChoi: printf("Ban tu choi y\n"); break; case ChuaQuyetDinh:printf("Ban chua co quyet dinh\n"); break; default: printf("Ban khong nhap lua chon dung\n"); } return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ 52 https://fb.com/tailieudientucntt Câu lệnh switch-case Bài tập n Bài toán: Quản lý kho hàng n n n Có chức n Nhập hàng hoá n Lưu hàng hoá n Đọc hàng hoá từ tập tin n V.v Chương trình in menu chờ người dùng chọn (nhập từ bàn phím) Với lựa chọn n In tên chức chọn nói n Sinh viên phát triển chức đầy đủ sau Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 53 https://fb.com/tailieudientucntt So sánh if – else với switch-case n Tại không dùng switch-case cho tốn phân loại sinh viên theo điểm Điểm khơng phải kiểu nguyên Đầu vào: điểm diem < false true diem < 6.5 true false diem < true loai = “K” loai = “Y” false diem < 9.5 false true loai = “G” loai = “X” loai = “B” Đầu ra: loại Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 54 https://fb.com/tailieudientucntt So sánh if – else với switch n n n Câu lệnh switch biểu diễn lại trình tự câu lệnh if-else Một số trường hợp switch tường minh dễ hiểu Tất cấu trúc điều khiển biểu diễn lại câu lệnh if-else câu lệnh goto (Với hỗ trợ nhãn) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 55 https://fb.com/tailieudientucntt Tổng kết n Vận dụng nguyên tắc phân rã toán để giải vấn đề n n Xem ví dụ Giải PTB2 ví dụ khác Hiểu vận dụng câu lệnh điều khiển C n n n Nguyên lý việc thực thi có điều kiện Câu lệnh if-else, câu lệnh điều kiện lồng Câu lệnh switch-case Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 56 https://fb.com/tailieudientucntt ... Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ 10 https://fb.com/tailieudientucntt Câu lệnh & Chương trình n Chương trình n n n n Chương trình xem danh sách tuyến tính... Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ 38 https://fb.com/tailieudientucntt Câu lệnh switch-case Ứng dụng n Ví dụ: chương trình quản lý sách n n Chương trình in danh sách. .. đếm Ví dụ: chương trình quản lý sách n n Chương trình cung cấp menu sau cho người dùng n Đọc liệu từ tập tin n Nhập liệu vào chương trình n Tìm sách n Lấy danh sách người mượn chưa trả sách n V.v