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 20. Câu lệnh lặp for

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 cấu trúc câu lệnh lặp for trong Python và vai trò của biến điều khiển ii khi duyệt dãy giá trị.
  • Giải thích được cách hoạt động của range(n), range(a, b) và việc giá trị bb không được lấy.
  • Vận dụng được câu lệnh for kết hợp khởi tạo tổng ngoài thân vòng lặp để tính tổng các số nguyên từ 11 đến nn.
  • Giải thích được vai trò của thụt lề trong việc xác định các lệnh nằm trong thân vòng lặp và phân biệt được số lần lặp với giá trị của biến điều khiển sau vòng lặp.

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, tự kiểm tra bằng cách chạy thử và đối chiếu với dự đoán của bản thân.
  • Giao tiếp và hợp tác: Trao đổi, thống nhất cách viết và cách kiểm thử chương trình trong nhóm đôi; trình bày rõ lập luận khi giải thích kết quả.
  • Giải quyết vấn đề và sáng tạo: Phân tích bài toán tính tổng thành các bước (đọc nn, khởi tạo tổng, duyệt, cộng dồn, in kết quả) và kiểm thử với nhiều bộ dữ liệu, kể cả trường hợp biên n=0n=0.

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

  • NLa - 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 để soạn thảo, thực thi chương trình và quan sát kết quả in ra màn hình.
  • NLc - Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: Viết chương trình dùng vòng lặp for để giải quyết bài toán tính tổng, kiểm tra bằng dữ liệu mẫu n=5n=5 và trường hợp n=0n=0.
  • NLd - Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: Tra cứu, luyện tập tương tác và tự kiểm tra kiến thức về câu lệnh for trên trang bài học số NeoEdu.
  • NLe - Hợp tác trong môi trường số: Cùng bạn trong nhóm đôi chia sẻ mã nguồn, cùng kiểm thử và thống nhất kết quả trên máy tính.

3. Phẩm chất

  • Chăm chỉ: Kiên trì gõ, chạy thử và sửa lỗi thụt lề, lỗi cận của range cho đến khi chương trình cho kết quả đúng.
  • Trách nhiệm: Hoàn thành đầy đủ phần việc được giao trong nhóm và ghi lại kết quả kiểm thử trung thực.
  • Trung thực: Ghi đúng kết quả chạy thực tế của chương trình, không sao chép mã của bạn mà không hiểu lập luận, ghi nguồn khi tham khảo.

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, cài đặt Python 3 và môi trường soạn thảo (Thonny hoặc IDLE).
  • Slide minh họa cấu trúc for, hàm range và bảng theo dõi giá trị biến s qua từng lượt lặp.
  • Phiếu học tập số 1, bộ đề trắc nghiệm và bài tập 2 đến 9 đã chuẩn bị sẵn.
  • 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-20-cau-lenh-lap-for.

2. Học sinh

  • Máy tính có cài Python 3 và môi trường soạn thảo.
  • Vở ghi, bút, giấy nháp để dự đoán kết quả và ghi bảng theo dõi giá trị biến.
  • Phiếu học tập số 1 (in hoặc hiển thị trên máy).

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

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

Cộng nhanh dãy số từ 1 đến n

a) Mục tiêu

Xác định vấn đề: để tính tổng nhiều số liên tiếp, máy tính cần lặp lại việc cộng dồn một cách tự động; từ đó HS có nhu cầu học câu lệnh for.

b) Nội dung

GV nêu bài toán: “Tính nhanh tổng 1+2+3+4+51 + 2 + 3 + 4 + 5. Nếu nn là số bất kì, em cần làm gì?”. HS nhận xét các bước cộng lặp lại và nêu nhu cầu viết một đoạn lệnh lặp lại việc cộng để máy tự làm.

c) Sản phẩm

HS nêu được: tổng cần tìm là 1+2+3+4+5=151 + 2 + 3 + 4 + 5 = 15; việc cộng lặp lại với số lượng phụ thuộc vào nn nên cần một cấu trúc lặp. Từ đó HS xác định nhiệm vụ của bài: dùng câu lệnh for để lặp các lệnh cộng.

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

  1. Giáo viên

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

    Chiếu bài toán tính tổng 1+2+3+4+51 + 2 + 3 + 4 + 5 và hỏi: “Nếu n=100n = 100 thì ta có làm bằng tay được không? Máy tính có thể làm việc lặp này thay em không?”.

    Học sinh

    HS suy nghĩ cá nhân trong 1 phút, ghi nhanh kết quả tổng vào giấy nháp.

  2. Giáo viên

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

    Gợi ý HS mô tả các bước cộng: cộng số thứ nhất, rồi cộng tiếp số thứ hai, cứ thế đến số cuối.

    Học sinh

    HS thảo luận nhanh với bạn cùng bàn, dự kiến trả lời: “Phải cộng lần lượt từng số, số lần cộng phụ thuộc vào nn”.

  3. Giáo viên

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

    Mời 2 đến 3 HS trình bày kết quả và cách cộng. Hỏi: “Nếu viết tay mỗi lần cộng một dòng thì có ổn với nn rất lớn không?”.

    Học sinh

    HS trả lời dự kiến: “Kết quả là 15; với nn lớn thì phải viết rất nhiều lệnh, nên cần một lệnh lặp lại việc cộng.”

  4. Giáo viên

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

    Chốt: bài toán cần lặp lại việc cộng dồn với số lần phụ thuộc vào nn. Giới thiệu câu lệnh for là công cụ để làm việc đó và nêu mục tiêu của tiết học.

    Học sinh

    HS ghi tên bài “Câu lệnh lặp for” và nhiệm vụ của tiết học vào vở.

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

Duyệt dãy giá trị với for và hàm range

a) Mục tiêu

Giải thích được cách for duyệt một dãy giá trị và cách hàm range tạo dãy: range(n) cho 00 đến n−1n-1, range(a, b) không gồm bb, muốn cộng từ 11 đến nn dùng range(1, n+1).

b) Nội dung

HS làm việc theo cặp với Phiếu học tập số 1 và quan sát bảng dự đoán trên slide. Từng cặp dự đoán giá trị của biến ii trong các trường hợp: range(4), range(2, 6), range(1, 4), range(1, n+1) với n=5n = 5. Sau đó các cặp chạy thử bằng Python để kiểm tra dự đoán. Phiếu học tập số 1 nêu rõ: “Điền vào bảng giá trị của ii và nhận xét vì sao cận phải không được lấy”.

c) Sản phẩm

Kết quả điền trong Phiếu học tập số 1:

  • range(4) sinh 0,1,2,30, 1, 2, 3 (có 44 giá trị, bắt đầu từ 00, dừng trước 44).
  • range(2, 6) sinh 2,3,4,52, 3, 4, 5 (không gồm 66).
  • range(1, 4) sinh 1,2,31, 2, 3 (không gồm 44), nên đáp án đúng là A.
  • range(1, n+1) với n=5n = 5 sinh 1,2,3,4,51, 2, 3, 4, 5, đây là cách lấy đủ các số từ 11 đến nn.
    Kết luận HS rút ra: for duyệt lần lượt từng giá trị của dãy; cận phải bb của range(a, b) không được lấy.

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

  1. Giáo viên

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

    Phát Phiếu học tập số 1, yêu cầu các cặp dự đoán giá trị của ii trong 4 trường hợp rồi kiểm tra bằng Python. Nhắc HS chú ý cận phải.

    Học sinh

    HS nhận phiếu, đọc yêu cầu và ghi dự đoán vào phiếu.

  2. Giáo viên

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

    Đi quanh lớp, hỗ trợ cặp nào gõ sai cú pháp for i in range(...) và thụt lề.

    Học sinh

    Các cặp gõ đoạn lệnh for i in range(4): print(i) và các biến thể tương tự, quan sát kết quả và so sánh với dự đoán.

  3. Giáo viên

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

    Mời một cặp trình bày kết quả range(1, 4). Hỏi: “Vì sao không có số 44 trong kết quả?”.

    Học sinh

    HS trả lời dự kiến: “Vì cận phải 44 không được lấy, dãy chỉ gồm 1,2,31, 2, 3.”

  4. Giáo viên

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

    Chốt: range(n) tạo 00 đến n−1n-1; range(a, b) không gồm bb; muốn lấy đến nn thì viết range(1, n+1). Nhấn mạnh việc for duyệt lần lượt từng giá trị.

    Học sinh

    HS ghi phần Ghi nhớ vào vở: for duyệt một dãy giá trị; range(n) tạo 0..n−10..n-1, range(a, b) không gồm bb.

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

