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

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 while trong Python gồm điều kiện lặp và thân vòng lặp.
  • Giải thích được while kiểm tra điều kiện trước mỗi lượt, thân vòng lặp chỉ chạy khi điều kiện đúng và có thể không chạy lần nào.
  • Giải thích được vai trò của khởi tạo biến và bước cập nhật trong việc đưa vòng lặp tới điều kiện dừng.
  • Vận dụng được câu lệnh while để viết chương trình tính tổng từ 1 đến n, kiểm tra kết quả với n=4 và n=0.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: Chủ động theo dõi, tự kiểm tra kết quả chạy chương trình mẫu và rút ra quy tắc hoạt động của while qua bài học trên trang NeoEdu.
  • Giao tiếp và hợp tác: Làm việc nhóm đôi, trao đổi cách theo dõi giá trị biến qua từng lượt và thống nhất kết quả trước khi báo cáo.
  • Giải quyết vấn đề và sáng tạo: Phân tích bài toán tính tổng, xác định khởi tạo, điều kiện và bước cập nhật để viết chương trình hoàn chỉnh và xử lí trường hợp đặc biệt n=0.

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áy tính, môi trường Python và trang bài học NeoEdu để chạy, quan sát và kiểm tra chương trình có câu lệnh while.
  • 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ử chương trình tính tổng với nhiều dữ liệu đầu vào để kiểm tra điều kiện áp dụng và giải thích kết quả.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: Dùng bài tập tương tác trên NeoEdu để tự kiểm tra kiến thức về while sau giờ học.
  • Hợp tác trong môi trường số: Trao đổi, chia sẻ mã chương trình và kết quả trong nhóm qua máy chiếu hoặc phiếu học tập số.

3. Phẩm chất

  • Chăm chỉ: Kiên trì theo dõi từng lượt chạy của vòng lặp và thử lại khi chương trình cho kết quả chưa đúng.
  • Trách nhiệm: Hoàn thành đúng phần việc được nhóm giao, kiểm tra kĩ mã trước khi nộp kết quả.
  • Trung thực: Ghi nhận đúng kết quả chạy thực tế của chương trình, không sao chép đáp án mà không kiểm chứng.

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

1. Giáo viên

  • Máy tính và máy chiếu để trình chiếu chương trình mẫu và bảng theo dõi giá trị biến.
  • Môi trường lập trình Python (IDLE hoặc Thonny) đã cài sẵn.
  • Phiếu học tập số 1 và Phiếu học tập số 2 in sẵn cho từng nhóm.
  • Bảng phụ hoặc bảng trắng để ghi sơ đồ luồng của while.
  • 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-21-cau-lenh-lap-while.

2. Học sinh

  • Máy tính có Python (hoặc truy cập được trang NeoEdu) dùng chung theo cặp đôi.
  • Vở ghi, bút, giấy nháp để theo dõi giá trị biến.

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

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

Đoán xem chương trình chạy bao nhiêu lượt

a) Mục tiêu

Kết nối với kiến thức đã học về câu lệnh if và nhận ra nhu cầu lặp lại một đoạn lệnh khi chưa biết trước số lần lặp.

b) Nội dung

HS đọc đoạn chương trình sau trên bảng: x = 1, sau đó lặp khi x nhỏ hơn 4 thì in x rồi tăng x lên 1. GV hỏi: Chương trình in ra những số nào? Nếu muốn viết chương trình in các số từ 1 đến n với n do người dùng nhập thì cần câu lệnh nào để lặp đúng số lần? HS chưa biết trước số lần lặp khi n thay đổi.

c) Sản phẩm

