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 28. Phạm vi của biến

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

I. Mục tiêu

1. Kiến thức

  • Nêu được khái niệm phạm vi của biến: biến gán trong hàm có phạm vi cục bộ, biến gán ngoài hàm có phạm vi toàn cục.
  • Giải thích được vì sao gán giá trị cho tên x trong hàm không làm thay đổi x bên ngoài hàm.
  • Giải thích được điều kiện để hàm đọc được biến bên ngoài: không có phép gán cùng tên trong phạm vi cục bộ của hàm.
  • Vận dụng được quy tắc phạm vi để dự đoán kết quả chương trình có hàm và biến cùng tên, và viết được chương trình trả về giá trị bằng return.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: Chủ động dự đoán kết quả chương trình trước khi chạy, tự kiểm tra bằng cách thực thi và đối chiếu với dự đoán của bản thân.
  • Giao tiếp và hợp tác: Thảo luận theo cặp, trình bày ngắn gọn lập luận về phạm vi biến bằng thuật ngữ đúng (cục bộ, toàn cục, return).
  • Giải quyết vấn đề và sáng tạo: Phân tích từng bước thực thi của chương trình, xác định tên ngoài và tên cục bộ, lựa chọn cách viết hàm rõ đầu vào và đầu ra.

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 trình biên dịch trực tuyến) để chạy và kiểm tra chương trình mẫu.
  • 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 kiểm tra kết quả dự đoán, giải thích được chênh lệch (nếu có) giữa dự đoán và kết quả thực thi.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: Sử dụng bài tương tác trên trang bài học NeoEdu để tự luyện tập và kiểm tra đáp án.

3. Phẩm chất

  • Chăm chỉ: Tích cực thực hành, kiên trì kiểm tra lại chương trình khi kết quả khác dự đoán.
  • Trung thực: Ghi nhận đúng kết quả thực thi, không sửa đáp án để khớp với dự đoán ban đầu; nêu rõ khi mình chưa chắc chắn.

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

1. Giáo viên

  • Máy tính, máy chiếu, phần mềm Python 3 (IDLE hoặc trình biên dịch trực tuyến)
  • Phiếu học tập số 1 (in hoặc chiếu trên máy chiếu)
  • Bảng phụ hoặc bảng lớp để ghi quy tắc phạm vi
  • Học liệu số NeoEdu: bài giảng, ví dụ và bài tập tương tác tại neoedu.vn/learn/10/informatics/bai-28-pham-vi-cua-bien

2. Học sinh

  • Máy tính có cài Python 3 hoặc truy cập trình biên dịch trực tuyến
  • Vở ghi, bút, giấy nháp để ghi dự đoán
  • Phiếu học tập số 1 (nếu được phát in)

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

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

Dự đoán kết quả chương trình

a) Mục tiêu

Gợi nhớ kiến thức về biến và hàm, tạo tình huống nhận thức: gán giá trị trong hàm có làm thay đổi biến bên ngoài không.

b) Nội dung

GV chiếu đoạn chương trình sau và yêu cầu HS dự đoán giá trị in ra màn hình trước khi chạy:
x = 1
def doi():
x = 100
doi()
print(x)
HS ghi dự đoán vào vở, sau đó cặp đôi thảo luận ngắn 1 phút về lí do.

c) Sản phẩm

HS nêu được dự đoán: chương trình in ra 1, vì phép gán x = 100 trong hàm doi() tạo một biến x cục bộ, không sửa x ở ngoài hàm. HS ghi được câu hỏi cần giải quyết: Khi nào một tên biến trong hàm là cục bộ, khi nào là toàn cục?

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 đoạn chương trình, yêu cầu HS dự đoán kết quả in ra và ghi vào vở. GV hỏi: Theo em, giá trị in ra là bao nhiêu? Vì sao?

    Học sinh

    HS đọc đoạn chương trình, ghi dự đoán cá nhân trong 30 giây.

  2. Giáo viên

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

    GV yêu cầu cặp đôi trao đổi dự đoán và lí do, đồng thời mời một HS chạy chương trình trên máy chiếu để đối chiếu.

    Học sinh

    Cặp đôi thảo luận. Dự kiến HS trả lời: Em nghĩ in ra 1 vì x = 100 chỉ nằm trong hàm. Một số HS có thể đoán 100, GV lưu ý để các em kiểm chứng ở hoạt động sau.

  3. Giáo viên

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

    GV mời 2 đến 3 HS nêu dự đoán và lí do, ghi bảng các dự đoán khác nhau.

    Học sinh

    HS trình bày: Dự đoán in 1 (hoặc 100) và lí do. GV ghi nhận các ý kiến.

  4. Giáo viên

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

    GV chạy chương trình, công bố kết quả 1 và dẫn dắt vào bài: Gán giá trị trong hàm tạo biến cục bộ; đây là nội dung chúng ta sẽ tìm hiểu về phạm vi của biến.

    Học sinh

    HS ghi tên bài học vào vở và đối chiếu dự đoán của mình với kết quả thực thi.

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

