Bài 2: “Phép Thuật” Của Toán Tử

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ặc False (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‘ 3 sẽ bằng 1 (vì 10 chia 3 được 3 dư 1).
  • ** (Lũy thừa): Ví dụ: 2 ** 3 sẽ bằng 8 (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ủa diem_so cộ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ệnhPhép tính được thực hiệnGiá trị của diem_so (sau khi dòng lệnh thực thi)
diem_so = 100Gán giá trị ban đầu100
diem_so += 50100 + 50150
diem_so -= 20150 – 20130
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_so cuối cùng của Aria là số chẵn hay lẻ bằng cách dùng diem_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.

  1. Tạo biến tong_hoa_don và gán cho nó một giá trị, ví dụ: 500000.
  2. Tạo biến phan_tram_boa và gán cho nó giá trị 0.15 (tức 15 ‘phần trăm’).
  3. Tạo biến tien_boa bằng cách nhân tong_hoa_don với phan_tram_boa.
  4. Tạo biến thanh_toan_cuoi_cung bằng cách cộng tong_hoa_don và tien_boa.
  5. 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.

  1. Tạo biến tuoi_khan_gia và gán một độ tuổi bất kỳ.
  2. Tạo biến tuoi_quy_dinh với giá trị là 18.
  3. Tạo biến du_dieu_kien và gán cho nó kết quả của phép so sánh xem tuoi_khan_gia có lớn hơn hoặc bằng tuoi_quy_dinh không.
  4. 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!

Comments are closed.