HS dự đoán được chương trình in các số 1, 2, 3 và nêu được ý tưởng: cần một câu lệnh lặp kiểm tra điều kiện trước mỗi lần thực hiện, lặp khi điều kiện còn đúng. Từ đó xác định tên bài học: câu lệnh lặp while.

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 ngắn lên màn hình và yêu cầu HS dự đoán kết quả in ra. GV đặt câu hỏi: Nếu n do người dùng nhập, ta không biết trước số lần lặp, ta nên làm thế nào?

    Học sinh

    HS đọc đoạn lệnh, suy nghĩ cá nhân trong 1 phút và ghi dự đoán vào vở.

  2. Giáo viên

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

    GV cho HS trao đổi nhanh với bạn cùng bàn và gợi ý: Chú ý điều kiện được kiểm tra vào thời điểm nào.

    Học sinh

    HS thảo luận cặp đôi, thống nhất kết quả dự đoán và ý tưởng về câu lệnh lặp có điều kiện.

  3. Giáo viên

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

    GV mời 2 cặp trình bày dự đoán và lí do. GV ghi nhanh ý tưởng lên bảng.

    Học sinh

    Trả lời dự kiến: Chương trình in 1, 2, 3. Vì điều kiện x<4 còn đúng khi x=1, 2, 3 và sai khi x=4. Cần lệnh lặp dựa trên điều kiện để chạy đúng số lần chưa biết trước.

  4. Giáo viên

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

    GV dẫn dắt: Câu lệnh while thực hiện lặp lại thân vòng lặp khi điều kiện còn đúng. GV giới thiệu tên bài học Câu lệnh lặp while.

    Học sinh

    HS ghi tên bài học và tiêu đề mục ghi nhớ đầu tiên vào vở.

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

Cấu trúc và cách hoạt động của while

a) Mục tiêu

Nêu được cấu trúc while và giải thích được việc kiểm tra điều kiện trước mỗi lượt, khởi tạo biến và bước cập nhật.

b) Nội dung

HS làm việc theo nhóm 4 (kĩ thuật khăn trải bàn): mỗi HS nhận một góc của tờ phiếu, theo dõi giá trị biến i và s khi chạy chương trình mẫu với n=4. Nhiệm vụ: (1) Điền cấu trúc chung của while gồm điều kiện, thân vòng lặp. (2) Ghi giá trị i trước khi kiểm tra điều kiện ở mỗi lượt. (3) Cho biết vì sao cần câu lệnh i=i+1 và điều gì xảy ra nếu quên câu lệnh này. Chương trình mẫu: n=int(input()), i=1, s=0, while i<=n: s+=i rồi i+=1, cuối cùng print(s).

c) Sản phẩm

Kiến thức HS rút ra:

  • Cấu trúc: while <điều kiện>: rồi thân vòng lặp được viết thụt đầu dòng.
  • while kiểm tra điều kiện trước mỗi lượt; thân chỉ chạy khi điều kiện đúng, do đó có thể không chạy lần nào (khi n=0).
  • Khởi tạo i=1, s=0 trước vòng lặp; bước cập nhật i=i+1 đưa i tới giá trị làm điều kiện sai.
  • Quên cập nhật i khiến điều kiện luôn đúng và vòng lặp không dừng.
    Với n=4, chương trình in 10 (1+2+3+4), ra khỏi vòng lặp khi i=5.

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

  1. Giáo viên

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

    GV chia lớp thành nhóm 4, phát phiếu học tập số 1 và giao nhiệm vụ theo góc. GV hướng dẫn HS mở trang bài giảng NeoEdu mục Hiểu cách hoạt động để đối chiếu.

    Học sinh

    HS nhận nhiệm vụ, mỗi người phụ trách một góc của phiếu, đọc kĩ yêu cầu.

  2. Giáo viên

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

    GV đi quanh lớp, nhắc HS dùng bảng theo dõi giá trị biến: ghi i, s trước mỗi lần kiểm tra điều kiện. Gợi ý HS đặt câu hỏi: Khi i=5 điều kiện còn đúng không?

    Học sinh

    HS chạy chương trình mẫu trên máy (hoặc tính tay), ghi lại giá trị i, s qua từng lượt và thảo luận trong nhóm để hoàn thiện phiếu.

  3. Giáo viên

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

    GV mời đại diện 2 nhóm trình bày kết quả theo dõi và cấu trúc while. GV hỏi thêm: Nếu n=0 thì chương trình in gì?

    Học sinh

    Trả lời dự kiến: Cấu trúc while điều kiện: thân. Với n=4, các lượt có i=1, 2, 3, 4 và s=1, 3, 6, 10; khi i=5 điều kiện sai nên thoát. Nếu quên i=i+1 thì i luôn bằng 1 và điều kiện luôn đúng nên vòng lặp không dừng. Với n=0, điều kiện 1<=0 sai ngay từ đầu nên không chạy thân, in 0.

  4. Giáo viên

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

    GV chốt: while kiểm tra điều kiện trước mỗi lượt; cần khởi tạo biến trước vòng lặp và có bước cập nhật để điều kiện cuối cùng sai. GV nhấn mạnh: thân vòng lặp có thể không chạy lần nào. GV yêu cầu HS ghi phần Ghi nhớ vào vở.

    Học sinh

    HS ghi cấu trúc while, ba thành phần khởi tạo, điều kiện, cập nhật và kết luận về trường hợp n=0 vào vở.

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

