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 16. Ngôn ngữ lập trình bậc cao và Python

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 ngôn ngữ lập trình bậc cao dùng cấu trúc gần với cách diễn đạt của con người để mô tả thuật toán.
  • Giải thích được cách Python thực hiện lệnh ở chế độ tương tác và ở tệp chương trình, và nêu được lợi ích của việc lưu chương trình vào tệp.
  • Nêu được ý nghĩa của các phép toán ∗*, ∗∗**, //, ////, %\% trong Python.
  • Giải thích được vì sao −7//3=−3-7 // 3 = -3 và −7%3=2-7 \% 3 = 2; vận dụng được dấu ngoặc để điều khiển thứ tự thực hiện phép toán.
  • Vận dụng được lệnh print() để viết chương trình tính chu vi hình chữ nhật và kiểm tra kết quả theo dữ liệu mẫu.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS tự dự đoán kết quả biểu thức, tự chạy chương trình để kiểm chứng và tự sửa lỗi khi kết quả chưa đúng.
  • Giao tiếp và hợp tác: HS làm việc theo cặp, trao đổi cách hiểu về phép chia làm tròn và phép chia lấy dư, trình bày lập luận khi giải thích kết quả.
  • Giải quyết vấn đề và sáng tạo: HS chuyển một yêu cầu bằng lời (tính chu vi) thành biểu thức và lệnh Python đúng cú pháp, đồng thời phát hiện và sửa lỗi thiếu ngoặc.

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: HS sử dụng môi trường Python (chế độ tương tác và tệp chương trình) để thử lệnh, lưu và chạy lại chương trình.
  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông: HS viết chương trình tính chu vi hình chữ nhật, chạy thử, đối chiếu kết quả 2222 với lập luận hai cặp cạnh và sửa biểu thức sai.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS dùng trang bài học số NeoEdu để tự kiểm tra các biểu thức và hoàn thành bài tập tương tác.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì thử nhiều biểu thức, chạy lại chương trình sau mỗi lần sửa và ghi chép kết quả đầy đủ vào phiếu.
  • Trung thực: HS ghi đúng kết quả quan sát được khi chạy chương trình, không sửa kết quả để khớp với dự đoán ban đầu; thừa nhận khi dự đoán sai.

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, môi trường Python (IDLE hoặc tương đương) đã cài sẵn.
  • Trang bài học số NeoEdu: neoedu.vn/learn/10/informatics/bai-16-ngon-ngu-lap-trinh-bac-cao-va-python (phần Hiểu cách hoạt động và bài tập tương tác).
  • Phiếu học tập số 1 (in hoặc chiếu lên màn hình).
  • Bảng phụ hoặc bảng trắng để ghi bảng kết quả các phép toán.

2. Học sinh

  • Máy tính có Python đã cài đặt (hoặc truy cập NeoEdu).
  • Vở ghi, bút, phiếu học tập số 1.
  • Giấy nháp để ghi dự đoán trước khi chạy chương trình.

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

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

Từ lời mô tả đến lệnh cho máy

a) Mục tiêu

HS nhận ra cách diễn đạt bằng lời của con người khác với lệnh mà máy hiểu, từ đó hiểu vì sao cần ngôn ngữ lập trình bậc cao.

b) Nội dung

GV nêu tình huống: “Tính chu vi hình chữ nhật dài 7 cm, rộng 4 cm.” HS mô tả bằng lời các bước tính (lấy chiều dài cộng chiều rộng, nhân 2). GV hỏi: “Máy tính có hiểu trực tiếp câu nói ‘nhân đôi tổng chiều dài và chiều rộng’ không? Cần viết thế nào để máy hiểu?”

c) Sản phẩm

HS nêu được: các bước bằng lời là cộng hai kích thước rồi nhân 2, kết quả 2×(7+4)=222 \times (7 + 4) = 22 cm. Máy chỉ thực hiện đúng khi lệnh được viết theo cú pháp của ngôn ngữ lập trình. Kết luận: ngôn ngữ bậc cao cho phép viết thuật toán gần với cách diễn đạt của người, sau đó máy dịch và thực hiện.

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 tình huống tính chu vi hình chữ nhật dài 7 cm, rộng 4 cm và đặt câu hỏi: “Làm sao mô tả cách tính bằng lời? Máy có hiểu trực tiếp không?”

    Học sinh

    HS lắng nghe, đọc tình huống và suy nghĩ trong 1 phút.

  2. Giáo viên

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

    GV gọi 2–3 HS mô tả các bước tính bằng lời; quan sát và ghi nhanh các cách diễn đạt trên bảng.

    Học sinh

    HS mô tả: “Lấy 7 cộng 4 được 11, rồi nhân 2 được 22.” Một số HS có thể nói: “Cộng chiều dài với chiều rộng rồi nhân 2.”

  3. Giáo viên

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

    GV hỏi: “Nếu viết đúng như câu nói, máy có hiểu ngay không? Vì sao phải viết theo cú pháp?”

    Học sinh

    HS trả lời dự kiến: “Máy chỉ hiểu lệnh đúng cú pháp như dấu ngoặc, dấu nhân.” “Phải viết thành biểu thức 2 * (7 + 4).”

  4. Giáo viên

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

    GV chốt: ngôn ngữ bậc cao dùng cấu trúc gần với cách diễn đạt của người để mô tả thuật toán; Python là một ngôn ngữ như vậy. GV dẫn vào bài học.

    Học sinh

    HS ghi tiêu đề bài học và ý chính vào vở.

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

Chế độ tương tác và tệp chương trình

a) Mục tiêu

HS giải thích được cách Python thực hiện lệnh ở chế độ tương tác và ở tệp chương trình; phân biệt hai cách làm và biết lưu chương trình để chạy lại.

b) Nội dung

HS làm việc theo cặp, đọc mục “Hiểu cách hoạt động” trên NeoEdu. Nhiệm vụ 1: Gõ lệnh print(2 * (7 + 4)) vào cửa sổ chế độ tương tác (Shell) và quan sát kết quả. Nhiệm vụ 2: Tạo tệp mới, gõ đúng lệnh trên, lưu tên chu_vi.py, chạy tệp và ghi kết quả. Câu hỏi GV đặt ra: (1) “Chế độ tương tác phù hợp khi nào?” (2) “Khi nào nên viết chương trình vào tệp?” (3) “Ngôn ngữ bậc cao có ưu điểm gì khi mô tả thuật toán?”

c) Sản phẩm

HS nêu được: chế độ tương tác thực hiện từng lệnh ngay, phù hợp để thử một biểu thức; tệp chương trình lưu nhiều lệnh và chạy lại nhiều lần mà không phải gõ lại. Kết quả in ra là 22. Ngôn ngữ bậc cao giúp viết lệnh gần với cách diễn đạt của người nên dễ đọc, dễ kiểm tra và dễ chia sẻ thuật toán.

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

  1. Giáo viên

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

    GV hướng dẫn HS mở Python ở chế độ tương tác và tạo tệp chu_vi.py; nêu ba câu hỏi trọng tâm và yêu cầu HS ghi kết quả vào vở.

    Học sinh

    HS ghép cặp, một bạn gõ, một bạn ghi chép; cả hai đọc ba câu hỏi.

  2. Giáo viên

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

    GV đi quanh lớp, hỗ trợ HS gặp lỗi chính tả hoặc thiếu dấu ngoặc; gợi ý HS thử thêm một biểu thức như print(2 * 7 + 4) để so sánh.

    Học sinh

    HS gõ lệnh ở chế độ tương tác, nhận kết quả 22; tạo tệp, lưu và chạy, nhận kết quả 22. Một số HS thử thêm print(2 * 7 + 4) và nhận 18.

  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: một cặp nói về chế độ tương tác, một cặp nói về tệp chương trình; GV yêu cầu các cặp còn lại bổ sung.

    Học sinh

    HS trả lời dự kiến: “Chế độ tương tác thử nhanh, kết quả hiện ngay nhưng không lưu lại.” “Tệp chương trình lưu được nhiều lệnh và chạy lại mà không cần gõ lại.”

  4. Giáo viên

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

    GV chốt: chế độ tương tác để thử biểu thức, tệp chương trình để lưu và chạy lại các lệnh; cả hai đều dùng cú pháp Python. Nhấn mạnh: trong tệp, lệnh được thực hiện từ trên xuống dưới.

    Học sinh

    HS ghi vào vở: hai cách làm và kết quả 22 của chương trình mẫu.

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

Các phép toán số học trong Python

a) Mục tiêu

HS nêu được ý nghĩa của ∗*, ∗∗**, //, ////, %\%; giải thích được kết quả với số âm và vận dụng ngoặc để điều khiển thứ tự phép toán.

b) Nội dung

HS làm việc theo nhóm 4 theo kĩ thuật “Dự đoán – kiểm chứng”: mỗi nhóm nhận danh sách biểu thức, dự đoán kết quả trước rồi chạy để kiểm chứng. Danh sách: 2 ** 3, 7 / 2, 7 // 2, -7 // 3, 17 % 5, -7 % 3, print(2 * 3 + 4), print(2 * (3 + 4)). GV hỏi: “Vì sao −7//3-7 // 3 cho −3-3 mà không phải −2-2? Vì sao −7%3-7 \% 3 bằng 22?”

c) Sản phẩm

Bảng kết quả HS ghi được: 2∗∗3=82 ** 3 = 8; 7/2=3,57 / 2 = 3{,}5 (Python in 3.5); 7//2=37 // 2 = 3; −7//3=−3-7 // 3 = -3; 17%5=217 \% 5 = 2; −7%3=2-7 \% 3 = 2; 2 * 3 + 4 in 1010; 2 * (3 + 4) in 1414. Kiến thức HS rút ra: //// làm tròn xuống phía âm vô cùng, nên −7//3=−3-7 // 3 = -3; %\% cho số dư và −7=(−3)×3+2-7 = (-3) \times 3 + 2 nên −7%3=2-7 \% 3 = 2; với số không âm, //// cho thương nguyên quen thuộc; dấu ngoặc đổi thứ tự thực hiện phép toán.

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 danh sách biểu thức, yêu cầu mỗi nhóm ghi dự đoán vào giấy nháp trước khi chạy, và nêu câu hỏi về −7//3-7 // 3 và −7%3-7 \% 3.

    Học sinh

    HS nhóm 4 nhận nhiệm vụ, phân công một bạn ghi, một bạn nhập lệnh, hai bạn đọc và kiểm tra dự đoán.

  2. Giáo viên

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

    GV theo dõi các nhóm, nhắc HS so sánh dự đoán với kết quả máy in ra; với nhóm có kết quả sai, gợi ý HS đọc lại mục “Hiểu cách hoạt động”.

    Học sinh

    HS nhập từng biểu thức, so sánh với dự đoán, ghi kết quả vào bảng. Dự kiến HS dễ sai ở −7//3-7 // 3 (đoán −2-2) và 7/27 / 2 (đoán 33).

  3. Giáo viên

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

    GV mời một nhóm báo cáo kết quả −7//3-7 // 3 và −7%3-7 \% 3, hỏi cả lớp có ai đoán khác không và vì sao.

    Học sinh

    HS trả lời dự kiến: “Kết quả là −3-3 vì //// làm tròn xuống, không cắt về 0.” “Vì −7=(−3)×3+2-7 = (-3) \times 3 + 2 nên dư là 22.”

  4. Giáo viên

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

    GV chốt các ý trong mục product, nhấn mạnh: //// không giống cách cắt về 0 quen thuộc khi số âm; %\% cho số dư; dấu ngoặc quyết định thứ tự phép toán.

    Học sinh

    HS ghi vào vở bảng kết quả và ba quy tắc chính; đánh dấu các biểu thức mình đã dự đoán sai.

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

Đọc kết quả và sửa biểu thức

a) Mục tiêu

HS vận dụng quy tắc thứ tự phép toán, dấu ngoặc và các phép toán ////, %\% để dự đoán và tự kiểm tra kết quả chương trình ngắn.

b) Nội dung

HS làm Phiếu học tập số 1 cá nhân trong 6 phút, sau đó đổi chéo với bạn cùng bàn để kiểm tra bằng cách chạy lệnh trên máy. Nội dung phiếu gồm các bài 1 đến 6 (đề chi tiết trong phần worksheets).

c) Sản phẩm

Đáp án: Bài 1: 11 (nhân trước, 4×2=84 \times 2 = 8, rồi cộng 3). Bài 2: 14 (ngoặc trước, 7×2=147 \times 2 = 14). Bài 3: 2 (vì 17=3×5+217 = 3 \times 5 + 2). Bài 4: A, ** là lũy thừa; ^ không phải lũy thừa trong Python. Bài 5: Đúng, chương trình có thể lưu trong tệp để chạy lại. Bài 6: thứ tự đúng là: Xác định biểu thức cần tính → Viết lệnh print với ngoặc đúng → Chạy và đối chiếu kết quả.

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 hoặc chiếu nội dung, nêu thời gian 6 phút làm cá nhân và 4 phút đổi chéo kiểm tra.

    Học sinh

    HS đọc đề, làm bài cá nhân và ghi đáp án vào phiếu.

  2. Giáo viên

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

    GV quan sát, nhắc HS dự đoán trước khi chạy lệnh; giải đáp thắc mắc về dấu ngoặc.

    Học sinh

    HS làm bài, sau đó đổi phiếu với bạn cùng bàn, nhập lệnh để kiểm tra kết quả.

  3. Giáo viên

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

    GV gọi ngẫu nhiên 3 HS đọc đáp án bài 1, 2, 3; hỏi bài 6: “Vì sao phải xác định biểu thức trước khi viết lệnh?”

    Học sinh

    HS trả lời: “Bài 1 là 11 vì nhân trước cộng; bài 2 là 14 vì ngoặc được tính trước.” “Phải xác định biểu thức để biết lệnh cần viết và kiểm tra sau khi chạy.”

  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 lỗi thường gặp: dùng ^ thay cho **, quên ngoặc khi cần ưu tiên phép cộng.

    Học sinh

    HS sửa lại phiếu theo đáp án đúng và ghi lại các lỗi đã mắc phải.

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

Viết chương trình tính chu vi khu vườn

a) Mục tiêu

HS viết được chương trình hoàn chỉnh tính chu vi hình chữ nhật, kiểm tra theo dữ liệu mẫu và giải thích được kết quả; nhận ra lỗi khi thiếu ngoặc.

b) Nội dung

Tình huống thực tế: một khu vườn hình chữ nhật dài 9 m, rộng 5 m, bác làm hàng rào quanh vườn. HS viết chương trình in chu vi khu vườn, chạy thử và giải thích kết quả. Sau đó HS xét chương trình print(2*9+5) và cho biết kết quả có đúng không, sửa lại nếu sai. Bài này có thể hoàn thành về nhà nếu lớp hết giờ.

c) Sản phẩm

Chương trình mẫu: print(2 * (9 + 5)), kết quả in 2828 (m). Lập luận: chu vi có hai cạnh dài và hai cạnh rộng, nên 2×(9+5)=282 \times (9 + 5) = 28 m. Với print(2*9+5), kết quả là 2323, chưa đúng vì chỉ nhân đôi cạnh dài; sửa thành print(2 * (9 + 5)) hoặc print(2 * 9 + 2 * 5) đều cho 2828.

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 tình huống khu vườn và yêu cầu HS viết chương trình, chạy thử, giải thích và kiểm tra lỗi trong biểu thức 2*9+5.

    Học sinh

    HS đọc tình huống, ghi nhiệm vụ vào vở và bắt đầu viết chương trình trên máy.

  2. Giáo viên

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

    GV theo dõi nhanh, hỗ trợ HS chưa chạy được chương trình; yêu cầu HS giải thích trước khi nộp kết quả.

    Học sinh

    HS viết print(2 * (9 + 5)), chạy và nhận 2828; kiểm tra 2*9+5 và nhận 2323, nhận ra thiếu ngoặc.

  3. Giáo viên

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

    GV mời 2 HS trình bày chương trình và giải thích kết quả 2828; hỏi vì sao 2323 không đúng.

    Học sinh

    HS trả lời dự kiến: “Chu vi có hai cạnh dài và hai cạnh rộng nên phải cộng 9 và 5 rồi nhân 2.” “Biểu thức 2*9+5 chỉ nhân đôi cạnh dài nên sai.”

  4. Giáo viên

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

    GV chốt: chương trình hoàn chỉnh gồm lệnh print với biểu thức có ngoặc đúng; luôn kiểm tra kết quả bằng dữ liệu mẫu và giải thích được lí do.

    Học sinh

    HS ghi chương trình đúng và lỗi cần tránh vào vở.

Phiếu học tập

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

Dùng trong hoạt động “Đọc kết quả và sửa biểu thức”. Làm cá nhân, sau đó kiểm tra bằng cách chạy lệnh trên máy.

  • Câu 1: Chương trình print(3 + 4 * 2) in ra số nào?
  • Câu 2: Chương trình print((3 + 4) * 2) in ra số nào?
  • Câu 3: Chương trình print(17 % 5) in ra số nào? Giải thích bằng phép chia có dư.
  • Câu 4: Phép lũy thừa trong Python dùng kí hiệu nào?
    • A. **
    • B. ^
    • C. //
    • D. %
  • Câu 5: Một chương trình có thể lưu trong tệp để chạy lại. Đúng hay sai? Vì sao?
  • Câu 6: Sắp xếp các bước theo phương pháp giải nhiệm vụ “viết chương trình tính một biểu thức”:
    • (a) Chạy và đối chiếu kết quả
    • (b) Xác định biểu thức cần tính
    • (c) Viết lệnh print với ngoặc đúng

Hướng dẫn về nhà

  • Viết chương trình Python tính chu vi hình chữ nhật có chiều dài 1212 m và chiều rộng 88 m, chạy thử và ghi kết quả. Đáp án mong đợi: 2×(12+8)=402 \times (12 + 8) = 40 m.
  • Trả lời câu hỏi: Vì sao print(2*7+4) không cho chu vi hình chữ nhật dài 7, rộng 4? Hãy sửa lại và ghi lệnh đúng vào vở.
  • Vào NeoEdu, mục bài tập tương tác của Bài 16, làm lại các bài tập về phép toán //// và %\% với số âm; ghi lại một biểu thức em dự đoán sai và giải thích nguyên nhân.
  • Tự đặt một tình huống thực tế (ví dụ tính chu vi sân, bàn học, bảng thông báo) và viết chương trình Python tương ứng, kiểm tra theo dữ liệu mẫu và nộp lại trong tiết học sau.

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.