Khởi tạo tổng và cập nhật trong thân vòng lặp

a) Mục tiêu

Giải thích được vai trò khởi tạo s=0s = 0 ngoài thân vòng lặp, thụt lề để xác định lệnh lặp, và phân biệt số lần lặp với giá trị của biến điều khiển sau vòng lặp.

b) Nội dung

GV chiếu chương trình mẫu tính tổng từ 11 đến nn:

n=int(input())
s=0
for i in range(1,n+1):
    s=s+i
print(s)

HS làm việc nhóm đôi, lập bảng theo dõi giá trị của ss và ii qua từng lượt khi n=5n = 5, trả lời câu hỏi: “Tổng sau các lượt lần lượt là bao nhiêu? Vì sao s=0s = 0 phải đặt ngoài vòng lặp? Khi thụt lề sai thì điều gì xảy ra? Số lần lặp là bao nhiêu và giá trị của ii sau vòng lặp là bao nhiêu?”.

c) Sản phẩm

Bảng theo dõi khi n=5n = 5:

  • Lượt 1: i=1i = 1, s=1s = 1.
  • Lượt 2: i=2i = 2, s=3s = 3.
  • Lượt 3: i=3i = 3, s=6s = 6.
  • Lượt 4: i=4i = 4, s=10s = 10.
  • Lượt 5: i=5i = 5, s=15s = 15; chương trình in 15.
    Kết luận HS rút ra:
  • s=0s = 0 được khởi tạo một lần ngoài thân vòng lặp; nếu đặt trong thân thì mỗi lượt đều xóa tổng cũ.
  • Thụt lề xác định lệnh nào thuộc thân vòng lặp; dòng print(s) không thụt lề nên chỉ in sau khi lặp xong.
  • Vòng lặp chạy 55 lần, nhưng sau vòng lặp biến ii có giá trị cuối cùng là 55; số lần lặp và giá trị biến điều khiển cuối là hai khái niệm khác nhau.

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

  1. Giáo viên

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

    Chiếu chương trình mẫu và yêu cầu nhóm đôi lập bảng theo dõi ii và ss với n=5n = 5 trên giấy nháp trước khi chạy thử.

    Học sinh

    HS đọc chương trình, lập bảng theo dõi trên giấy nháp, dự đoán kết quả cuối cùng.

  2. Giáo viên

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

    Yêu cầu HS nhập n=5n = 5 để chạy thử và đối chiếu với bảng vừa lập; sau đó thử đổi s=0 vào trong thân vòng lặp để quan sát.

    Học sinh

    HS chạy chương trình, thấy kết quả 15; thử đặt s=0 trong thân vòng lặp và nhận thấy kết quả chỉ còn giá trị của lượt cuối.

  3. Giáo viên

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

    Mời 1 đến 2 nhóm trình bày bảng theo dõi và giải thích vì sao ss phải được khởi tạo ngoài vòng lặp. Hỏi: “Biến ii sau khi kết thúc vòng lặp có giá trị bằng bao nhiêu?”.

    Học sinh

    HS trả lời dự kiến: “Các tổng lần lượt là 1,3,6,10,151, 3, 6, 10, 15. Nếu đặt s=0s=0 trong thân thì tổng bị xóa mỗi lượt. Sau vòng lặp i=5i = 5, còn vòng lặp chạy 55 lần.”

  4. Giáo viên

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

    Chốt: khởi tạo tổng ngoài thân vòng lặp; thụt lề xác định thân vòng lặp; phân biệt số lần lặp với giá trị ii cuối cùng. Nhắc HS lỗi thường gặp khi đặt sai thụt lề.

    Học sinh

    HS ghi vào vở: khởi tạo s=0s = 0 trước vòng lặp; các lệnh thụt lề là thân vòng lặp; số lần lặp khác giá trị ii cuối.

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

Trạm luyện tập và tự kiểm tra trên NeoEdu