Theo dõi bất biến và kiểm thử trường hợp đặc biệt

a) Mục tiêu

Giải thích được ý nghĩa bất biến (tổng đã cộng tới đâu sau mỗi lượt) và kiểm thử chương trình với các trường hợp đầu vào khác nhau.

b) Nội dung

Cả lớp chia nhóm đôi, thực hiện Phiếu học tập số 2: (1) Trước mỗi lượt kiểm tra điều kiện, s bằng tổng của những số nào? (2) Chạy chương trình với n=4 và n=0 trên máy, so sánh kết quả với tính tay. (3) Với n=4, nếu đổi điều kiện thành i<n thì kết quả là bao nhiêu? Vì sao?

c) Sản phẩm

Kiến thức HS rút ra:

  • Trước mỗi lượt kiểm tra, s là tổng 1+2+...+(i-1) (với i=1 thì s=0).
  • Chương trình đúng với n=4 cho kết quả 10 và với n=0 cho kết quả 0.
  • Khi đổi thành i<n với n=4, chỉ cộng 1, 2, 3 được s=6, vì khi i=4 điều kiện 4<4 sai. Muốn gồm số 4 phải dùng i<=n.

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 và yêu cầu HS nhập chương trình mẫu vào máy, chạy với n=4 và n=0.

    Học sinh

    HS đọc nhiệm vụ, nhập mã vào môi trường Python và chuẩn bị bảng ghi kết quả.

  2. Giáo viên

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

    GV hướng dẫn HS ghi lại giá trị s sau từng lượt và kiểm tra lại dự đoán khi đổi điều kiện thành i<n.

    Học sinh

    HS chạy chương trình, quan sát kết quả, thảo luận cặp đôi để trả lời ba câu hỏi trên phiếu.

  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 kết quả và lập luận. GV hỏi: Vì sao n=0 vẫn không lỗi?

    Học sinh

    Trả lời dự kiến: Trước mỗi lượt s là tổng các số đã cộng. Với n=4 in 10, với n=0 in 0. Khi đổi thành i<n với n=4 in 6, vì thiếu số 4. Với n=0, điều kiện 1<0 sai nên thân không chạy.

  4. Giáo viên

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

    GV nhấn mạnh: Nên kiểm thử với cả trường hợp thường và trường hợp biên như n=0 để kiểm tra điều kiện lặp và điều kiện dừng đã đúng.

    Học sinh

    HS ghi vào vở: kiểm thử n=0, so sánh i<=n với i<n và rút ra vai trò của dấu so sánh.

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

Trắc nghiệm và theo dõi kết quả chương trình

a) Mục tiêu

Vận dụng kiến thức về while để dự đoán kết quả chương trình, nhận biết lỗi và chọn đáp án đúng.

b) Nội dung

