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 18. Các lệnh vào ra đơn giả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 hàm input() nhận một dòng nhập vào và trả về dữ liệu kiểu xâu (str).
  • Giải thích được vai trò của int() và float() trong việc chuyển xâu thành số khi dữ liệu đầu vào hợp lệ.
  • Nêu được hàm print() đưa dữ liệu ra màn hình và có thể nối nhiều đối số bằng dấu phẩy.
  • Vận dụng được cấu trúc đọc dữ liệu – chuyển kiểu – tính toán – in kết quả để viết chương trình tính tiền từ số lượng và đơn giá, kiểm tra với dữ liệu mẫu 44 và 70007000 cho kết quả 2800028000.
  • Giải thích được vì sao int("3.5") không chuyển thành số nguyên hợp lệ và vì sao không nên dùng eval cho dữ liệu người dùng nhập.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: HS 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 kết quả dự kiến.
  • Giao tiếp và hợp tác: HS làm việc theo cặp, trao đổi để thống nhất câu trả lời và trình bày lập luận về kiểu dữ liệu của input().
  • Giải quyết vấn đề và sáng tạo: HS phân tích lỗi khi cộng hai xâu nhập vào, đề xuất cách chuyển kiểu đúng và viết chương trình hoàn chỉnh cho bài toán tính tiền.

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 lập trình Python để nhập dữ liệu, chạy chương trình và quan sát kết quả in ra.
  • 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 dùng máy tính thử các đầu vào khác nhau để kiểm tra điều kiện áp dụng của chương trình, từ đó phát hiện và sửa lỗi.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: HS sử dụng bài giảng, ví dụ và bài tập tương tác trên trang NeoEdu để tự kiểm tra kiến thức sau giờ học.

3. Phẩm chất

  • Chăm chỉ: HS kiên trì thử nhiều đầu vào khác nhau, không bỏ cuộc khi chương trình chưa chạy đúng.
  • Trách nhiệm: HS tự giác hoàn thành phiếu học tập và bài tập về nhà, ghi lại lí do khi dự đoán sai.
  • Trung thực: HS báo cáo đúng kết quả chạy chương trình, không sao chép mã của bạn mà không hiểu cách làm.

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 sẵn Python 3 hoặc IDE tương đương để chạy thử chương trình mẫu trực tiếp trước lớp.
  • Bảng phụ hoặc slide ghi đoạn chương trình mẫu và các bài tập 1 đến 5, 7, 8 của bài.
  • Phiếu học tập số 1 (in hoặc chiếu lên màn hình).
  • 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-18-cac-lenh-vao-ra-don-gian.

2. Học sinh

  • Máy tính hoặc thiết bị có cài Python (làm việc theo cặp, dùng chung một máy nếu cần).
  • Vở ghi, bút, giấy nháp để viết dự đoán và kết quả.
  • Sách giáo khoa Tin học 10, trang 18 (bài 18).

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

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

Dự đoán kết quả khi nhập hai số

a) Mục tiêu

HS nhận ra input() trả về dữ liệu kiểu xâu và thấy cần chuyển kiểu trước khi tính toán; từ đó xác định nhiệm vụ học tập của bài.

b) Nội dung

GV viết lên bảng đoạn chương trình gồm hai lệnh a = input(), b = input() và print(a + b). GV hỏi: Nếu lần lượt nhập 4 và 7 thì chương trình in ra gì? Vì sao kết quả đó khác với phép tính 4+7=114 + 7 = 11 mà các em đã biết?

c) Sản phẩm

HS dự đoán và giải thích được: chương trình in ra 47, vì input() trả về xâu, phép cộng hai xâu là nối xâu chứ không phải cộng số. Từ đó HS xác định nhiệm vụ: học cách nhập dữ liệu, chuyển sang dạng số và in kết quả đú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 đoạn chương trình lên màn hình, nêu câu hỏi: Nhập 4 và 7 thì máy in ra gì? Vì sao?

    Học sinh

    HS suy nghĩ cá nhân khoảng 1 phút, ghi dự đoán ra giấy nháp.

  2. Giáo viên

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

    GV gợi ý: Hãy nghĩ đến kiểu dữ liệu mà input() trả về.

    Học sinh

    HS trao đổi nhanh với bạn cùng bàn. Dự kiến HS trả lời: "Máy in 47 vì input là xâu, hai xâu nối lại với nhau."

  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 nhanh các ý lên bảng.

    Học sinh

    HS trình bày dự đoán; các HS khác nhận xét về lí do.

  4. Giáo viên

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

    GV chốt: input() trả về xâu, muốn tính toán với số phải chuyển kiểu. GV nêu nhiệm vụ của bài: học các lệnh vào ra đơn giản để tính đúng.

    Học sinh

    HS ghi tên bài và nhiệm vụ học tập vào vở.

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