a) Mục tiêu

Vận dụng được cách đọc, dự đoán kết quả chương trình for và chọn đúng cách dùng range; sắp xếp đúng phương pháp giải một bài toán tính tổng.

b) Nội dung

HS chia thành 3 trạm, mỗi trạm 1 nhóm, luân phiên sau 4 phút:

  • Trạm 1: Dự đoán kết quả các chương trình sau: (a) s=0, for i in range(4), s=s+i, in ss; (b) s=0, for i in range(2,6), s+=i, in ss; (c) s=1, for i in range(3), s*=2, in ss.
  • Trạm 2: Chọn đáp án đúng: range(1,4) sinh giá trị nào? A. 1,2,31, 2, 3; B. 1,2,3,41, 2, 3, 4; C. 0,1,2,30, 1, 2, 3; D. 4,3,2,14, 3, 2, 1. Đánh giá nhận định: “Đặt s=0s=0 trong mỗi lượt vẫn giữ tổng các lượt trước.” Đúng hay sai?
  • Trạm 3: Sắp xếp các bước giải bài toán tính tổng: Duyệt 11 đến nn; Đọc nn và khởi tạo tổng; In tổng sau vòng lặp; Cộng từng ii vào tổng.
    HS có thể kiểm tra bằng bài tập tương tác trên NeoEdu.

c) Sản phẩm

Đáp án:

  • Trạm 1: (a) in 66 vì 0+1+2+3=60+1+2+3 = 6; (b) in 1414 vì 2+3+4+5=142+3+4+5 = 14; (c) in 88 vì ss nhân 22 ba lần: 1→2→4→81 \to 2 \to 4 \to 8.
  • Trạm 2: Đáp án A, vì cận phải 44 không được lấy. Nhận định “Đặt s=0s=0 trong mỗi lượt vẫn giữ tổng các lượt trước” là Sai, vì lệnh này xóa tổng cũ mỗi lần.
  • Trạm 3: Thứ tự đúng: Đọc nn và khởi tạo tổng → Duyệt 11 đến nn → Cộng từng ii vào tổng → In tổng sau vòng lặp.
    HS nộp đáp án tự kiểm tra cho GV xem qua NeoEdu hoặc phiếu ghi của nhóm.

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

  1. Giáo viên

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

    Giới thiệu 3 trạm, quy định luân phiên 4 phút mỗi trạm, nhắc ghi đáp án vào giấy. Mở trang bài tập tương tác NeoEdu trên máy chiếu để HS tự kiểm tra sau khi làm xong.

    Học sinh

    HS nhận nhiệm vụ, phân công người ghi và người đọc trong nhóm.

  2. Giáo viên

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

    Quan sát các trạm, nhắc HS dự đoán trước rồi mới chạy thử; hỗ trợ nhóm gặp khó ở trạm 1 khi dùng s*=2.

    Học sinh

    Các nhóm làm lần lượt 3 trạm, dự đoán rồi kiểm tra bằng Python hoặc bài tương tác NeoEdu.

  3. Giáo viên

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

    Mời đại diện nhóm báo cáo đáp án trạm 1 và trạm 2, hỏi: “Vì sao nhận định ở trạm 2 là sai?”.

    Học sinh

    HS trả lời dự kiến: “Đáp án (a) là 66, (b) là 1414, (c) là 88; nhận định là sai vì đặt s=0s=0 trong thân vòng lặp làm xóa tổng cũ.”

  4. Giáo viên

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

    Chốt đáp án và nhấn mạnh phương pháp giải bài toán tính tổng gồm 4 bước. Nhận xét các lỗi phổ biến của HS.

    Học sinh

    HS sửa lại đáp án sai (nếu có) và ghi phương pháp 4 bước vào vở.

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

Viết và kiểm thử chương trình tính tổng từ 1 đến n

a) Mục tiêu

Vận dụng được câu lệnh for để viết chương trình hoàn chỉnh tính tổng các số nguyên từ 11 đến nn và kiểm tra kết quả bằng dữ liệu mẫu cùng trường hợp n=0n = 0.

b) Nội dung