HS làm bài tập trên phiếu học tập và kiểm chứng trên máy:
Bài 1: Chương trình x=1, while x<10: x*=2, print(x) in ra số nào?
Bài 2: Chương trình i=0, s=0, while i<3: s+=2 rồi i+=1, print(s) in ra số nào?
Bài 3: Chương trình x=5, while x<5: x+=1, print(x) in ra số nào?
Bài 4: Điều kiện của while được kiểm tra khi nào? A. Trước mỗi lượt; B. Chỉ sau lượt cuối; C. Không kiểm tra; D. Chỉ khi in.
Bài 5: Quên câu lệnh i+=1 trong chương trình tính tổng với n>=1 có thể làm vòng lặp không dừng. Đúng hay sai?
Bài 6: Sắp xếp các bước giải: Khởi tạo biến, Kiểm tra điều kiện, Thực hiện và cập nhật, Quay lại kiểm tra rồi xuất kết quả khi dừng.

c) Sản phẩm

Đáp án:
Bài 1: 16 (x: 1→2→4→8→16; 16<10 sai).
Bài 2: 6 (cộng 2 ba lần).
Bài 3: 5 (điều kiện sai ngay nên giữ x=5).
Bài 4: A (kiểm tra trước mỗi lượt; thân có thể không chạy lần nào).
Bài 5: Đúng (i giữ nguyên 1 và điều kiện luôn đúng).
Bài 6: Khởi tạo biến → Kiểm tra điều kiện → Thực hiện và cập nhật → Quay lại kiểm tra rồi xuất kết quả khi dừng.

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 các câu hỏi lên màn hình và yêu cầu HS dự đoán kết quả trước khi chạy máy. GV nhắc HS chỉ chạy chương trình để kiểm chứng sau khi đã tự làm.

    Học sinh

    HS đọc từng câu, dự đoán đáp án cá nhân và ghi vào vở.

  2. Giáo viên

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

    GV cho HS kiểm chứng trên máy hoặc bài tập tương tác trên NeoEdu, theo dõi nhóm có kết quả khác nhau để hỗ trợ.

    Học sinh

    HS nhập chương trình vào máy, chạy và so sánh với dự đoán, sửa lại lập luận nếu sai.

  3. Giáo viên

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

    GV mời HS trả lời từng câu và giải thích. GV yêu cầu HS nêu lí do vì sao Bài 3 cho kết quả 5 chứ không phải 6.

    Học sinh

    Trả lời dự kiến: Bài 1 là 16, Bài 2 là 6, Bài 3 là 5 vì 5<5 sai nên không vào thân, Bài 4 là A, Bài 5 là Đúng, Bài 6 sắp xếp đúng thứ tự như đáp án.

  4. Giáo viên

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

    GV chốt lại: while chỉ thực hiện thân khi điều kiện đúng; cần kiểm tra cả khả năng thân không chạy và khả năng vòng lặp không dừng.

    Học sinh

    HS sửa lại đáp án sai (nếu có) và ghi nhận xét vào vở.

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

Viết chương trình tính tổng từ 1 đến n và trò chơi đoán số

a) Mục tiêu

Vận dụng while để viết chương trình hoàn chỉnh giải quyết bài toán thực tế, kiểm tra điều kiện áp dụng và giải thích kết quả.

b) Nội dung

Nhiệm vụ 1: Viết chương trình nhập n nguyên không âm, tính tổng 1+2+...+n bằng while, in kết quả. Kiểm tra với n=4 (kết quả 10) và n=0 (kết quả 0).
Nhiệm vụ 2 (về nhà, nếu không đủ thời gian): Viết chương trình trò chơi đoán số: máy chọn sẵn số bí mật là 7, người chơi nhập số đoán bằng input() cho đến khi đoán đúng, dùng while để lặp, đếm số lần đoán và in ra. HS giải thích vì sao điều kiện lặp và bước đếm là cần thiết.

c) Sản phẩm

