Tin học 10 (Tích hợp NLS) – Bài 19. Câu lệnh rẽ nhánh If

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.

Tin học 10 Bài 19 Câu lệnh điều kiện dạng đủ

Để 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ĩaVí dụ
(với a = 10, b = 3)
Kết quả
>Lớn hơna > 10False
<Nhỏ hơnb < 3False
>=Lớn hơn hoặc bằnga >= 10True
<=Nhỏ hơn hoặc bằngb <= 3True
==Bằng nhaua == 10True
!=Khác nhaub != 3False

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 rẽ nhánh if

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>
câu lệnh rẽ nhánh if

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:
    1. Nhập chỉ số điện tiêu thụ k.
    2. Sử dụng cấu trúc if-else lồng nhau hoặc liên tiếp để xác định mức giá.
    3. 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

Thời gian làm bài: 30 phút
Đáp án hiển thị sau khi nộp bài
Câu hỏi sẽ được hiển thị ngẫu nhiên
Vui lòng nhập họ và tên để bắt đầu làm bài

NB

Trong Python, một biểu thức logic chỉ có thể nhận một trong hai giá trị nào sau đây?

NB

Để so sánh bằng hai giá trị trong Python, ta sử dụng phép toán nào?

TH

Cho biểu thức 15 > 2 * 7. Biểu thức này trả về giá trị gì?

TH

Cho s = "number". Biểu thức s == "Number" trả về giá trị gì?

NB

Phép toán logic and trả về giá trị True khi nào?

TH

Cho x = 10. Biểu thức x < 5 or x > 8 trả về giá trị gì?

TH

Cho b = True. Biểu thức not b trả về giá trị gì?

VD

Cho x = 12. Biểu thức (x % 3 == 0) and (x % 4 == 0) trả về giá trị gì?

NB

Ký tự nào bắt buộc phải có ở cuối dòng lệnh if <điều kiện> trong Python?

NB

Các câu lệnh nằm trong khối lệnh của if phải được viết như thế nào so với lề?

TH

Cho đoạn mã sau:
x = 5
if x < 10:
 x = x + 1
print(x)

Kết quả in ra màn hình là gì?

VD

Đâu là đoạn mã if được viết đúng cú pháp trong Python?

NB

Trong cấu trúc if-else, khối lệnh sau else sẽ được thực thi khi nào?

TH

Cho đoạn mã sau:
a = 10
b = 7
if a > b:
 print(a - b)
else:
 print(b - a)

Kết quả in ra màn hình là gì?

VD

Để kiểm tra một số tự nhiên n có phải là số chẵn hay không, biểu thức điều kiện nào sau đây là đúng nhất?

VD

Một công ty điện lực quy định giá bán điện sinh hoạt theo hình thức luỹ kế (bậc thang) như sau:
Bậc 1: 50 kWh đầu tiên có giá 1.678 đồng/kWh.
Bậc 2: Lượng điện từ kWh thứ 51 đến 100 có giá 1.734 đồng/kWh.
Bậc 3: Lượng điện từ kWh thứ 101 trở lên có giá 2.014 đồng/kWh.
Công thức nào dưới đây tính đúng tổng số tiền phải trả cho một hộ gia đình đã tiêu thụ 120 kWh điện trong tháng?

Xét đoạn chương trình Python sau dùng để kiểm tra một số có phải là số dương và chia hết cho 5 hay không:
n = 20
if n > 0 and n % 5 == 0:
    print("n là số dương và chia hết cho 5")

Dưới đây là các nhận xét về đoạn chương trình trên.

NB Biến n được gán giá trị khởi tạo là một số nguyên.

TH Biểu thức điều kiện n > 0 and n % 5 == 0 trả về giá trị True.

TH Nếu thay n = 12, chương trình sẽ không in ra thông báo nào cả.

VD Đoạn mã trên sẽ báo lỗi cú pháp vì có hai điều kiện trong cùng một câu lệnh if.

Một cửa hàng đưa ra chương trình khuyến mãi như sau: nếu tổng giá trị đơn hàng từ 500.000 đồng trở lên thì khách hàng sẽ được giảm giá 10%, ngược lại thì không được giảm. Xét đoạn chương trình sau:
don_hang = 600000
if don_hang >= 500000:
    thanh_toan = don_hang * 0.9
else:
    thanh_toan = don_hang
print(thanh_toan)

Dưới đây là các nhận xét về đoạn chương trình trên.

NB Biến don_hang lưu trữ giá trị đơn hàng trước khi giảm giá.

TH Chương trình sẽ thực thi khối lệnh sau if vì điều kiện don_hang >= 500000 là đúng.

VD Kết quả in ra màn hình của chương trình sẽ là 540000.0.

VD Nếu giá trị của don_hang là 490000, giá trị của biến thanh_toan sẽ là 441000.0.

Xét bài toán xác định năm nhuận với điều kiện: một năm n là năm nhuận nếu n chia hết cho 400, hoặc (n chia hết cho 4 và không chia hết cho 100). Biểu thức điều kiện trong Python là: (n % 400 == 0) or (n % 4 == 0 and n % 100 != 0).
Dưới đây là các nhận xét liên quan đến bài toán.

TH Năm 2000 là năm nhuận vì thỏa mãn điều kiện n % 400 == 0.

VD Năm 1900 không phải là năm nhuận.

TH Biểu thức điều kiện cho năm 2023 (n=2023) sẽ trả về giá trị True.

VD Để kiểm tra một năm có phải năm nhuận hay không, chỉ cần xét điều kiện n % 4 == 0 là đủ.

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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *