Bài giảng Kỹ thuật lập trình Điều khiển chọn do GV. Hà Đại Dương biên soạn trình bày về thứ tự tuần tự trong thực hiện câu lệnh, các nội dung chi tiết về lệnh if...else..., lệnh switch,... Để biết rõ hơn về nội dung chi tiết, mời các bạn cùng tham khảo.
24/08/2016 Kỹ thuật lập trình Tuần - Điều khiển chọn Giáo viên: Hà Đại Dương duonghd@mta.edu.vn 24/08/2016 Bài trước … • Thuật tốn thiết kế dựa ba cấu trúc logic thứ tự thực câu lệnh sau đây: – Tuần tự (Sequential): Các công việc (lệnh) thực cách tuần tự, công việc nối tiếp công việc (từ xuống dưới) – Lựa chọn (Selection) : Lựa chọn công việc (lệnh) để thực vào điều kiện – Lặp (Repeating): Thực lặp lại công việc (lệnh) không nhiều lần vào điều kiện 24/08/2016 24/08/2016 Nội dung Tuần tự (Sequential) Lệnh if else … Lệnh switch Bài tập 24/08/2016 Tuần tự (Sequential) 24/08/2016 24/08/2016 Trên/dưới • Chương trình 24/08/2016 Trước/sau • Chương trình 24/08/2016 24/08/2016 Khối lệnh • Các lệnh nằm cặp dấu { } • Ví dụ 24/08/2016 Khối lệnh lồng • Ví dụ 24/08/2016 24/08/2016 Khai báo biến • Trong khối lệnh khai báo biến, ví dụ • Phạm vi tác động biến: Trong khối lệnh khối 24/08/2016 Khai báo biến trùng tên • Với khai báo biến ví dụ sau: • Khối lệnh cha khai báo biến: a, b, c, d • Khối lệnh khai báo a, b trùng với khối cha • Biến a, b khối lệnh cha ảnh hưởng đến biến a, b khối lệnh ??? 24/08/2016 10 24/08/2016 Điều khiển chọn (Selection) 24/08/2016 11 Yêu cầu xử lý đặt • Lựa chọn khả Ví dụ: Giải phương trình bậc a.x + b = Lựa chọn 1: a -> nghiệm x = -b/a; Lựa chọn 2: a=0 -> vô nghiệm/vơ số nghiệm • Lựa chọn nhiều khả năng: Ví dụ: Hiển thị thời khóa biểu theo ngày T Lựa chọn 1: T=T2 -> Lịch ngày thứ … Lựa chọn 8: T=CN -> Lịch ngày chủ nhật 24/08/2016 12 24/08/2016 Lệnh if else … 24/08/2016 13 Ý nghĩa, cú pháp • Ý nghĩa: Cho phép lựa chọn hai khả • Cú pháp: or • Trong – if, else: từ khóa – BTLG: biểu thức logic (cho giá trị sai) 24/08/2016 14 24/08/2016 Dạng • Nếu BTLG có giá trị (1) lệnh Lệnh 1, Lệnh … thực • Và BTLG có giá trị sai (0) khơng có công việc thực 24/08/2016 15 Dạng • Nếu BTLG có giá trị (1) lệnh Lệnh 1_1, Lệnh 1_2 … thực • Và BTLG có giá trị sai (0) lệnh Lệnh 2_1, Lệnh 2_2 … thực 24/08/2016 16 24/08/2016 Ví dụ • Số a0 có nghịc đảo 1/a Viết chương trình nhập vào số a, in số nghịch đảo hình 24/08/2016 17 Ví dụ • Tìm số lớn số a, b, c Yêu cầu: – Trình bày thuật tốn (Bài tập tuần 1) – Viết chương trình (10 phút) 24/08/2016 18 24/08/2016 Ví dụ • In số ngày tháng năm (dương lịch), ví dụ nhập vào tháng in 31 (ngày) • Biết rằng: – Tháng 1,3,5,7,8,10,12 có 31 ngày – Tháng 4,6,9,11 có 30 ngày – Tháng có 28 29 ngày – Viết chương trình(10 phút) 24/08/2016 19 24/08/2016 20 10 24/08/2016 Ví dụ • Giải hệ bậc a.x + b.y - c = d.x + e.y - f = – Trình bày thuật tốn (Bài tập tuần 1) – Viết chương trình (10 phút) 24/08/2016 21 Một số lưu ý … • Sau if else nên dùng khối lệnh để tránh nhầm lẫn Ví dụ xét đoạn lệnh sau: so1 = -1, so2 = 2, so3 = a = ??? so1 = 1, so2 = 2, so3 = a = ??? Khi không rõ ràng, mệnh đề else hiểu với if gần 24/08/2016 22 11 24/08/2016 Một số lưu ý … • Sau if else nên dùng khối lệnh để tránh nhầm lẫn Muốn else if thứ ta nên dùng khối lệnh sau: 24/08/2016 23 Một số lưu ý … • Sai lỗi cú pháp • Sai lỗi logic 24/08/2016 24 12 24/08/2016 Lệnh switch 24/08/2016 25 Ý nghĩa, cú pháp • Ý nghĩa: Lựa chọn (1 số ) nhiều khả • Cú pháp: • Trong đó: – switch, case, break, default: từ khóa – BT: biểu thức nguyên 24/08/2016 26 13 24/08/2016 Tiến trình thực Tính giá trị BT, gọi V Nếu V = Hằng_K lệnh Lệnh K_1, Lệnh K_2 … thực đến gặp break kết thúc switch … Nếu V Hằng_K có default lệnh Lệnh N+1_1, Lệnh N+1_2 … thực 24/08/2016 27 Ví dụ • Viết chương trình cho phép: – Nhập vào số: a, b ; – Một phép toán pt (số học: +, -, *, /); – Tính giá trị a pt b – Ví dụ: a = 4, b = pt = ‘+’ a pt b = 11 24/08/2016 28 14 24/08/2016 24/08/2016 29 ???? • Thay nhập vào: – số a, b phép pt – tính a pt b • Có thể nhập vào biểu thức – a pt b – Ví dụ + (hoặc 3*(2+5) …) – Rồi tính giá trị biểu thức ??? 24/08/2016 30 15 24/08/2016 Ví dụ • In số ngày tháng năm (dương lịch), ví dụ nhập vào tháng in 31 (ngày) • Biết rằng: – Tháng 1,3,5,7,8,10,12 có 31 ngày – Tháng 4,6,9,11 có 30 ngày – Tháng có 28 29 ngày – Viết chương trình dùng switch (10 phút) 24/08/2016 31 24/08/2016 32 16 24/08/2016 Ví dụ • Tên năm âm lịch cấu tạo từ hai thành phần can chi, ví dụ năm 2010 tương ứng với năm âm lịch Canh Dần Canh can Dần chi • Có tất 10 can Giáp, Ất, Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý • Và 12 chi Tí, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi 24/08/2016 33 Ví dụ … • Viết chương trình cho phép nhập vào năm dương lịch (ví dụ 2015), đưa tên âm lịch tương ứng năm • Ví dụ: – 2016 : Bính Thân – 2017: Đinh Dậu – 2018: Mậu Tuất –… 24/08/2016 34 17 24/08/2016 Ví dụ … Ý tưởng … … … 24/08/2016 35 Một số lưu ý • BT: kiểu nguyên • Hằng_1, Hằng_2 … Hằng_N: kiểu nguyên 24/08/2016 36 18 24/08/2016 Một số lưu ý … • Đoạn chương trình Hiển thị thơng báo lỗi 24/08/2016 37 Một số lưu ý … • Khi BT có giá trị Hằng_K, chương trình thực Lệnh K_1 đến gặp break (hoặc kết thúc lệnh switch) • Chương trình Kết 24/08/2016 38 19 24/08/2016 Bài tập 24/08/2016 39 Bài tập Viết chương trình tìm số lớn 10 số Viết chương trình tính giá điện sinh hoạt theo qui tắc nêu tập tuần biết số điện tiêu thụ giá trung bình Viết chương trình cho biết tên âm lịch (dạng can/chi) năm dương lịch 24/08/2016 40 20 24/08/2016 Bài tập nhà Việc khai báo biến a, b khối lệnh cha ảnh hưởng đến biến a, b khối lệnh ví dụ sile 10 Nếu khơng có lệnh fflush(stdin); chương trình ví dụ (dịng 7) chương trình hoạt động nào? Tại sao? Ký hiệu (float) câu lệnh thuong = (float) so1/so2; chương trình ví dụ (dịng 17) có ý nghĩa gì? Tại sao? 24/08/2016 41 Bài tập nhà … Viết chương trình cho phép nhập vào tháng/năm, cho biết số ngày tháng/năm năm Biết rằng: – Tháng năm khơng nhuận có 28 ngày, năm nhuận có 29 ngày – Những năm không chia hết cho năm chẵn kỷ không chia hết cho 400 năm khơng nhuận, ví dụ năm 1996, 2000 năm nhuận; năm 1900 hay 2002 không nhuận 24/08/2016 42 21 24/08/2016 Bài tập nhà … Viết chương trình tính số ngày tính từ ngày bắt đầu (NBD) đến ngày kết thúc (NKT) Ví dụ NBD = 1/8/2016 NKT = 20/8/2016 số ngày tính 20 (NBD=1/8/1916 NKT = 1/8/2016 số ngày ????) A, B, C M điểm mặt phẳng Viết chương trình kiểm tra xem M có nằm tam giác ABC hay không? 24/08/2016 43 22 ... 24/08/2016 10 24/08/2016 Điều khiển chọn (Selection) 24/08/2016 11 Yêu cầu xử lý đặt • Lựa chọn khả Ví dụ: Giải phương trình bậc a.x + b = Lựa chọn 1: a -> nghiệm x = -b/a; Lựa chọn 2: a=0 -> vơ nghiệm/vơ... nghịc đảo 1/a Viết chương trình nhập vào số a, in số nghịch đảo hình 24/08/2016 17 Ví dụ • Tìm số lớn số a, b, c Yêu cầu: – Trình bày thuật tốn (Bài tập tuần 1) – Viết chương trình (10 phút) 24/08/2016... 24/08/2016 Bài tập 24/08/2016 39 Bài tập Viết chương trình tìm số lớn 10 số Viết chương trình tính giá điện sinh hoạt theo qui tắc nêu tập tuần biết số điện tiêu thụ giá trung bình Viết chương trình