Chương trình tham khảo:
n=int(input())
i=1
s=0
while i<=n:
s+=i
i+=1
print(s)
Kết quả kiểm thử: n=4 in 10; n=0 in 0. Giải thích: khởi tạo i=1, s=0; điều kiện i<=n kiểm tra trước mỗi lượt; bước cập nhật i+=1 đưa vòng lặp tới điều kiện dừng.
Đối với trò chơi đoán số, sản phẩm là chương trình có while với điều kiện chưa đoán đúng và bộ đếm số lần đoán, kèm giải thích cách dừng.

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 toán tính tổng 1 đến n và yêu cầu HS viết chương trình, kiểm tra với n=4 và n=0. GV giao nhiệm vụ 2 cho HS về nhà nếu còn thời gian.

    Học sinh

    HS đọc đề, xác định khởi tạo, điều kiện và bước cập nhật trước khi viết mã.

  2. Giáo viên

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

    GV quan sát các cặp đôi, gợi ý HS kiểm tra điều kiện dừng bằng cách thử giá trị biên n=0.

    Học sinh

    HS viết mã vào máy, chạy thử với n=4 và n=0 rồi chỉnh sửa nếu cần.

  3. Giáo viên

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

    GV mời 1 cặp trình bày chương trình và kết quả kiểm thử, hỏi thêm: Nếu viết i<n thì kết quả với n=4 là bao nhiêu?

    Học sinh

    Trả lời dự kiến: Chương trình in 10 với n=4 và 0 với n=0. Nếu viết i<n thì kết quả là 6 vì thiếu số 4.

  4. Giáo viên

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

    GV nhận xét và chốt: while phù hợp khi chưa biết trước số lần lặp; khi viết cần khởi tạo, điều kiện, cập nhật và kiểm thử trường hợp biên. GV khuyến khích HS hoàn thành nhiệm vụ 2 ở nhà và chia sẻ trên NeoEdu.

    Học sinh

    HS ghi nhận xét, hoàn thiện chương trình và ghi lại kết quả kiểm thử vào vở.

Phiếu học tập

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

Chương trình mẫu:

  • n=int(input())
  • i=1
  • s=0
  • while i<=n:
  • s+=i
    
  • i+=1
    
  • print(s)

Nhiệm vụ (với n=4):

  • Điền bảng theo dõi giá trị trước mỗi lần kiểm tra điều kiện:
    • Lượt 1: i=?, s=?
    • Lượt 2: i=?, s=?
    • Lượt 3: i=?, s=?
    • Lượt 4: i=?, s=?
    • Lần kiểm tra cuối: i=?, điều kiện đúng hay sai?
  • Viết cấu trúc chung của câu lệnh while (điều kiện, thân vòng lặp).
  • Giải thích vì sao cần câu lệnh i+=1 và điều gì xảy ra nếu quên câu lệnh này.
  • Nếu n=0, chương trình in gì? Vì sao?

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

Nhiệm vụ 1: Trước mỗi lượt kiểm tra điều kiện, giá trị s bằng tổng của những số nào?

Nhiệm vụ 2: Nhập chương trình mẫu vào máy, chạy với n=4 và n=0. Ghi kết quả:

  • n=4: kết quả là ?
  • n=0: kết quả là ?

Nhiệm vụ 3: Thay điều kiện i<=n bằng i<n rồi chạy với n=4.

  • Kết quả là ?
  • Giải thích vì sao số 4 không được cộng vào tổng.
  • Cách sửa để kết quả đúng là gì?

Hướng dẫn về nhà

  • Hoàn thành các bài tập 1 đến 9 trong mục Bài tập của SGK và kiểm chứng từng câu bằng máy tính.
  • Viết chương trình trò chơi đoán số: máy chọn sẵn số bí mật 7, người chơi nhập số đoán bằng input() cho đến khi đoán đúng; dùng while và đếm số lần đoán, in ra số lần đã đoán.
  • Chạy chương trình với ít nhất 3 bộ dữ liệu khác nhau, ghi lại kết quả và giải thích vì sao điều kiện dừng của while luôn được đáp ứng.
  • Truy cập trang bài học NeoEdu (neoedu.vn/learn/10/informatics/bai-21-cau-lenh-lap-while) để làm bài tập tương tác và tự kiểm tra kiến thức.

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.