Lệnh input() và chuyển kiểu int, float

a) Mục tiêu

HS giải thích được vai trò của input(), int() và float(), nhận biết điều kiện dữ liệu hợp lệ trước khi chuyển kiểu.

b) Nội dung

HS làm việc theo cặp với Phiếu học tập số 1. HS trả lời ba câu hỏi: (1) input() trả về kiểu dữ liệu nào? (2) Khi nào cần dùng int() và khi nào dùng float()? (3) Vì sao int("3.5") không chuyển thành số nguyên hợp lệ? HS thử chạy x = int(input()) với các dữ liệu 5 và 3.5 để quan sát.

c) Sản phẩm

Kết quả HS rút ra:

  • input() nhận một dòng và trả về xâu (str).
  • int() chuyển xâu số nguyên thành số nguyên, ví dụ "5" thành 55; float() chuyển xâu số thực thành số thực, ví dụ "7" thành 7,07{,}0.
  • int("3.5") không hợp lệ vì xâu "3.5" không phải dạng số nguyên; phải xử lí theo đúng miền dữ liệu yêu cầu của bài toán.
  • Chỉ chuyển kiểu khi dữ liệu đúng dạng đã nêu; không dùng eval cho dữ liệu người dùng nhập.

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, nêu yêu cầu: Đọc kĩ ba câu hỏi, thảo luận với bạn cùng bàn và thử lệnh trên máy tính.

    Học sinh

    HS nhận phiếu, đọc câu hỏi và chuẩn bị máy tính để thử lệnh.

  2. Giáo viên

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

    GV đi quanh lớp, kiểm tra việc thử lệnh và gợi ý khi HS gặp lỗi. Gợi ý: Hãy dùng type(x) để kiểm tra kiểu dữ liệu của x.

    Học sinh

    HS cặp đôi nhập 5 vào x = input(), dùng print(type(x)) để thấy kiểu str; thử int(input()) với 3.5 và ghi nhận lỗi. Dự kiến HS trả lời: "input() trả về str; dùng int() cho số nguyên và float() cho số thực."

  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 câu trả lời câu (1) và câu (3), mời cặp khác bổ sung câu (2).

    Học sinh

    Đại diện cặp trình bày kết quả thử nghiệm; các cặp khác nhận xét và bổ sung.

  4. Giáo viên

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

    GV chốt kiến thức: input() trả xâu; int() và float() chuyển dạng số khi dữ liệu hợp lệ; int("3.5") không hợp lệ; không dùng eval cho dữ liệu người dùng. GV nhắc HS ghi vào vở phần Ghi nhớ của bài.

    Học sinh

    HS ghi kết luận vào vở và đối chiếu với câu trả lời của cặp mình.

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

Lệnh print và chương trình tính tiền mẫu

a) Mục tiêu

HS nêu được cách print() đưa dữ liệu ra, nối nhiều đối số bằng dấu phẩy và kiểm tra chương trình mẫu với dữ liệu cụ thể.

b) Nội dung

GV cho HS chạy chương trình mẫu: n = int(input()), g = int(input()), print(n * g). HS nhập lần lượt 4 và 7000 để kiểm tra kết quả. Sau đó GV hỏi: Nếu muốn in thêm chữ "Tiền:" trước kết quả, ta viết print như thế nào? HS thử lệnh print("Tiền:", n * g) trên trang bài tập tương tác NeoEdu.

c) Sản phẩm