Bài toán gắn thực tế: Một bạn đi bộ mỗi ngày tăng thêm số bước theo thứ tự 1,2,3,…1, 2, 3, \dots bước; cần tính tổng số bước đi trong nn ngày. Yêu cầu: viết chương trình nhập nn nguyên không âm, in tổng từ 11 đến nn; kiểm tra với n=5n = 5 (kết quả 1515) và n=0n = 0. Giải thích vì sao khi n=0n = 0 chương trình in 00.

c) Sản phẩm

Chương trình gợi ý:

n=int(input())
s=0
for i in range(1,n+1):
    s=s+i
print(s)

Kết quả kiểm thử: với n=5n = 5 in 15 (các tổng sau lượt là 1,3,6,10,151, 3, 6, 10, 15); với n=0n = 0 in 0.
Giải thích: range(1, 1) là dãy rỗng nên thân vòng lặp không thực hiện; biến ss được khởi tạo bằng 00 và được giữ nguyên nên chương trình in 00, đó là tổng của dãy rỗng.
Tiêu chí chấm: khởi tạo tổng ngoài vòng lặp; dùng range(1, n+1); kiểm thử đúng n=5n = 5 và n=0n = 0. Chấp nhận phương án khác đúng và có lập luận.

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

  1. Giáo viên

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

    Nêu bài toán đi bộ tích lũy số bước, yêu cầu HS viết chương trình và kiểm thử với n=5n = 5, n=0n = 0.

    Học sinh

    HS đọc đề, viết chương trình trên máy, chạy thử với hai bộ dữ liệu.

  2. Giáo viên

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

    Theo dõi việc viết mã, gợi ý HS kiểm tra lại cận của range khi kết quả sai.

    Học sinh

    HS gõ chương trình, nhập 55 và 00, ghi kết quả vào vở; đối chiếu với lập luận cho trường hợp n=0n = 0.

  3. Giáo viên

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

    Gọi 1 HS trình bày chương trình và kết quả n=0n = 0, hỏi: “Vì sao n=0n = 0 mà chương trình không báo lỗi và in 00?”.

    Học sinh

    HS trả lời dự kiến: “Vì range(1,1) rỗng nên không lặp; ss khởi tạo 00 được giữ và in ra 00.”

  4. Giáo viên

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

    Chốt: chương trình tính tổng dùng for kết hợp khởi tạo tổng và range(1, n+1); trường hợp biên n=0n = 0 là tổng của dãy rỗng. Nhắc HS luôn kiểm thử với dữ liệu mẫu và trường hợp biên.

    Học sinh

    HS ghi chương trình mẫu và kết luận vào vở, lưu file để nộp.

Phiếu học tập

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

Hoạt động: Duyệt dãy giá trị với for và hàm range.
Nhiệm vụ 1: Dự đoán và điền giá trị của biến ii vào bảng sau, sau đó chạy Python để kiểm tra.

  • Lệnh for i in range(4): các giá trị của ii là ........................
  • Lệnh for i in range(2, 6): các giá trị của ii là ........................
  • Lệnh for i in range(1, 4): các giá trị của ii là ........................
  • Lệnh for i in range(1, n+1) với n=5n = 5: các giá trị của ii là ........................
    Nhiệm vụ 2: Trả lời câu hỏi: Vì sao range(1, 4) không có số 44? Muốn lấy đủ các số từ 11 đến nn thì viết range(...) thế nào?
    Nhiệm vụ 3: Ghi kết luận của nhóm về vai trò của cận phải trong range(a, b).

Hướng dẫn về nhà

  • Viết chương trình nhập hai số nguyên không âm aa và bb với a≤ba \le b, tính tổng các số nguyên từ aa đến bb bằng câu lệnh for và range(a, b+1).
  • Kiểm thử chương trình với các bộ dữ liệu: (a=1a = 1, b=5b = 5) cho kết quả 1515; (a=3a = 3, b=3b = 3) cho kết quả 33. Ghi lại kết quả và giải thích vì sao phải dùng b+1b+1.
  • Tự làm lại bài tập 2, 3, 4 trong bài học và kiểm tra đáp án trên bài tập tương tác của NeoEdu tại neoedu.vn/learn/10/informatics/bai-20-cau-lenh-lap-for.

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.