Các em thân mến, ở bài học trước, chúng ta đã thành công trong việc “dạy” máy tính cách ghi nhớ thông tin bằng những “chiếc hộp” biến. Nhưng nếu chỉ biết ghi nhớ, chương trình của chúng ta sẽ rất thụ động, giống như một cuốn sổ ghi chép tĩnh. Cuộc sống luôn vận động, dữ liệu luôn thay đổi. Làm thế nào để chương trình của chúng ta có thể “hành động”? Làm sao để nó có thể tính toán, cập nhật và quan trọng nhất là “so sánh” các thông tin với nhau? Bài học hôm nay sẽ trao cho các em bộ “công cụ” đầu tiên để biến những dữ liệu tĩnh thành những thực thể sống động, có khả năng tương tác với nhau.
Mục tiêu bài học:
- Sử dụng thành thạo các toán tử số học (
+,-,*,/, ..) để thực hiện các phép tính. - Hiểu và áp dụng các toán tử gán (
=,+=,-=) để cập nhật giá trị của biến một cách hiệu quả. - Làm chủ các toán tử so sánh (
==,!=,>,<,>=,<=) để “hỏi” máy tính những câu hỏi logic. - Nhận biết được kết quả của một phép so sánh luôn là một giá trị đặc biệt:
True(Đúng) hoặcFalse(Sai).
1. Bối cảnh thực tế: Tính điểm trong Game
Hãy tiếp tục với nhân vật “Aria” của chúng ta. Trong một màn chơi, điểm số của Aria liên tục thay đổi:
- Bắt đầu màn chơi với 100 điểm.
- Nhặt được một “Đồng xu vàng”, được cộng 50 điểm.
- Dẫm phải một cái bẫy, bị trừ 20 điểm.
- Cuối màn, cần phải có trên 200 điểm để qua cửa.
Làm thế nào để chúng ta mô tả quá trình này bằng code? Chúng ta cần đến các “phép thuật” mang tên Toán tử.
2. Kiến thức cốt lõi: Bộ công cụ đa năng
2.1. Toán tử Số học: Công cụ tính toán
Đây là những người bạn rất quen thuộc, dùng để thực hiện các phép toán cơ bản.
+(Cộng),-(Trừ),*(Nhân),/(Chia)- ‘ký hiệu phần trăm’ (Chia lấy dư – Modulo): Rất hữu dụng! Ví dụ:
10 'ký hiệu phần trăm‘3sẽ bằng1(vì 10 chia 3 được 3 dư 1). **(Lũy thừa): Ví dụ:2 ** 3sẽ bằng8(2 mũ 3).
2.2. Toán tử Gán: Cập nhật giá trị
Chúng ta đã biết toán tử = dùng để gán giá trị ban đầu. Nhưng khi cần cập nhật, chúng ta có những “đường tắt” rất tiện lợi.
- Thay vì viết:
diem_so = diem_so + 50 - Ta có thể viết gọn hơn:
diem_so += 50(nghĩa là: lấy giá trị hiện tại củadiem_socộng thêm 50 rồi gán lại cho chính nó). - Tương tự, ta có
-=,*=,/=.
2.3. Toán tử So sánh: Người phán xử Đúng/Sai
Đây là nhóm toán tử cực kỳ quan trọng, là nền tảng cho việc ra quyết định. Chúng không tạo ra một con số, mà luôn trả về True hoặc False.
==(Bằng): So sánh xem hai giá trị có bằng nhau không. Cực kỳ lưu ý:==(so sánh) khác hoàn toàn với=(gán giá trị). Đây là lỗi sai kinh điển của người mới bắt đầu!!=(Không bằng)>(Lớn hơn),<(Nhỏ hơn)>=(Lớn hơn hoặc bằng),<=(Nhỏ hơn hoặc bằng)
3. Thực hành trên Colab: Cùng Aria vượt qua thử thách
Hãy cùng nhau viết lại câu chuyện của Aria bằng code. Hãy tự gõ lại, đừng sao chép!
# Khởi tạo điểm số ban đầu
diem_so = 100
print("Điểm số ban đầu của Aria:", diem_so)
# Aria nhặt được đồng xu vàng
print("Aria nhặt được đồng xu vàng! +50 điểm")
diem_so += 50 # Cập nhật điểm số
print("Điểm số hiện tại:", diem_so)
# Aria dẫm phải bẫy
print("Aria dẫm phải bẫy! -20 điểm")
diem_so -= 20
print("Điểm số hiện tại:", diem_so)
# --- Bây giờ, hãy dùng toán tử so sánh để kiểm tra ---
diem_can_thiet = 200
print("\nĐiểm cần thiết để qua màn là:", diem_can_thiet)
# Đặt câu hỏi cho máy tính: "Điểm số của Aria có lớn hơn hoặc bằng điểm cần thiết không?"
ket_qua_qua_man = (diem_so >= diem_can_thiet)
print("Aria có đủ điểm qua màn không?", ket_qua_qua_man)4. “Đóng vai CPU”: Theo dấu điểm số
Hãy cùng nhau theo dõi giá trị của biến diem_so qua từng bước.
| Dòng lệnh | Phép tính được thực hiện | Giá trị của diem_so (sau khi dòng lệnh thực thi) |
| diem_so = 100 | Gán giá trị ban đầu | 100 |
| diem_so += 50 | 100 + 50 | 150 |
| diem_so -= 20 | 150 – 20 | 130 |
| ket_qua_qua_man = (diem_so >= diem_can_thiet) | 130 >= 200 | (Biến ket_qua_qua_man sẽ nhận giá trị False) |
Nhìn vào bảng này, em có thể thấy rõ ràng tại sao kết quả cuối cùng lại là False.
5. Thử thách & Mở rộng
- Thử thách: Trong Colab, hãy thêm một sự kiện nữa: Aria tìm thấy một “Kho báu ẩn”, giúp nhân đôi số điểm hiện tại. Em sẽ dùng toán tử nào? Hãy thêm code vào và xem liệu Aria có thể qua màn sau sự kiện này không.
- Khám phá: Toán tử ‘phần trăm’ (chia lấy dư) có một ứng dụng rất hay là kiểm tra một số là chẵn hay lẻ. Một số chẵn khi chia cho 2 sẽ có số dư là 0. Em hãy thử viết code kiểm tra xem
diem_socuối cùng của Aria là số chẵn hay lẻ bằng cách dùngdiem_so 'phần trăm' 2 == 0.
6. Câu Hỏi & Bài Tập Củng Cố
Phần 1: Câu hỏi lý thuyết
Câu 1: Kết quả của phép tính 13 ‘phần trăm‘ 4 là gì?
A. 3
B. 1
C. 3.25
D. 4
Câu 2: Để so sánh xem giá trị của biến x có bằng y hay không, em dùng cú pháp nào?
A. x = y
B. x == y
C. x != y
D. x => y
Câu 3: Sau khi chạy 2 dòng lệnh sau, giá trị của biến so_luong là bao nhiêu? so_luong = 5 so_luong *= 3
A. 5
B. 3
C. 8
D. 15
Câu 4: Kết quả in ra màn hình của dòng lệnh print(10 > 5) là gì?
Phần 2: Bài tập thực hành cơ bản
Bài 2.1: Máy tính tiền boa (Tip Calculator) Viết một chương trình trong Colab để tính tiền boa cho một bữa ăn.
- Tạo biến
tong_hoa_donvà gán cho nó một giá trị, ví dụ:500000. - Tạo biến
phan_tram_boavà gán cho nó giá trị0.15(tức 15 ‘phần trăm’). - Tạo biến
tien_boabằng cách nhântong_hoa_donvớiphan_tram_boa. - Tạo biến
thanh_toan_cuoi_cungbằng cách cộngtong_hoa_donvàtien_boa. - In tất cả các giá trị trên ra màn hình một cách rõ ràng.
Bài 2.2: Kiểm tra tuổi xem phim Một rạp phim quy định phim hành động chỉ dành cho người từ 18 tuổi trở lên.
- Tạo biến
tuoi_khan_giavà gán một độ tuổi bất kỳ. - Tạo biến
tuoi_quy_dinhvới giá trị là18. - Tạo biến
du_dieu_kienvà gán cho nó kết quả của phép so sánh xemtuoi_khan_giacó lớn hơn hoặc bằngtuoi_quy_dinhkhông. - In ra màn hình kết quả:
Khán giả có đủ tuổi xem phim không? [kết quả]
Phần 3: Thử thách tư duy
Bài 3.1: Dự đoán kết quả Không chạy code, hãy dự đoán giá trị cuối cùng của x và y.
x = 5
y = 10
x = y # Dòng 1
y = x + 5 # Dòng 2
x = x + y # Dòng 3
print("x =", x)
print("y =", y)(Gợi ý: Hãy kẻ bảng “Đóng vai CPU” để theo dõi giá trị của x và y sau từng dòng lệnh!)
Bài 3.2: Thám tử tìm lỗi Đoạn code sau được viết với mục đích chuyển đổi nhiệt độ từ độ C sang độ F. Công thức là: F = C * 1.8 + 32. Tuy nhiên, nó đang chứa một lỗi logic. Hãy tìm và sửa nó.
# Đoạn code bị lỗi
do_C = 25
do_F = 0
do_F = do_C * (1.8 + 32) # Có gì đó sai sai ở đây!
print(do_C, "độ C tương đương với", do_F, "độ F")(Gợi ý: Hãy xem lại thứ tự ưu tiên của các phép toán. Phép nhân và phép cộng, cái nào được thực hiện trước? Có cần dùng dấu ngoặc đơn ở đây không, và nếu có thì đặt ở đâu mới đúng?)
Tóm tắt & Lời nhắn của Giảng viên: Tuyệt vời! Các em vừa hoàn thành một bài học rất quan trọng. Các em đã trang bị cho chương trình của mình khả năng “hành động” và “đặt câu hỏi”. Hãy nhớ kỹ sự khác biệt giữa = và ==, nó sẽ cứu em khỏi rất nhiều giờ gỡ lỗi sau này. Ở bài học tiếp theo, chúng ta sẽ trả lời câu hỏi: “Khi máy tính đã hỏi và có câu trả lời True/False, làm thế nào để ra lệnh cho nó hành động dựa trên câu trả lời đó?”. Đó chính là lúc phép màu của if-else xuất hiện. Hẹn gặp lại các em!
