Mục tiêu bài học
- Kiến thức:
- Biết và trình bày được các phép toán với kiểu dữ liệu logic.
- Trình bày và hiểu được cấu trúc rẽ nhánh và câu lệnh if.
- Kĩ năng:
- Sử dụng được lệnh rẽ nhánh if trong lập trình để giải quyết các bài toán đơn giản.
- Phẩm chất:
- Hình thành ý thức trách nhiệm, tính cẩn thận khi làm việc nhóm.
- Rèn luyện phẩm chất làm việc chăm chỉ, chuyên cần để hoàn thành nhiệm vụ.
Năng lực số tích hợp
Bài học này góp phần phát triển các năng lực số sau theo Phụ lục khung năng lực số:
- 3.4.NC1 (Lập trình): Tự thao tác được bằng các hướng dẫn dành cho hệ thống máy tính (viết mã Python) để giải quyết một vấn đề cụ thể (bài toán rẽ nhánh).
- 5.3.NC1 (Sử dụng sáng tạo công nghệ số): Áp dụng xử lý nhận thức của cá nhân để giải quyết các vấn đề khái niệm và tình huống có vấn đề trong môi trường số (chuyển đổi tư duy lôgic đời sống thành mã lệnh máy tính).
Hoạt động khởi động
Trong cuộc sống, chúng ta thường xuyên đứng trước những lựa chọn phụ thuộc vào một điều kiện nào đó. Ví dụ: “Nếu ngày mai trời không mưa thì em sẽ đi chơi, ngược lại thì em sẽ ở nhà làm bài tập”.
Tình huống này mô tả một cấu trúc “rẽ nhánh”. Trong lập trình, chúng ta sử dụng câu lệnh if để mô tả những cấu trúc như vậy.

Để sử dụng được lệnh if, trước hết chúng ta cần tìm hiểu về “điều kiện”, hay còn gọi là biểu thức logic.
1. Biểu thức logic
Biểu thức logic là biểu thức chỉ nhận một trong hai giá trị: True (đúng) hoặc False (sai).
- Ví dụ:
a > 10,b < 3,s == "number"
Biểu thức nào sau đây có thể đưa vào vị trí <điều kiện> trong lệnh: Nếu <điều kiện> thì <lệnh> của các ngôn ngữ lập trình bậc cao?
A. m, n = 1, 2.
B. a + b > 1.
C. a*b<a+b.
D. 12 + 15 > 2 * 13.5 > 2 * 13.
Các biểu thức có thể đưa vào vị trí <điều kiện> là các biểu thức logic, tức là các biểu thức trả về giá trị Đúng (True) hoặc Sai (False). Do đó, các phương án phù hợp là B, C, và D.
Các phép so sánh: Python cung cấp các phép toán để so sánh các giá trị số và xâu kí tự, kết quả trả về là True hoặc False.
| Phép toán | Ý nghĩa | Ví dụ (với a = 10, b = 3) | Kết quả |
|---|---|---|---|
| > | Lớn hơn | a > 10 | False |
| < | Nhỏ hơn | b < 3 | False |
| >= | Lớn hơn hoặc bằng | a >= 10 | True |
| <= | Nhỏ hơn hoặc bằng | b <= 3 | True |
| == | Bằng nhau | a == 10 | True |
| != | Khác nhau | b != 3 | False |
Các phép toán logic: Dùng để kết hợp nhiều biểu thức logic.
and (và): Trả về True chỉ khi cả hai biểu thức đều True.
or (hoặc): Trả về True nếu ít nhất một trong hai biểu thức là True.
not (phủ định): Đảo ngược giá trị của biểu thức (True thành False và ngược lại).
Câu hỏi củng cố
Mỗi biểu thức sau có giá trị True hay False?
a) 100%4 == 0
b) 111//5 != 20 or 20%3 != 0
a) True (100 chia hết cho 4).
b) True (Vì 111//5 = 22, khác 20 là đúng. Vế sau không cần xét vì phép toán là or).
2. Lệnh IF
Lệnh if được sử dụng để xử lý các tình huống rẽ nhánh trong chương trình.
Em có nhận xét gì về cấu trúc lệnh if? Sau <điều kiện> lệnh if có kí tự gì? Lệnh print() được viết như thế nào?
Sau <điều kiện> của lệnh if luôn có dấu hai chấm :. Các lệnh bên trong khối if (ví dụ lệnh print()) phải được viết lùi vào và thẳng hàng (mặc định là 1 tab hoặc 4 dấu cách).
Câu lệnh điều kiện dạng thiếu:
Chỉ thực hiện một khối lệnh nếu điều kiện đúng và bỏ qua nếu điều kiện sai.
Cú pháp:
if <điều kiện>:
<khối lệnh>
Câu lệnh điều kiện dạng đủ:
Thực hiện <khối lệnh 1> nếu điều kiện đúng, ngược lại thì thực hiện <khối lệnh 2>.
Cú pháp:
if <điều kiện>:
<khối lệnh 1>
else:
<khối lệnh 2>
Lưu ý quan trọng:
- Các từ khóa if và else phải được viết thẳng lề.
- Sau <điều kiện> và else luôn có dấu hai chấm :.
- Các khối lệnh bên trong if và else phải được viết lùi vào và thẳng hàng.
Câu hỏi củng cố
Đoạn chương trình sau thực hiện công việc gì?
k = int(input("Nhập một số nguyên dương: "))
if k <= 0:
print("Bạn nhập sai rồi!")Chương trình yêu cầu người dùng nhập một số nguyên dương và gán vào biến k. Sau đó, chương trình kiểm tra nếu giá trị của k nhỏ hơn hoặc bằng 0, thì sẽ thông báo "Bạn nhập sai rồi!". Đây là một cách để kiểm tra dữ liệu đầu vào có hợp lệ hay không.
Phát triển năng lực số
Mục tiêu: Thực hành tư duy thuật toán và lập trình giải quyết bài toán thực tế (Tính tiền điện bậc thang) – Năng lực 3.4.NC1.
- Yêu cầu: Viết chương trình tính tiền điện sinh hoạt cho gia đình dựa trên số kWh tiêu thụ.
- Mức 1 (0 – 50 kWh): 1.678 đồng/kWh.
- Mức 2 (51 – 100 kWh): 1.734 đồng/kWh (cho phần vượt quá 50).
- Mức 3 (trên 100 kWh): 2.014 đồng/kWh (cho phần vượt quá 100).
- Hướng dẫn thực hiện:
- Nhập chỉ số điện tiêu thụ k.
- Sử dụng cấu trúc if-else lồng nhau hoặc liên tiếp để xác định mức giá.
- Tính toán tổng tiền t dựa trên công thức lũy tiến.
k = float(input("Nhập số kwh tiêu thụ điện nhà em: "))
if k <= 50:
t = k * 1.678
else:
if k <= 100:
t = 50 * 1.678 + (k - 50) * 1.734
else:
t = 50 * 1.678 + 50 * 1.734 + (k - 100) * 2.014
print("Số tiền điện phải trả là:", round(t), "nghìn đồng")- Kết quả mong đợi: Học sinh nhập vào số kWh (ví dụ: 105) và chương trình in ra chính xác số tiền cần trả theo cách tính lũy tiến (không phải nhân toàn bộ với mức giá cao nhất). Qua đó, học sinh hiểu được ứng dụng của tin học trong quản lý chi tiêu đời sống.
Luyện tập
1. Viết biểu thức logic ứng với mỗi câu sau:
a) Số x nằm trong khoảng (0; 10).
b) Số y nằm ngoài đoạn [1; 2].
c) Số z nằm trong đoạn [0; 1] hoặc [5; 10].
a) x > 0 and x < 10
b) y < 1 or y > 2
c) (0 <= z <= 1) or (5 <= z <= 10)
2. Tìm một vài giá trị m, n thoả mãn các biểu thức sau:
a) 100%m == 0 and n%5 != 0
b) m%100 == 0 and m%400 != 0
c) n%3 == 0 or (n%3 != 0 and n%4 == 0)
a) m là ước của 100, n không chia hết cho 5. Ví dụ: m = 10, n = 9.
b) m chia hết cho 100 nhưng không chia hết cho 400. Ví dụ: m = 100, 200, 300, 500.
c) n chia hết cho 3, hoặc n không chia hết cho 3 nhưng chia hết cho 4. Ví dụ: n = 3, 4, 6, 8.
Vận dụng
1. Giá bán cam tại siêu thị tính như sau: nếu khối lượng cam mua dưới 5 kg thì giá bán là 12 000 đồng/kg, nếu khối lượng mua lớn hơn hoặc bằng 5 kg thì giá bán là 10 000 đồng/kg. Viết chương trình nhập số lượng mua (tính theo kg) sau đó tính số tiền phải trả.
# Nhập số lượng cam đã mua, có thể là số lẻ
c = float(input("Nhập số lượng cam đã mua (tính theo kg): "))
# Tính và in số tiền phải trả
if c < 5:
so_tien = c * 12000
print("Số tiền phải trả là:", so_tien, "đồng")
else:
so_tien = c * 10000
print("Số tiền phải trả là:", so_tien, "đồng")2. Năm n là năm nhuận nếu giá trị n thoả mãn điều kiện: n chia hết cho 400 hoặc (n chia hết cho 4 đồng thời không chia hết cho 100). Viết chương trình nhập số năm n và cho biết năm n có phải là nhuận hay không.
# Nhập số năm từ người dùng
year = int(input("Nhập số năm: "))
# Kiểm tra điều kiện năm nhuận
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
print(year, "là năm nhuận")
else:
print(year, "không là năm nhuận")Câu hỏi trắc nghiệm tin học 10 bài 19 - Câu lệnh rẽ nhánh If
Bảng xếp hạng
| Hạng | Họ tên | Điểm số | Thời gian |
|---|---|---|---|
| 1 |
Nguyễn Đức Bảo Ngọc 10A
1 lần thi
|
10.00 / 10.00
|
1 phút 1 giây |
| 2 |
Đặng Kiều Trang Nghi ngờ
2 lần thi
|
10.00 / 10.00
|
2 phút 9 giây |
| 3 |
Đặng Kiều Trang 10A Nghi ngờ
3 lần thi
|
10.00 / 10.00
|
2 phút 38 giây |
| 4 |
Trần Minh Toàn 10A
2 lần thi
|
10.00 / 10.00
|
3 phút 57 giây |
| 5 |
ÔnTap Nghi ngờ
2 lần thi
|
10.00 / 10.00
|
4 phút 0 giây |
| 6 |
ngoikebentrumwibu10A Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
7 phút 24 giây |
| 7 |
Phan Gia Hào 10A
1 lần thi
|
10.00 / 10.00
|
9 phút 43 giây |
| 8 |
Võ Minh Triết
1 lần thi
|
10.00 / 10.00
|
10 phút 22 giây |
| 9 |
Nguyễn Gia Nguyễn 10A Nghi ngờ
3 lần thi
|
9.75 / 10.00
|
2 phút 45 giây |
| 10 |
Toàn Phú Nghi ngờ
1 lần thi
|
9.75 / 10.00
|
4 phút 27 giây |
| 11 |
Xuân Lan 10A
2 lần thi
|
9.50 / 10.00
|
2 phút 2 giây |
| 12 |
Trang
1 lần thi
|
9.50 / 10.00
|
10 phút 11 giây |
| 13 |
gbinh 10A Nghi ngờ
2 lần thi
|
8.75 / 10.00
|
5 phút 7 giây |
| 14 |
Vũ BÌNH Minh
1 lần thi
|
8.25 / 10.00
|
8 phút 8 giây |
| 15 |
LE huynh ngoc khanh
1 lần thi
|
8.00 / 10.00
|
3 phút 56 giây |
| 16 |
okki
1 lần thi
|
8.00 / 10.00
|
16 phút 48 giây |
| 17 |
HELLO
1 lần thi
|
8.00 / 10.00
|
61 phút 47 giây |
| 18 |
vi Nghi ngờ
1 lần thi
|
7.50 / 10.00
|
2 phút 3 giây |
| 19 |
Nguyễn Gia Nguyễn Nghi ngờ
1 lần thi
|
7.00 / 10.00
|
11 phút 44 giây |
| 20 |
Lâm Nguyễn Tuấn Khang Nghi ngờ
1 lần thi
|
7.00 / 10.00
|
13 phút 15 giây |
| 21 |
Dương Nhã Kỳ
1 lần thi
|
6.75 / 10.00
|
8 phút 28 giây |
| 22 |
tran phu thinh Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
12 phút 8 giây |
| 23 |
phuoc Nghi ngờ
3 lần thi
|
6.00 / 10.00
|
1 phút 21 giây |
| 24 |
nhat
3 lần thi
|
5.75 / 10.00
|
3 phút 32 giây |
| 25 |
Bùi trần đại nhân lớp 10a
7 lần thi
|
5.50 / 10.00
|
1 phút 14 giây |
| 26 |
Thành 10A Nghi ngờ
1 lần thi
|
5.50 / 10.00
|
3 phút 17 giây |
| 27 |
tvi Nghi ngờ
1 lần thi
|
5.50 / 10.00
|
3 phút 20 giây |
| 28 |
Nhật
3 lần thi
|
5.25 / 10.00
|
2 phút 33 giây |
| 29 |
Nguyễn Minh Trí 10C2
1 lần thi
|
5.25 / 10.00
|
6 phút 35 giây |
| 30 |
nguyenminhdanh Nghi ngờ
1 lần thi
|
4.75 / 10.00
|
3 phút 46 giây |
| 31 |
Kim Ngân
1 lần thi
|
4.25 / 10.00
|
5 phút 18 giây |
| 32 |
bùi trần đại nhân lớp 10a Nghi ngờ
7 lần thi
|
4.25 / 10.00
|
8 phút 28 giây |
| 33 |
Võ Tường Vi Nghi ngờ
1 lần thi
|
3.50 / 10.00
|
3 phút 3 giây |
| 34 |
nguyễnn minh danh Nghi ngờ
1 lần thi
|
3.25 / 10.00
|
6 phút 42 giây |