Phạm vi cục bộ và phạm vi toàn cục

a) Mục tiêu

Hình thành kiến thức: phân biệt biến cục bộ và biến toàn cục, nêu và giải thích quy tắc đọc biến ngoài trong hàm.

b) Nội dung

HS làm việc theo cặp với Phiếu học tập số 1, chạy hai chương trình mẫu trên máy tính, dự đoán và giải thích kết quả. Sau đó các cặp ghép thành nhóm 4 để thống nhất quy tắc phạm vi và viết lên phiếu nhóm.

c) Sản phẩm

Kết luận HS rút ra:

  • Biến gán trong hàm (ví dụ x = 2 trong def f) là biến cục bộ, chỉ tồn tại và dùng trong hàm đó; không làm thay đổi tên x ở ngoài.
  • Biến gán ở ngoài hàm là biến toàn cục.
  • Hàm có thể đọc biến ngoài nếu trong hàm không có phép gán cùng tên.
  • Lệnh global có thể đổi quy tắc, nhưng nên ưu tiên truyền đối số và dùng return để chương trình rõ ràng, dễ kiểm tra.

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, hướng dẫn HS chạy chương trình A và B trên máy tính. Nhắc HS dự đoán trước khi chạy.

    Học sinh

    HS nhận phiếu, ghi dự đoán cho từng chương trình.

  2. Giáo viên

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

    GV đi quanh lớp, kiểm tra các cặp, gợi ý: Trong hàm f có phép gán x không? Nếu có thì x đó thuộc đâu?

    Học sinh

    Cặp đôi chạy chương trình, so sánh dự đoán. Dự kiến HS trả lời: Chương trình A in 7 vì hàm f không gán x nên đọc x = 5 ngoài hàm. Chương trình B in 9 vì x = 2 trong hàm chỉ là biến cục bộ. Sau đó các cặp ghép nhóm 4 để thống nhất quy tắc.

  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 quy tắc đã thống nhất, các nhóm khác góp ý bổ sung.

    Học sinh

    Đại diện nhóm trình bày: Gán trong hàm tạo biến cục bộ; hàm đọc được biến ngoài nếu không gán cùng tên trong hàm. Nhóm khác bổ sung về lệnh global.

  4. Giáo viên

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

    GV chốt kiến thức trên bảng: phạm vi cục bộ, phạm vi toàn cục, quy tắc đọc biến ngoài; nhấn mạnh lệnh global thay quy tắc nên hạn chế dùng, ưu tiên truyền đối số và return. Nêu thêm: Gán giá trị không làm thay đổi tên ngoài, nhưng với đối tượng danh sách được truyền vào thì thay đổi nội dung danh sách vẫn ảnh hưởng ra ngoài.

    Học sinh

    HS ghi kết luận vào vở, nêu lại quy tắc bằng lời của mình.

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

Luyện tập dự đoán kết quả

a) Mục tiêu

Củng cố quy tắc phạm vi của biến qua các bài tập dự đoán kết quả và nhận biết câu đúng, câu sai.

b) Nội dung

HS làm bài tập 1 đến 5 (bài tương tác trên NeoEdu hoặc chiếu trên máy chiếu). Với bài 1 đến 3, HS dự đoán kết quả trước rồi chạy kiểm tra. Với bài 4 và 5, HS chọn đáp án và giải thích.
Bài 1: x = 9, hàm f gán x = 2 rồi return x, gọi f() rồi print(x).
Bài 2: x = 5, hàm f return x + 2, print(f()).
Bài 3: hàm f(x) gán x = x + 3 rồi return x, a = 4, b = f(a), print(a + b).
Bài 4: Gán x = 3 trong hàm không global thường tạo gì?
Bài 5: Biến bên ngoài không bao giờ đọc được trong hàm. Đúng hay sai?

c) Sản phẩm

Đáp án:

  • Bài 1: In ra 9. Lệnh x = 2 trong hàm là biến cục bộ, không sửa x ngoài.
  • Bài 2: In ra 7. Hàm đọc được x = 5 ở ngoài vì không có phép gán x trong hàm.
  • Bài 3: In ra 11. a vẫn là 4, b = f(4) = 7, a + b = 11.
  • Bài 4: Đáp án A, tạo tên cục bộ.
  • Bài 5: Sai. Hàm có thể đọc biến ngoài nếu quy tắc phạm vi cho phép.

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 tập, yêu cầu HS dự đoán kết quả từng bài trong 2 phút rồi ghi vào vở. GV nhắc: Với mỗi bài, tự hỏi trong hàm có phép gán không.

    Học sinh

    HS đọc đề, ghi dự đoán cho bài 1 đến 3 và chọn đáp án cho bài 4, 5.

  2. Giáo viên

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

    GV cho HS chạy chương trình bài 1 đến 3 trên máy tính hoặc bài tương tác NeoEdu để kiểm tra. Theo dõi HS nào dự đoán sai để hỏi nguyên nhân.

    Học sinh

    HS chạy chương trình, so sánh với dự đoán. Dự kiến HS có thể dự đoán bài 3 là 10 hoặc 14; GV hướng dẫn HS theo dõi a không đổi khi truyền vào hàm.

  3. Giáo viên

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

    GV mời HS trả lời lần lượt từng bài, yêu cầu HS giải thích ngắn gọn lập luận.

    Học sinh

    HS trả lời: Bài 1 là 9, Bài 2 là 7, Bài 3 là 11, Bài 4 chọn A, Bài 5 là sai, kèm lí do.

  4. Giáo viên

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

    GV nhận xét, nhấn mạnh lỗi thường gặp: nhầm biến cục bộ với biến toàn cục, quên rằng hàm có thể đọc biến ngoài. Chốt lại đáp án đúng.

    Học sinh

    HS sửa lại đáp án nếu sai và ghi chú lỗi cần tránh.

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

