Bài giảng Kỹ thuật lập trình - Chương 04: Cấu trúc rẽ nhánh - Trần Quang

Đặt vấn đề

Bài toán 1: nhập một ngày (gồm ngày, tháng, năm)

Một chương trình tốt không được giả sử người dùng phải nhập đúng ngày, tháng, năm (đã thuộc miền giá trị cho phép)

Để kiểm tra trường hợp nhập sai tháng, ta có thể sử dụng cấu trúc:

if ( (tháng < 0) hoặc (tháng > 12) ) II Xử lý lỗi với tháng nhập sai

endif

pdf 32 trang xuanthi 27/12/2022 3020
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 04: Cấu trúc rẽ nhánh - Trần Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_04_cau_truc_re_nhanh_tra.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 04: Cấu trúc rẽ nhánh - Trần Quang

  1. Nội dung  Đặt vấn đề  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 nhau  Cấu trúc: switch-case Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 2
  2. Đặt vấn đề Bài toán 2: Giải phương trình bậc 2  Chương trình cần yêu cầu nhập các hệ số A, B, C  Tuy nhiên A và B nhập vào không chắc sẽ khác 0 -> có thể suy biến về phương trình bậc 1  Dùng cấu trúc rẽ nhánh để kiểm tra các điều kiện nói trên Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 4
  3. Chương trình  Chương trình là một danh sách tuyến tính (có thứ tự) của các câu lệnh (đơn, phức, )  Mặc định máy tính sẽ thực hiện lần lượt từ câu đầu tiên đến câu lệnh cuối cùng.  Trừ khi gặp các cấu trúc điều khiển như:  Rẽ nhánh  if, if-else, switch  Lặp  for, while, do while Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 6
  4. Câu lệnh: if : false Biểu thức luận lý hoặc phải chuyển đổi sang luận lý được true : một trong các loại câu lệnh đơn, kép hay rỗng Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 8
  5. Câu lệnh: if-else  Cú pháp: if ( ) else Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 10
  6. Câu lệnh: if-else  Cú pháp + phong cách lập trình if ( ) else if ( ) { if ( ) { // // } } else else { { // // } } Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 12
  7. Giải Phương trình bậc 2 #include #include void main(){ float a, b, c, delta; printf("Nhap vao gia tri cac so a, b, c: \n"); scanf("%f%f%f", &a, &b, &c); if(a == 0) { // giai phuong trinh bac 1 } else { delta = b*b - 4*a*c; if(delta < 0) // tiep tuc giai phuong trinh bac 2 } getch(); } Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 14
  8. Câu lệnh: if-else lồng nhau Đầu vào: điểm false false false false diem < 5 diem < 6.5 diem < 8 diem < 9.5 true true true true loai = “G” loai = “XS” loai = “K” loai = “TB” loai = “Y” Đầu ra: loại Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 16
  9. Câu lệnh: if-else lồng nhau if ( ) else if ( ) else if ( ) else if ( ) else if ( ) else if ( ) else Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 18
  10. Biểu thức điều kiện ? : Cú pháp : ? : nếu đúng thì trả về , ngược lại trả về Ví dụ: lệnh if (hours > 40) rate = 0.45; else rate = 0.02; có thể thay bằng : rate = (hours > 40) ? 0.45 : 0.02; Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 20
  11. Câu lệnh switch-case Cú pháp: switch ( ){ case : case : case : default: } switch, case, default: Từ khoá : là biểu thức thuộc một trong các kiểu sau đây (1) Các kiểu số nguyên, hoặc dẫn xuất từ nó thông qua typedef (2) Kiểu enum : (i=1, , N), các giá trị có thể của mã trường hợp Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 22
  12. Câu lệnh switch-case  Chương trình kiểm tra xem trường hợp nào xảy ra trong các trường hợp được liệt kê: , , ,  Nếu trường hợp thứ i xảy ra (i = 1 N):  Thực hiện lần lượt các câu lệnh từ i đến N, kể cả câu lệnh  Nếu gặp lệnh break; thì chương trình thoát khỏi cấu trúc switch-case  Nếu không có trường hợp nào xảy ra thì chương trình thực thi câu lệnh và thoát khỏi cấu trúc switch-case Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 24
  13. Câu lệnh switch-case switch ( ){ case : break; case : case : default: } Trường hợp muốn: khi được thực thi xong thi thoát khỏi cấu trúc switch-case luôn, không thực thi các câu lệnh kế tiếp. Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 26
  14. Ví dụ #include #include void 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"); } getch(); } Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 28
  15. Sử dụng kiểu liệt kê (enum) #include #include enum THop {DongY, TuChoi, ChuaQuyetDinh}; void main(){ enum THop 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"); } getch(); } Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 30
  16. Tổng kết  Đặt vấn đề  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 nhau  Cấu trúc: switch-case Trần Quang Kỹ thuật lập trình Chương 04: Cấu trúc rẽ nhánh © 2016 32