Giáo án Tin học 10 · Toàn bộ sách chính (đồ họa và Python)
Tin họcLớp 10Phần 5. Chủ đề 5. Giải quyết vấn đề với sự trợ giúp của máy tính

Giáo án Bài 26. Hàm trong Python

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 2 tiết (90 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được cấu trúc định nghĩa hàm trong Python gồm từ khóa def, tên hàm, tham số trong ngoặc, dấu hai chấm và thân hàm thụt lề.
  • Giải thích được vai trò của return (trả giá trị và kết thúc lần gọi hàm) và khác biệt với print (chỉ hiển thị, không trả giá trị để dùng tiếp).
  • Vận dụng được việc gọi hàm với đối số phù hợp để tính chu vi hình chữ nhật, dự đoán và kiểm tra kết quả chương trình có hàm.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: Chủ động đọc chương trình mẫu, dự đoán kết quả trước khi chạy và tự đối chiếu với kết quả thực thi để điều chỉnh suy nghĩ.
  • Giao tiếp và hợp tác: Thảo luận theo cặp để thống nhất đáp án, trình bày ngắn gọn lập luận về sự khác nhau giữa return và print.
  • Giải quyết vấn đề và sáng tạo: Xác định nguyên nhân lỗi khi hàm chỉ dùng print, đề xuất cách sửa bằng return và viết hàm tính giá trị cho tình huống thực tế.

b) Năng lực đặc thù

  • Sử dụng và quản lí các phương tiện công nghệ thông tin và truyền thông: Sử dụng môi trường lập trình Python (IDLE hoặc Thonny) để soạn, chạy và quan sát kết quả hàm.
  • Ứng xử phù hợp trong môi trường số: Ghi nguồn khi tham khảo mã mẫu, không sao chép nguyên chương trình của bạn mà tự viết và giải thích được từng dòng.
  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: Dùng máy tính chạy thử với dữ liệu mẫu (7 và 4) để kiểm tra điều kiện áp dụng của hàm chu vi.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: Làm bài tương tác trên trang NeoEdu để tự kiểm tra kiến thức về hàm và return.
  • Hợp tác trong môi trường số: Chia sẻ mã chương trình và kết quả chạy trên nhóm lớp để cả nhóm cùng đối chiếu và góp ý.

3. Phẩm chất

  • Chăm chỉ: Kiên trì sửa lỗi khi chương trình báo lỗi thiếu đối số hoặc in ra None, không bỏ cuộc khi kết quả chưa đúng.
  • Trách nhiệm: Kiểm tra điều kiện độ dài dương của tham số trước khi kết luận sản phẩm hàm chu vi là đúng.
  • Trung thực: Ghi nhận đúng kết quả thực thi của chương trình, không sửa kết quả để khớp với dự đoán ban đầu.

II. Thiết bị dạy học và học liệu

1. Giáo viên

  • Máy tính kết nối máy chiếu, môi trường Python (IDLE hoặc Thonny) đã cài sẵn.
  • Đoạn mã mẫu chu_vi(a, b) và các đoạn mã bài tập 1 đến 8 đã chuẩn bị trên slide.
  • Phiếu học tập số 1 và Phiếu học tập số 2 (in hoặc chiếu).
  • Học liệu số NeoEdu: trang bài học có bài giảng, ví dụ và bài tập tương tác tại neoedu.vn/learn/10/informatics/bai-26-ham-trong-python.

2. Học sinh

  • Máy tính có cài Python (IDLE hoặc Thonny).
  • Vở ghi, bút, Phiếu học tập số 1 và số 2.
  • Thẻ giấy màu hoặc bảng nhóm để trình bày đáp án nhanh (nếu cần).

III. Tiến trình dạy học

Hoạt động 1: Mở đầu · 5 phút

Phát hiện nhu cầu đặt tên cho một việc

a) Mục tiêu

Xác định vấn đề: khi cùng một phép tính phải lặp lại nhiều lần, cần gom thành một khối có tên để tái sử dụng.

b) Nội dung

GV chiếu hai đoạn lệnh:
print(2*(7+4))
print(2*(3+5))
Câu hỏi GV đặt ra: “Hai dòng lệnh này làm cùng một việc gì? Nếu phải tính chu vi 10 lần với kích thước khác nhau, em có muốn viết lại công thức 10 lần không? Có cách nào gọn hơn?”

c) Sản phẩm