Viết hàm trả về giá trị và giải thích phạm vi

a) Mục tiêu

Vận dụng kiến thức để viết chương trình có hàm và return, giải thích kết quả và kiểm tra điều kiện áp dụng.

b) Nội dung

HS làm bài 7: viết chương trình với x = 10 ở ngoài; hàm f gán x = 3 cục bộ và return x + 1; đặt y = f(), in x + y và giải thích hai phạm vi.
HS làm bài 8: giải thích vì sao nên dùng def tang(x): return x + 1 thay vì sửa một biến toàn cục khi không cần trạng thái chung.
Bối cảnh thực tế: một chương trình tính điểm thưởng cho khách hàng cần hàm trả về kết quả rõ ràng, không làm thay đổi dữ liệu ở nơi khác.

c) Sản phẩm

Bài 7: Chương trình
x = 10
def f():
x = 3
return x + 1
y = f()
print(x + y)
Kết quả in ra 14. x ngoài bằng 10, y = f() = 4, tổng bằng 14. Giải thích: x = 3 trong hàm chỉ là biến cục bộ nên không sửa x ngoài.
Bài 8: Hàm có đầu vào và đầu ra rõ ràng, dễ kiểm thử và không đổi trạng thái ngoài bất ngờ. Với a = 4, b = tang(a), kết quả a vẫn là 4, b là 5.

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 bài 7 và bài 8, giao nhiệm vụ làm việc cá nhân trong 5 phút, sau đó chia sẻ với bạn cùng bàn.

    Học sinh

    HS viết chương trình bài 7 trên máy tính, ghi lập luận cho bài 8 vào vở.

  2. Giáo viên

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

    GV đi kiểm tra, hỗ trợ HS gặp lỗi. Gợi ý: Kiểm tra xem bạn có đặt tên trùng nhau không, và kết quả in ra có đúng với lí do không.

    Học sinh

    HS chạy chương trình, so sánh kết quả với dự đoán, thảo luận với bạn cùng bàn về cách giải thích.

  3. Giáo viên

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

    GV mời 1 đến 2 HS trình bày chương trình và lập luận của mình, các HS khác nhận xét.

    Học sinh

    HS trình bày kết quả 14 và giải thích hai phạm vi; nêu ý tưởng hàm tang(x) không đổi trạng thái ngoài.

  4. Giáo viên

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

    GV nhận xét, nhấn mạnh: Phạm vi của biến quyết định kết quả chương trình; viết hàm có đầu vào, đầu ra rõ ràng giúp chương trình dễ đọc, dễ kiểm thử.

    Học sinh

    HS hoàn thiện vở ghi và ghi nhớ kết luận của bài.

Phiếu học tập

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

Dùng để hoạt động Phạm vi cục bộ và phạm vi toàn cục.

Chương trình A:

  • x = 5
  • def f():
  • return x + 2
    
  • print(f())
    Dự đoán kết quả: ...
    Giải thích: Hàm f có gán x không? Vì sao hàm đọc được x ngoài?

Chương trình B:

  • x = 9
  • def f():
  • x = 2
    
  • return x
    
  • f()
  • print(x)
    Dự đoán kết quả: ...
    Giải thích: Lệnh x = 2 trong hàm tạo biến nào? Vì sao x ngoài không đổi?

Nhiệm vụ nhóm: Viết quy tắc phạm vi bằng lời của nhóm (tối đa 3 câu).

  • Biến gán trong hàm có phạm vi: ...
  • Hàm đọc được biến ngoài khi: ...
  • Lệnh global: ...

Hướng dẫn về nhà

  • Hoàn thành bài 7 và bài 8 trong phần Bài tập của Bài 28 trên trang NeoEdu, ghi lại chương trình và giải thích phạm vi của từng biến.
  • Tự viết một chương trình có hàm nhận đầu vào, dùng return để trả về kết quả, kiểm tra hai trường hợp có cùng tên biến trong và ngoài hàm; ghi kết quả dự đoán và kết quả thực thi vào vở.
  • Ôn lại quy tắc: gán trong hàm tạo biến cục bộ; hàm đọc được biến ngoài nếu không gán cùng tên trong hàm.

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.