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.
Trang 1Tuần 2 - Điều khiển chọn
Giáo viên: Hà Đại Dươngduonghd@mta.edu.vn
Kỹ thuật lập trình
Bài trước …
• Thuật toán được thiết kế dựa trên ba cấu trúc
logic về thứ tự thực hiện câu lệnh sau đây:
– Tuần tự (Sequential): Các công việc (lệnh) được
thực hiện một cách tuần tự, công việc này nối tiếp
công việc kia (từ trên xuống dưới).
– Lựa chọn (Selection) : Lựa chọn một công việc (lệnh)
để thực hiện căn cứ vào một điều kiện nào đó.
– Lặp (Repeating): Thực hiện lặp lại một công việc
(lệnh) không hoặc nhiều lần căn cứ vào một điều
kiện nào đó.
Trang 5Khai báo biến
• Trong 1 khối lệnh có thể khai báo biến, ví dụ
• Phạm vi tác động của biến: Trong khối lệnh và
các khối con của nó
Khai báo biến trùng tên
• Với khai báo biến như ví dụ sau:
• Khối lệnh cha khai báo 4 biến: a, b, c, d
• Khối lệnh con khai báo a, b trùng với khối cha
• Biến a, b của khối lệnh cha ảnh hưởng thế nào
đến biến a, b của khối lệnh con ???
Trang 6Điều khiển chọn (Selection)
Yêu cầu xử lý đặt ra
• Lựa chọn 1 trong 2 khả năng
Ví dụ: Giải phương trình bậc nhất a.x + b = 0
Lựa chọn 1: a 0 -> nghiệm x = -b/a;
Lựa chọn 2: a=0 -> vô nghiệm/vô số nghiệm.
• Lựa chọn 1 trong 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ứ 2
…
Lựa chọn 8: T=CN -> Lịch ngày chủ nhật
Trang 8• Nếu BTLGcó giá trị là đúng (1)
thì các lệnh Lệnh 1, Lệnh 2 …
được thực hiện
• Và nếu BTLG có giá trị sai (0)
thì không có công việc nào được
Trang 9Ví dụ 1
• Số a0 có nghịc đảo là 1/a Viết chương trình
nhập vào số a, in số nghịch đảo của nó ra màn
hình
Ví dụ 2
• Tìm số lớn nhất trong 3 số a, b, c Yêu cầu:
– Trình bày thuật toán (Bài tập trong tuần 1).
– Viết chương trình (10 phút)
Trang 11Ví dụ 4
• Giải hệ bậc nhất
a.x + b.y - c = 0 d.x + e.y - f = 0
– Trình bày thuật toán (Bài tập trong tuần 1).
so1 = -1, so2 = 2, so3 = 3 a = ???
so1 = 1, so2 = 2, so3 = 3 a = ???
Trang 12Một số lưu ý …
• Sau ifvà elsenên dùng khối lệnh để tránh
nhầm lẫn Muốn else là của if thứ nhất ta nên
dùng khối lệnh như sau:
Trang 14Tiến trình thực hiện
1 Tính giá trị của BT, gọi là V
2 Nếu V= Hằng_K các lệnh
Lệnh K_1 , Lệnh K_2 …
được thực hiện đến khi gặp
break hoặc kết thúc switch
Trang 17Ví dụ 7
• Tên của năm âm lịch được cấu tạo từ hai
thành phần là can và chi, ví dụ năm 2010
tương ứng với năm âm lịch là Canh Dần trong
đó Canh là can và Dần là chi
• Có tất cả 10 can là Giáp, Ất, Bính, Đinh, Mậu,
Kỷ, Canh, Tân, Nhâm, Quý
• Và 12 chi là Tí, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ,
Mùi, Thân, Dậu, Tuất, Hợi
Ví dụ 7 …
• Viết chương trình cho phép nhập vào một
năm dương lịch (ví dụ 2015), hãy đưa ra tên
âm lịch tương ứng của năm đó
Trang 19• Khi BTcó giá trị bằng Hằng_K, chương trình thực
hiện Lệnh K_1 đến khi gặp break (hoặc kết thúc lệnh
switch)
• Chương trình Kết quả
Trang 20Bài tập
Bài tập
1 Viết chương trình tìm số lớn nhất trong 10 số
2 Viết chương trình tính giá điện sinh hoạt theo
qui tắc nêu ra trong bài tập tuần 1 khi biết số
điện tiêu thụ và giá trung bình
3 Viết chương trình cho biết tên âm lịch (dạng
can/chi) của một năm dương lịch
Trang 21Bài tập về nhà
1 Việc khai báo biến a, bcủa khối lệnh cha ảnh
hưởng thế nào đến biến a, bcủa khối lệnh
con trong ví dụ ở sile 10
2 Nếu không có lệnh fflush(stdin); trong
chương trình của ví dụ 5 (dòng 7) chương
trình hoạt động như thế nào? Tại sao?
3 Ký hiệu (float) trong câu lệnh thuong = (float)
so1/so2;chương trình của ví dụ 5 (dòng 17)
có ý nghĩa gì? Tại sao?
Bài tập về nhà …
4 Viết chương trình cho phép nhập vào
tháng/năm, hãy cho biết số ngày của
tháng/năm đó trong năm Biết rằng:
nhuận có 29 ngày
năm chẵn thế kỷ nhưng không chia hết cho 400
là năm không nhuận, ví dụ các năm 1996, 2000 là
năm nhuận; các năm 1900 hay 2002 không
nhuận.
Trang 226 A, B, C và M là các điểm trên mặt phẳng Viết
chương trình kiểm tra xem M có nằm trong
tam giác ABC hay không?