HS nhận ra cả hai dòng đều tính chu vi theo công thức 2 × (dài + rộng) và chỉ khác số liệu. HS nêu ý tưởng: gom công thức vào một khối có tên, khi cần chỉ cần gọi tên và truyền độ dài vào. Từ đó GV dẫn vào khái niệm hàm.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu hai đoạn lệnh và đặt câu hỏi: hai dòng lệnh làm việc gì, và có cách nào viết gọn khi phải tính nhiều lần không.

    Học sinh

    HS đọc đoạn lệnh, suy nghĩ cá nhân khoảng 30 giây và chuẩn bị trả lời.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV gọi 2 đến 3 HS trả lời, không đánh giá đúng sai ngay.

    Học sinh

    HS trả lời dự kiến: “Cả hai đều tính chu vi hình chữ nhật.” “Nên viết một lần rồi dùng lại nhiều lần.”

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV tổng hợp ý kiến HS và nêu nhiệm vụ của bài: tìm hiểu cách định nghĩa và sử dụng hàm trong Python.

    Học sinh

    HS ghi tên bài “Hàm trong Python” vào vở và nêu mục tiêu bài học.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV kết luận: hàm là cách đặt tên cho một việc để tái sử dụng; cần xác định đầu vào (tham số), đầu ra (giá trị trả về) và điều kiện áp dụng.

    Học sinh

    HS ghi ý chính vào vở và sẵn sàng tìm hiểu cấu trúc hàm.

Hoạt động 2.1: Hình thành kiến thức mới · 15 phút

Cấu trúc định nghĩa và cách gọi hàm

a) Mục tiêu

Nêu được cấu trúc định nghĩa hàm trong Python và gọi hàm với đối số phù hợp.

b) Nội dung

HS làm việc theo cặp: đọc chương trình mẫu sau và điền Phiếu học tập số 1.
def chu_vi(a,b):
return 2*(a+b)
print(chu_vi(7,4))
Câu hỏi GV đặt ra: “Từ khóa nào báo bắt đầu định nghĩa hàm? Tên hàm là gì? Tham số a, b đóng vai trò gì? Dòng nào là thân hàm? Nếu viết print(chu_vi(7)) thì điều gì xảy ra?”
GV chạy chương trình trên máy chiếu, sau đó chạy thêm lời gọi chu_vi(7) để HS quan sát thông báo lỗi.

c) Sản phẩm

Kết luận HS rút ra: Hàm được định nghĩa bằng def; tên hàm (chu_vi) đặt theo việc cần làm; tham số a, b nằm trong ngoặc là đầu vào; thân hàm thụt lề và chứa return 2*(a+b). Muốn dùng hàm phải gọi đúng tên kèm đủ đối số, ví dụ chu_vi(7,4) cho kết quả 22; chu_vi(7) báo lỗi thiếu đối số.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV phát Phiếu học tập số 1, yêu cầu HS theo cặp đọc đoạn mã và trả lời các câu hỏi trong phiếu trong 5 phút.

    Học sinh

    HS nhận phiếu, đọc đoạn mã và chia công việc: một bạn đọc mã, một bạn ghi phiếu.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, gợi ý HS xác định dòng nào thụt lề và vì sao. GV chạy mã trên máy chiếu để HS đối chiếu.

    Học sinh

    HS trả lời dự kiến: “Từ khóa là def, tên hàm là chu_vi, tham số a và b là hai độ dài của hình chữ nhật, thân hàm là dòng return.” HS chạy thử trên máy: chu_vi(7,4) cho 22, chu_vi(7) báo lỗi.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời một cặp trình bày phần trả lời, các cặp khác bổ sung. GV yêu cầu HS giải thích vì sao lời gọi chu_vi(7) lại báo lỗi.

    Học sinh

    HS trình bày: “Hàm cần hai đối số, thiếu b nên Python báo lỗi.” Các cặp khác góp ý về vị trí dấu hai chấm và thụt lề.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt kiến thức: cấu trúc def tên(tham số): và thân thụt lề; lời gọi phải có ngoặc và đủ đối số. GV nhấn mạnh tham số là đầu vào, giá trị trả về là đầu ra.

    Học sinh

    HS ghi kết luận vào Phiếu học tập số 1 và vào vở.

Hoạt động 2.2: Hình thành kiến thức mới · 15 phút

Phân biệt return và print trong hàm

a) Mục tiêu

Giải thích được vai trò của return và print khi dùng trong hàm, và chỉ ra vì sao hàm chỉ print không trả giá trị để tính tiếp.

b) Nội dung

