Kỹ thuật lập trình - Tuần 2: Điều khiển chọn
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
22 trang |
Chia sẻ: huyhoang44 | Lượt xem: 676 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Kỹ thuật lập trình - Tuần 2: Điều khiển chọn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
24/08/2016
1
Tuần 2 - Điều khiển chọn
Giáo viên: Hà Đại Dương
duonghd@mta.edu.vn
Kỹ thuật lập trình
24/08/2016 1
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 đó.
24/08/2016 2
24/08/2016
2
Nội dung
1. Tuần tự (Sequential)
2. Lệnh if .. else
3. Lệnh switch
4. Bài tập
24/08/2016 3
Tuần tự
(Sequential)
24/08/2016 4
24/08/2016
3
Trên/dưới
• Chương trình
24/08/2016 5
Trước/sau
• Chương trình
24/08/2016 6
24/08/2016
4
Khối lệnh
• Các lệnh nằm giữa cặp dấu { }
• Ví dụ
24/08/2016 7
Khối lệnh lồng nhau
• Ví dụ
24/08/2016 8
24/08/2016
5
Khai 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ó.
24/08/2016 9
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 ???
24/08/2016 10
24/08/2016
6
Điều khiển chọn
(Selection)
24/08/2016 11
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
24/08/2016 12
24/08/2016
7
Lệnh if ... else
24/08/2016 13
Ý nghĩa, cú pháp
• Ý nghĩa: Cho phép lựa chọn 1 trong hai khả
năng
• Cú pháp: or
• Trong đó
– if, else: từ khóa
– BTLG: là 1 biểu thức logic
(cho giá trị đúng hoặc sai)
24/08/2016 14
24/08/2016
8
• Nếu BTLG có 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
thực hiện
Dạng 1
24/08/2016 15
• Nếu BTLG có giá trị là đúng (1)
thì các lệnh Lệnh 1_1, Lệnh 1_2
được thực hiện
• Và nếu BTLG có giá trị sai (0)
thì các lệnh Lệnh 2_1, Lệnh 2_2
được thực hiện
Dạng 2
24/08/2016 16
24/08/2016
9
Ví 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.
24/08/2016 17
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)
24/08/2016 18
24/08/2016
10
Ví dụ 3
• In số ngày của tháng trong năm (dương lịch),
ví dụ nhập vào tháng 8 thì in ra là 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 2 có 28 hoặc 29 ngày.
– Viết chương trình(10 phút)
24/08/2016 19
24/08/2016 20
24/08/2016
11
Ví 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).
– Viết chương trình (10 phút)
24/08/2016 21
Một số lưu ý
• Sau if và else nên dùng khối lệnh để tránh
nhầm lẫn. Ví dụ xét đoạn lệnh sau:
24/08/2016 22
so1 = -1, so2 = 2, so3 = 3 a = ???
so1 = 1, so2 = 2, so3 = 3 a = ???
Khi không rõ ràng, mệnh đề else
được hiểu là đi với if gần nhất.
24/08/2016
12
Một số lưu ý
• Sau if và else nê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:
24/08/2016 23
Một số lưu ý
• Sai lỗi cú pháp
• Sai lỗi logic
24/08/2016 24
24/08/2016
13
Lệnh switch
24/08/2016 25
Ý nghĩa, cú pháp
• Ý nghĩa: Lựa chọn 1 (1 số )
trong nhiều khả năng.
• Cú pháp:
• Trong đó:
– switch, case, break, default:
các từ khóa
– BT: biểu thức nguyên
24/08/2016 26
24/08/2016
14
Tiế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
3. Nếu V Hằng_K và có default
thì các lệnh Lệnh N+1_1,
Lệnh N+1_2 được thực hiện
24/08/2016 27
Ví dụ 5
• Viết chương trình cho phép:
– Nhập vào 2 số: a, b ;
– Một phép toán pt (số học: +, -, *, /);
– Tính giá trị của a pt b
– Ví dụ: a = 4, b = 7 và pt = ‘+’
thì a pt b = 11
24/08/2016 28
24/08/2016
15
24/08/2016 29
????
• Thay vì nhập vào:
– 2 số a, b và phép pt
– rồi tính a pt b
• Có thể nhập vào biểu thức
– a pt b
– Ví dụ 3 + 2 (hoặc 3*(2+5) )
– Rồi tính giá trị của biểu thức đó ???
24/08/2016 30
24/08/2016
16
Ví dụ 6
• In số ngày của tháng trong năm (dương lịch),
ví dụ nhập vào tháng 8 thì in ra là 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 2 có 28 hoặc 29 ngày.
– Viết chương trình dùng switch (10 phút)
24/08/2016 31
24/08/2016 32
24/08/2016
17
Ví 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.
24/08/2016 33
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 đó.
• Ví dụ:
– 2016 : Bính Thân
– 2017: Đinh Dậu
– 2018: Mậu Tuất
–
24/08/2016 34
24/08/2016
18
Ví dụ 7
Ý tưởng
1.
2.
3.
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
24/08/2016
19
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ị 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ả
24/08/2016 38
24/08/2016
20
Bài tập
24/08/2016 39
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.
24/08/2016 40
24/08/2016
21
Bài tập về nhà
1. Việc khai báo 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 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?
24/08/2016 41
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:
– Tháng 2 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 4 hoặc những
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.
24/08/2016 42
24/08/2016
22
Bài tập về nhà
5. 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 và NKT = 20/8/2016 thì số
ngày tính được là 20 (NBD=1/8/1916 và NKT
= 1/8/2016 thì số ngày là ????).
6. 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?
24/08/2016 43
Các file đính kèm theo tài liệu này:
- tuan_02_dieu_khien_chon_8024.pdf