HS rút ra:

  • Với đầu vào 4 và 7000, chương trình in 28000, vì 4×7000=280004 \times 7000 = 28000.
  • print() có thể nối nhiều đối số bằng dấu phẩy, ví dụ print("Tiền:", n * g) in ra Tiền: 28000 (các đối số cách nhau bằng một khoảng trắng).
  • Chương trình chỉ đúng khi dữ liệu là số nguyên không âm, đúng với miền của bài.

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 mẫu, yêu cầu HS nhập 4 và 7000, dự đoán kết quả trước khi chạy.

    Học sinh

    HS dự đoán kết quả và ghi vào giấy nháp trước khi chạy chương trình.

  2. Giáo viên

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

    GV hướng dẫn HS mở bài tương tác trên NeoEdu (neoedu.vn/learn/10/informatics/bai-18-cac-lenh-vao-ra-don-gian) và thử thêm câu lệnh print nhiều đối số.

    Học sinh

    HS chạy chương trình, so sánh với dự đoán. Dự kiến HS trả lời: "In ra 28000 vì 4 nhân 7000 bằng 28000." HS thử print("Tiền:", n * g) và thấy kết quả Tiền: 28000.

  3. Giáo viên

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

    GV mời HS đọc kết quả và giải thích lệnh print có nhiều đối số; hỏi thêm: Nếu nhập số lượng là 0 thì kết quả là gì?

    Học sinh

    HS trình bày kết quả. Dự kiến HS trả lời: "Kết quả là 0, vì 0 nhân bất kì số nào cũng bằng 0 và 0 thuộc miền số nguyên không âm."

  4. Giáo viên

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

    GV chốt: print() đưa dữ liệu ra và có thể nối nhiều đối số bằng dấu phẩy; chương trình mẫu đã được kiểm tra với dữ liệu 4 và 7000 cho kết quả 28000.

    Học sinh

    HS ghi kết quả kiểm tra và cách dùng print nhiều đối số vào vở.

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

Luyện tập dự đoán kết quả và nhận biết đúng sai

a) Mục tiêu

HS vận dụng kiến thức về input(), int(), float() và print() để dự đoán kết quả chương trình và nhận biết các khẳng định đúng, sai.

b) Nội dung

GV chiếu lần lượt các bài tập sau và HS làm theo nhóm đôi:

  • Bài 1: x = int(input()), print(x + 2); đầu vào 5. Chương trình in ra số nào?
  • Bài 2: x = float(input()), print(x / 2); đầu vào 7. Chương trình in ra số nào?
  • Bài 3: a = int(input()), b = int(input()), print(a + b); đầu vào 8 và 11. Chương trình in ra số nào?
  • Bài 4: input() trả trực tiếp kiểu gì? A. str; B. int luôn; C. float luôn; D. bool luôn.
  • Bài 5: Khẳng định "int("3.5") là cách chuyển đúng xâu thập phân thành số nguyên" đúng hay sai?

c) Sản phẩm

Đáp án:

  • Bài 1: 7 (5 được chuyển thành số 5, cộng 2 được 7).
  • Bài 2: 3,5 (7 chia 2 bằng 3,53{,}5).
  • Bài 3: 19 (8 cộng 11 bằng 19).
  • Bài 4: A. str (input() trả xâu, cần chuyển kiểu khi muốn tính số).
  • Bài 5: Sai (xâu "3.5" không phải dạng số nguyên; phải xử lí theo miền yêu cầu).

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 năm bài tập, nêu yêu cầu: Dự đoán kết quả từng bài trước, sau đó kiểm tra bằng máy nếu cần.

    Học sinh

    HS nhận bài tập, làm việc theo cặp đôi, ghi đáp án vào vở.

  2. Giáo viên

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

    GV quan sát, hỗ trợ cặp nào gặp khó khăn ở bài 2 (phép chia) hoặc bài 5 (chuyển kiểu).

    Học sinh

    HS thảo luận, chạy thử trên máy khi cần. Dự kiến HS trả lời: bài 1 là 7, bài 2 là 3,5, bài 3 là 19, bài 4 là A, bài 5 là Sai.

  3. Giáo viên

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

    GV gọi ngẫu nhiên 2 đến 3 HS trình bày đáp án và lí do, yêu cầu HS giải thích vì sao bài 5 là sai.

    Học sinh

    HS trình bày đáp án và lập luận. Dự kiến HS trả lời bài 5: "Sai, vì 3.5 không phải số nguyên nên int không chuyển được."

  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: phải chuyển kiểu đúng với dữ liệu; dự đoán đúng cần hiểu kiểu dữ liệu của từng lệnh.

    Học sinh

    HS sửa lại đáp án sai (nếu có) và ghi nhớ.

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