GV chiếu hai phiên bản hàm chu_vi:
Phiên bản A: def chu_vi(a,b): return 2*(a+b)
Phiên bản B: def chu_vi(a,b): print(2*(a+b))
HS thực hiện lệnh print(chu_vi(7,4)+5) với từng phiên bản và điền bảng so sánh trong Phiếu học tập số 1 (mục 2).
Câu hỏi GV đặt ra: “Phiên bản nào cho kết quả 27? Vì sao phiên bản kia báo lỗi? return kết thúc lần gọi hàm ở đâu?”

c) Sản phẩm

Kết quả: phiên bản A in 27 vì return trả giá trị 22 về nơi gọi rồi cộng với 5. Phiên bản B báo lỗi kiểu vì hàm chỉ hiển thị 22 và trả về None, nên None + 5 không thực hiện được. Kiến thức HS rút ra: return trả giá trị và kết thúc lần gọi; print chỉ hiển thị và không thay thế return.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu hai phiên bản hàm và yêu cầu HS dự đoán kết quả của print(chu_vi(7,4)+5) với từng phiên bản trước khi chạy.

    Học sinh

    HS dự đoán cá nhân rồi ghi vào Phiếu học tập số 1, mục 2.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV hướng dẫn HS chạy trên máy, sau đó đi kiểm tra các nhóm đang gặp lỗi.

    Học sinh

    HS chạy thử: phiên bản A in 27; phiên bản B in 22 rồi báo lỗi khi cộng với 5. HS so sánh với dự đoán ban đầu.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 HS giải thích kết quả, yêu cầu HS nói rõ vì sao hàm B không tính tiếp được.

    Học sinh

    HS trả lời dự kiến: “Return đưa giá trị 22 ra ngoài để dùng tiếp, còn print chỉ hiện 22 lên màn hình rồi hàm không có giá trị để cộng.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: muốn dùng kết quả của hàm để tính tiếp thì phải dùng return; print chỉ để hiển thị. Hàm không có return sẽ trả về None mặc định.

    Học sinh

    HS ghi kết luận vào vở và hoàn thiện bảng so sánh trong phiếu.

Hoạt động 3.1: Luyện tập · 15 phút

Dự đoán kết quả chương trình có hàm

a) Mục tiêu

Vận dụng được cách định nghĩa, gọi hàm và return để dự đoán chính xác kết quả chương trình; phân biệt đúng hay sai các phát biểu về hàm.

b) Nội dung

HS làm việc cá nhân rồi đổi chéo cặp để kiểm tra. Đề bài:
Bài 1: def f(x): return x*x; print(f(5)). Chương trình in ra số nào?
Bài 2: def f(a,b): return a+b; print(f(3,8)). In ra số nào?
Bài 3: def f(x): return x+1; print(f(f(2))). In ra số nào?
Bài 4: Lệnh nào trả giá trị cho nơi gọi? A. return; B. print luôn; C. input luôn; D. for.
Bài 5: Đúng hay sai: print bên trong hàm luôn thay thế return cho mọi tính toán tiếp.
GV dẫn HS kiểm tra bằng máy sau khi dự đoán.

c) Sản phẩm

Đáp án: Bài 1: 25 (hàm trả bình phương của 5). Bài 2: 11 (tổng 3 và 8). Bài 3: 4 (f(2) = 3, rồi f(3) = 4). Bài 4: A. return (chuyển giá trị ra khỏi hàm). Bài 5: Sai, vì hàm không return giá trị cụ thể thường trả về None; print chỉ hiển thị và không thay thế return.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu đề 5 bài, yêu cầu HS dự đoán kết quả bằng suy luận trước, sau đó kiểm tra trên máy.

    Học sinh

    HS ghi dự đoán cá nhân vào vở, khoảng 5 phút.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV cho HS đổi chéo cặp, cùng chạy chương trình và đối chiếu kết quả. GV theo dõi các cặp có kết quả khác nhau.

    Học sinh

    HS chạy thử từng chương trình, ghi kết quả thực tế. Với bài 3, HS dự đoán dễ nhầm f(f(2)) là 3; kết quả đúng là 4.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời đại diện nhóm báo cáo đáp án từng bài, yêu cầu HS giải thích vì sao bài 3 cho kết quả 4.

    Học sinh

    HS trả lời: “f(2) trả 3, sau đó f(3) trả 4, nên kết quả là 4.” HS nêu lý do bài 5 là sai.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV nhận xét, chốt đáp án và nhấn mạnh: khi gọi lồng nhau, kết quả của lần gọi trong được dùng làm đối số của lần gọi ngoài.

    Học sinh

    HS đối chiếu, sửa đáp án sai (nếu có) và ghi nhận kiến thức.

