Tin học lớp 4-5 - Bài 12: Một hàm dùng đi dùng lại với return (Python & Toán)

Bài 12: Một hàm — dùng đi dùng lại nhờ return

🎯 Mục tiêu bài học: Em sẽ hiểu sâu hơn về lệnh return và điều tuyệt vời nhất của hàm: viết một lần, gọi lại thật nhiều lần. Em cũng sẽ biết dùng kết quả của hàm để so sánh và tính toán tiếp, thay cho việc chép đi chép lại công thức.
dien_tich (viết 1 lần) (5, 3) (4, 4) (10, 2) 15 16 20 Viết hàm MỘT lần, gọi lại BAO NHIÊU lần cũng được — mỗi lần cho đầu vào khác nhau, nhận kết quả khác nhau.
Ở Bài 11 em đã tự tạo hàm dien_tich_hcn. Hôm nay ta sẽ khám phá vì sao hàm lại lợi hại: chỉ cần gọi tên là dùng được ngay cho bao nhiêu bài toán cũng được — giống như có một chiếc máy tính bỏ túi tự chế!

1. return khác print như thế nào?

Đây là chỗ nhiều bạn nhầm! print chỉ in chữ ra màn hình để mắt ta nhìn thấy. Còn return giao kết quả lại cho máy tính giữ, để ta còn dùng tiếp (lưu vào biến, đem cộng, đem so sánh...).
def cong(a, b):
    return a + b

tong = cong(3, 4)   # tong nhan gia tri 7
gap_doi = tong * 2   # dung tiep ket qua!
print(gap_doi)       # in ra 14
✎ Nhờ return, kết quả 7 được "cầm về" cất vào biến tong. Nếu thay bằng print, con số chỉ hiện ra rồi biến mất, không dùng tiếp được.

2. Gọi hàm nhiều lần với số liệu khác nhau

Điểm mạnh nhất của hàm: viết một lần, gọi bao nhiêu lần tuỳ thích. Mỗi lần gọi, ta đưa số liệu khác nhau vào và nhận kết quả riêng.
def dien_tich(dai, rong):
    return dai * rong

print(dien_tich(5, 3))    # 15
print(dien_tich(4, 4))    # 16
print(dien_tich(10, 2))   # 20
✎ Ba lần gọi, ba kết quả khác nhau, nhưng chỉ có một hàm. Tưởng tượng em phải tính diện tích 100 mảnh vườn — có hàm rồi thì nhẹ tênh!

3. Dùng kết quả hàm để so sánh

return giao kết quả lại, ta có thể đem hai kết quả ra so sánh bằng if/else — đúng như bài toán "hình nào rộng hơn" trong môn Toán.
A: 5 × 3 = 15 Vườn A < nhỏ hơn B: 4 × 4 = 16 Vườn B Gọi cùng một hàm cho hai mảnh vườn, rồi dùng if/else so sánh xem mảnh nào rộng hơn.
a = dien_tich(5, 3)
b = dien_tich(4, 4)
if a > b:
    print("Vuon A rong hon")
else:
    print("Vuon B rong hon")
✎ Vì 15 < 16 nên máy in ra Vuon B rong hon. Hàm giúp câu lệnh gọn gàng và dễ đọc hơn hẳn!

4. Một hàm có thể gọi hàm khác

Hàm còn có thể dùng lại hàm khác bên trong mình! Ví dụ hàm tính tổng diện tích hai mảnh vườn có thể gọi lại hàm dien_tich.
def tong_dien_tich():
    return dien_tich(5, 3) + dien_tich(4, 4)

print(tong_dien_tich())   # 15 + 16 = 31
✎ Hàm tong_dien_tich() không có tham số (ngoặc rỗng), nhưng bên trong nó vẫn gọi lại hàm cũ. Kết quả: 31.

5. Bảng ghi nhớ

Câu hỏiCâu trả lời
print để làm gì?Hiện chữ/số ra màn hình cho ta nhìn
return để làm gì?Giao kết quả lại để dùng tiếp
Gọi một hàm nhiều lần được không?Được! Bao nhiêu lần cũng được
Kết quả hàm dùng để làm gì?Lưu vào biến, cộng, so sánh...
Hàm gọi hàm khác được không?Hoàn toàn được

🎯 Phần A — Trắc nghiệm kiểm tra

Câu 1. Điểm khác nhau chính giữa printreturn là gì?

print chỉ hiển thị ra màn hình rồi thôi. return "cầm" kết quả về để ta lưu vào biến, cộng, so sánh — tức là còn dùng tiếp được.

Câu 2. Cho đoạn mã sau, biến gd có giá trị bao nhiêu?
def cong(a, b):
    return a + b
t = cong(3, 4)
gd = t * 2

cong(3, 4) trả về 7, cất vào t. Rồi gd = t * 2 = 7 * 2 = 14. Nhờ return, ta mới dùng lại được số 7!

Câu 3. Có thể gọi cùng một hàm bao nhiêu lần?

Đó chính là điều tuyệt vời của hàm: viết một lần rồi gọi lại thoải mái, mỗi lần với số liệu khác nhau. Đỡ phải chép công thức nhiều lần.

Câu 4. Cho hàm dien_tich(dai, rong) trả về dai * rong. Đoạn mã sau in ra gì?
a = dien_tich(5, 3)
b = dien_tich(4, 4)
if a > b:
    print("A rong hon")
else:
    print("B rong hon")

a = 5*3 = 15, b = 4*4 = 16. Vì 15 KHÔNG lớn hơn 16 nên máy chạy nhánh else, in ra B rong hon.

Câu 5. Một hàm có thể gọi lại một hàm khác ở bên trong nó không?

Hàm gọi hàm khác là chuyện bình thường. Ví dụ tong_dien_tich() gọi lại dien_tich(...) hai lần rồi cộng kết quả.

💻 Phần B — Phòng lập trình: Tái sử dụng hàm

Đoạn mã dưới có một hàm dien_tich được gọi lại nhiều lần và dùng để so sánh hai mảnh vườn. Bấm Chạy để xem kết quả, rồi thử đổi số của vườn A và vườn B xem lời so sánh có đổi không nhé!

(Kết quả sẽ hiện ở đây sau khi em bấm Chạy)
🎉 Thử thách: Hãy viết thêm một hàm chu_vi(dai, rong) rồi gọi nó cho vườn A và vườn B. In ra chu vi của cả hai mảnh vườn. (Gợi ý: chu vi = (dai + rong) * 2.)