Viết chương trình tính tiền mua vở

a) Mục tiêu

HS viết chương trình hoàn chỉnh đọc số lượng vở và đơn giá, tính tiền, in kết quả; kiểm tra chương trình với dữ liệu mẫu và giải thích kết quả.

b) Nội dung

Nhiệm vụ: Đọc số lượng vở nguyên không âm và đơn giá nguyên không âm rồi in ra số tiền phải trả. Thử với dữ liệu 4 và 7000. Viết chương trình hoàn chỉnh và kiểm tra theo dữ liệu mẫu. Mở rộng: in câu "Tổng tiền:" trước kết quả. HS làm việc theo cặp, sau đó tự thử thêm một bộ dữ liệu khác.

c) Sản phẩm

Chương trình tham khảo:
n = int(input())
g = int(input())
print("Tổng tiền:", n * g)
Với đầu vào 4 và 7000, chương trình in Tổng tiền: 28000. Tiêu chí đánh giá: đọc và chuyển đúng hai số; nhân và in đúng; giải thích được miền dữ liệu là số nguyên không âm. Chấp nhận phương án tương đương đúng, có lí giải.

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ụ viết chương trình tính tiền mua vở, nhắc HS nhớ các bước: đọc, chuyển kiểu, tính, in và kiểm tra.

    Học sinh

    HS đọc đề, thảo luận cách làm với bạn cùng bàn trước khi viết mã.

  2. Giáo viên

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

    GV hướng dẫn HS viết mã và chạy thử với dữ liệu 4 và 7000; yêu cầu thử thêm một bộ dữ liệu khác (ví dụ 5 và 3000).

    Học sinh

    HS viết chương trình, chạy kiểm tra. Dự kiến HS trả lời: với 5 và 3000 chương trình in Tổng tiền: 15000.

  3. Giáo viên

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

    GV mời 1 đến 2 cặp trình bày mã và kết quả kiểm tra, hỏi: Vì sao chương trình này không dùng input() + input()?

    Học sinh

    HS trình bày mã và giải thích. Dự kiến HS trả lời: "Vì input() trả về xâu, cộng hai xâu sẽ nối chúng lại thay vì tính tổng."

  4. Giáo viên

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

    GV nhận xét chung, chốt: chương trình tính tiền có cấu trúc đọc – chuyển kiểu – tính – in; nhắc HS hoàn thiện bài tập về nhà.

    Học sinh

    HS ghi mã mẫu vào vở và hoàn thiện chương trình của mình.

Phiếu học tập

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

Nhiệm vụ: Thảo luận với bạn cùng bàn, thử lệnh trên máy tính và trả lời các câu hỏi sau.

  • Câu 1: Hàm input() trả về dữ liệu kiểu gì? Thử: x = input(), print(type(x)) với đầu vào 5.
  • Câu 2: Khi nào dùng int(), khi nào dùng float()? Cho ví dụ với đầu vào 5 và 3,5 (nhập 3.5 theo dạng thập phân).
  • Câu 3: Vì sao int("3.5") không chuyển thành số nguyên hợp lệ? Nêu kết luận của nhóm.
  • Câu 4: Vì sao không nên dùng eval cho dữ liệu người dùng nhập? Ghi lí do ngắn gọn.
    Bảng ghi kết quả thử nghiệm:
  • Lệnh thử | Đầu vào | Kết quả quan sát | Kết luận
  • Ví dụ: int(input()) | 5 | 5 (số nguyên) | Hợp lệ

Hướng dẫn về nhà

  • Hoàn thiện chương trình tính tiền mua vở trong hoạt động vận dụng, thêm câu lệnh print để in đầy đủ dạng "Tổng tiền: ...".
  • Thử chương trình với ít nhất 3 bộ dữ liệu khác nhau (ví dụ: 0 và 5000; 10 và 2500; 3 và 4500), ghi lại kết quả và giải thích vì sao kết quả đúng.
  • Trả lời ngắn gọn vào vở: Vì sao input() + input() không tự cộng hai số người dùng nhập? Nêu cách sửa lỗi đó.
  • Luyện tập tương tác trên trang bài học NeoEdu (neoedu.vn/learn/10/informatics/bai-18-cac-lenh-vao-ra-don-gian) để tự kiểm tra kiến thức bài 18 và ghi lại các câu sai để hỏi GV vào tiết 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.