Hoạt động 3.2: Luyện tập · 15 phút

Viết hàm chu vi và kiểm tra điều kiện áp dụng

a) Mục tiêu

Viết được hàm hoàn chỉnh với return, kiểm tra theo dữ liệu mẫu và nhận biết lỗi khi hàm chỉ dùng print.

b) Nội dung

HS làm việc theo nhóm 4 bạn, dùng Phiếu học tập số 2:
Bài 6: Sắp xếp các bước giải nhiệm vụ viết hàm chu vi theo đúng thứ tự.
Bài 7: Viết hàm chu_vi(a, b) và dùng với dữ liệu 7 và 4; viết chương trình hoàn chỉnh, kiểm tra kết quả, nêu điều kiện độ dài dương.
Bài 8: Một bạn viết print(2*(a+b)) trong hàm rồi muốn cộng kết quả với 5. Đó là vấn đề gì? Sửa thế nào?
GV đặt câu hỏi: “Nếu nhập a = -3 thì hàm có còn đúng không? Vì sao phải có điều kiện độ dài dương?”

c) Sản phẩm

Bài 6: Định nghĩa hàm chu vi → Truyền hai độ dài dương → Nhận giá trị return → In và đối chiếu. Bài 7: def chu_vi(a,b): return 2*(a+b); print(chu_vi(7,4)) cho kết quả 22; điều kiện: a và b phải là độ dài dương. Bài 8: Hàm chỉ print nên trả về None, None + 5 gây lỗi; sửa bằng return 2*(a+b), khi đó print(chu_vi(7,4)+5) cho kết quả 27.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV phát Phiếu học tập số 2 cho các nhóm, nêu rõ yêu cầu chấm nhanh: mã đúng cấu trúc, return đúng, kết quả 22.

    Học sinh

    Nhóm trưởng phân công: một bạn viết mã, một bạn kiểm tra, một bạn ghi lập luận, một bạn chuẩn bị báo cáo.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh các nhóm, gợi ý khi nhóm bế tắc ở bài 8 bằng câu hỏi: “Print(...) trả về gì để cộng với 5?”

    Học sinh

    HS viết hàm, chạy thử và ghi kết quả. Dự kiến HS trả lời bài 8: “Hàm chỉ in ra nên không có giá trị để cộng, phải đổi print thành return.”

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời một nhóm trình bày mã bài 7 và kết quả, một nhóm khác trình bày lỗi và cách sửa bài 8. GV yêu cầu các nhóm nhận xét lẫn nhau.

    Học sinh

    Nhóm trình bày mã: def chu_vi(a,b): return 2*(a+b), print(chu_vi(7,4)) cho 22. Nhóm khác nêu điều kiện độ dài dương: a và b phải lớn hơn 0.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: hàm có sản phẩm cụ thể khi có return, cần kiểm tra điều kiện áp dụng (độ dài dương) và kiểm tra bằng dữ liệu mẫu. GV chấm sơ bộ theo lập luận, không so khớp từng kí tự mã.

    Học sinh

    HS ghi nhận kết luận và chỉnh sửa phần mã của nhóm nếu còn sai.

Hoạt động 4: Vận dụng · 25 phút

Viết hàm tính chu vi sân lớp học trong thực tế

a) Mục tiêu

Vận dụng được định nghĩa hàm, return và gọi hàm để giải quyết bài toán thực tế; giải thích kết quả và kiểm tra điều kiện áp dụng.

b) Nội dung

Nhiệm vụ: Mỗi nhóm đo (hoặc ước lượng bằng thước dây) chiều dài và chiều rộng một khu vực thực tế trong trường (sân chơi, bảng tin, bàn họp). Nhóm viết hàm chu_vi(a, b) có return, gọi hàm với số đo thực tế và in kết quả. Nhóm thêm một câu lệnh kiểm tra điều kiện: nếu a hoặc b không dương thì hiển thị thông báo “Độ dài phải lớn hơn 0”.
Câu hỏi GV đặt ra: “Hàm của nhóm có trả giá trị để dùng tiếp không? Nếu muốn tính tổng chu vi của hai khu vực thì làm thế nào?”
Bài về nhà: Mỗi HS viết hàm tính diện tích hình chữ nhật (có return) và kiểm tra với hai bộ dữ liệu khác nhau, ghi kết quả vào vở.

c) Sản phẩm

Sản phẩm nhóm: đoạn mã có def chu_vi(a,b) với return 2*(a+b), lời gọi với số đo thực tế, kiểm tra điều kiện dương; một kết quả in ra kèm giải thích ngắn về ý nghĩa số liệu. Kiến thức vận dụng: hàm nhận đầu vào qua tham số, trả đầu ra bằng return và kiểm tra điều kiện áp dụng trước khi kết luận.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu nhiệm vụ thực tế, yêu cầu nhóm chọn khu vực, đo số liệu và ghi vào phiếu nhóm; nhắc nhóm kiểm tra điều kiện độ dài dương.

    Học sinh

    Nhóm chọn khu vực, phân công đo đạc, ghi số liệu vào giấy nháp.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV hỗ trợ nhóm gặp lỗi, gợi ý kiểm tra lại đối số khi chạy và câu lệnh if kiểm tra điều kiện. GV có thể mở trang NeoEdu để HS tự kiểm tra thêm.

    Học sinh

    Nhóm viết mã, chạy thử với số đo thực tế và chỉnh sửa. Dự kiến HS trả lời: “Hàm trả chu vi, nếu gọi với số âm thì báo thông báo lỗi.”

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 nhóm trình bày mã và kết quả, cả lớp nhận xét về điều kiện áp dụng và tính đúng đắn của kết quả.

    Học sinh

    Nhóm trình bày: khu vực, số đo, mã hàm và kết quả chu vi. Nhóm khác góp ý về cách kiểm tra điều kiện.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV tổng kết: hàm có tên, tham số, return và điều kiện áp dụng là cấu trúc cơ bản để tái sử dụng; giao bài về nhà về hàm diện tích hình chữ nhật.

    Học sinh

    HS ghi nhiệm vụ về nhà và hoàn thiện sản phẩm nhóm trong vở.

Phiếu học tập

Phiếu học tập số 1

Mục 1. Đọc chương trình sau và trả lời:
def chu_vi(a,b):
return 2*(a+b)
print(chu_vi(7,4))

  • Từ khóa nào báo bắt đầu định nghĩa hàm?
  • Tên hàm là gì? Tham số là gì?
  • Dòng nào là thân hàm? Vì sao cần thụt lề?
  • Lời gọi chu_vi(7) có chạy được không? Vì sao?

Mục 2. Điền bảng so sánh sau khi chạy print(chu_vi(7,4)+5) với hai phiên bản hàm:

  • Phiên bản A (có return): kết quả dự đoán ... ; kết quả thực tế ... ; giải thích: ...
  • Phiên bản B (chỉ có print bên trong hàm): kết quả dự đoán ... ; kết quả thực tế ... ; giải thích: ...
  • Kết luận: return dùng để ...; print dùng để ...

Phiếu học tập số 2

Bài 6. Sắp xếp các bước giải nhiệm vụ viết hàm chu vi theo thứ tự đúng:

  • In và đối chiếu
  • Định nghĩa hàm chu vi
  • Nhận giá trị return
  • Truyền hai độ dài dương

Bài 7. Viết hàm chu_vi(a, b) và dùng với a = 7, b = 4.

  • Viết chương trình hoàn chỉnh (có def, return và lời gọi in ra kết quả).
  • Kết quả in ra là bao nhiêu?
  • Nêu điều kiện áp dụng của hàm (độ dài như thế nào thì hợp lệ?).

Bài 8. Một bạn viết print(2*(a+b)) trong hàm rồi muốn cộng kết quả với 5.

  • Vấn đề gì xảy ra? Vì sao?
  • Nêu cách sửa và kết quả của print(chu_vi(7,4)+5) sau khi sửa.

Hướng dẫn về nhà

  • Viết hàm dien_tich(a, b) có return để tính diện tích hình chữ nhật, sau đó gọi hàm với hai bộ dữ liệu khác nhau (ví dụ 7 và 4; 5 và 6) và ghi kết quả vào vở.
  • Ôn lại định nghĩa hàm bằng def, cách đặt tên hàm, thụt lề thân hàm và sự khác nhau giữa return và print.
  • Làm các bài tập tương tác về hàm trên trang bài học NeoEdu (neoedu.vn/learn/10/informatics/bai-26-ham-trong-python) và ghi lại các câu sai để hỏi GV ở tiết sau.
  • Giải thích bằng lời của em (3 đến 5 câu) vì sao hàm chỉ có print thì không thể dùng kết quả để tính tiếp.

Giáo án do NeoEdu soạn với sự hỗ trợ của AI, dựa trên nội dung bài học trên Học liệu. Thầy cô nên đọc lại và điều chỉnh cho phù hợp với học sinh của mình; bản Word để sửa trực tiếp.