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 24. Xâu kí tự

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 xâu là dãy kí tự có thứ tự, các kí tự được đánh chỉ số từ 0 và len đếm số kí tự (kể cả khoảng trắng), không phải số byte mã hóa.
  • Giải thích được vì sao không gán trực tiếp s[i] để sửa một kí tự của xâu (xâu bất biến) và cách tạo xâu mới để thay đổi nội dung.
  • Vận dụng được lát cắt s[i:j] (lấy từ vị trí i đến j-1), duyệt xâu bằng for và bộ đếm để đếm số lần xuất hiện của một kí tự.

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ả đoạn lệnh, tự chạy thử trên máy tính và đối chiếu với dự đoán ban đầu để điều chỉnh cách hiểu.
  • Giao tiếp và hợp tác: trao đổi, thống nhất đáp án và phương án viết chương trình trong nhóm cặp; trình bày lập luận khi báo cáo trước lớp.
  • Giải quyết vấn đề và sáng tạo: phân tích bài toán đếm kí tự thành các bước (gán xâu và khởi tạo bộ đếm, duyệt, kiểm tra điều kiện, in kết quả) và kiểm thử với xâu rỗng và xâu mẫu.

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 (IDLE hoặc Thonny) để nhập, chạy và sửa chương trình xử lí xâu.
  • 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 đếm kí tự 'a' trong xâu, chạy kiểm thử với dữ liệu mẫu và xâu rỗng, đối chiếu kết quả để xác nhận lời giải đúng.
  • NLd - Ứng dụng công nghệ thông tin và truyền thông trong học và tự học: làm bài tập tương tác trên trang bài học NeoEdu để tự kiểm tra kiến thức sau tiết học.
  • NLe - Hợp tác trong môi trường số: cùng bạn trong cặp chia sẻ đoạn mã, góp ý và thống nhất kết quả trên máy tính.

3. Phẩm chất

  • Chăm chỉ: tích cực thử nghiệm nhiều đoạn lệnh với các xâu khác nhau (xâu có khoảng trắng, xâu rỗng) để hiểu sâu cách hoạt động của xâu.
  • Trách nhiệm: hoàn thành đầy đủ phiếu học tập và phần chấm mã trong nhóm; ghi nhận đúng lỗi của mình khi chương trình chưa chạy đúng.
  • Trung thực: báo cáo đúng kết quả thực thi của chương trình, không sửa dữ liệu hay kết quả để khớp với đáp án dự đoá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, bảng phụ và phấn/bút viết bảng.
  • Phần mềm Python (IDLE hoặc Thonny) đã cài sẵn để trình chiếu và chạy thử chương trình.
  • Phiếu học tập số 1 và Phiếu học tập số 2 (in cho mỗi cặp).
  • Học liệu số NeoEdu: trang bài học Bài 24 Xâu kí tự (neoedu.vn/learn/10/informatics/bai-24-xau-ki-tu) có bài giảng, ví dụ và bài tập tương tác; dùng ở hoạt động Luyện tập và để HS ôn tập tại nhà.

2. Học sinh

  • Máy tính có cài Python (IDLE hoặc Thonny) hoặc truy cập được môi trường lập trình trực tuyến.
  • Vở ghi, bút, giấy nháp để dự đoán kết quả trước khi chạy chương trình.
  • Tài khoản truy cập trang NeoEdu (nếu được GV hướng dẫn).

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

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

Dự đoán độ dài của một xâu

a) Mục tiêu

Kích hoạt kiến thức nền về dữ liệu kiểu chuỗi và tạo tò mò về cách máy tính đếm kí tự, bao gồm cả khoảng trắng.

b) Nội dung

GV đưa lên màn hình đoạn lệnh s = "Tin hoc" và print(len(s)). HS dự đoán kết quả, ghi ra nháp rồi mới chạy thử. GV đặt câu hỏi: (1) “Vì sao kết quả không phải là 6?” (2) “Dấu cách giữa hai từ có được tính không?” (3) “Nếu s = "" thì len(s) bằng bao nhiêu?”

c) Sản phẩm

HS dự đoán và kiểm tra: len("Tin hoc") cho kết quả 7 vì xâu gồm 7 kí tự: T, i, n, khoảng trắng, h, o, c. Khoảng trắng là một kí tự của xâu. Với xâu rỗng, len cho kết quả 0. Đây là nội dung mở đầu để HS nhận ra xâu là dãy kí tự, đếm cả khoảng trắ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 lệnh s = "Tin hoc", print(len(s)) và yêu cầu HS dự đoán kết quả, ghi vào nháp trong 1 phút.

    Học sinh

    HS đọc đoạn lệnh, ghi dự đoán ra giấy nháp, chưa chạy chương trình.

  2. Giáo viên

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

    GV cho HS chạy đoạn lệnh trên máy và quan sát xem dự đoán đúng hay sai; theo dõi HS thử thêm xâu rỗng s = "".

    Học sinh

    HS nhập đoạn lệnh vào Python, chạy, so sánh kết quả với dự đoán. HS thử len("") và ghi lại kết quả.

  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; hỏi: “Vì sao em nghĩ dấu cách không được tính?”

    Học sinh

    HS trả lời dự kiến: “Em nghĩ dấu cách không tính vì nhìn bằng mắt không thấy chữ.” Sau đó các bạn khác bổ sung: “Kết quả 7 cho thấy dấu cách vẫn được tính là một kí tự.”

  4. Giáo viên

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

    GV chốt: xâu là dãy kí tự, khoảng trắng cũng là kí tự, len đếm số kí tự và cho kết quả 0 với xâu rỗng. GV dẫn vào bài mới.

    Học sinh

    HS ghi nhận: len("Tin hoc") bằng 7; khoảng trắng được tính; len("") bằng 0.

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

Chỉ số, lát cắt và tính bất biến của xâu

a) Mục tiêu

Nêu được xâu được đánh chỉ số từ 0, giải thích được lát cắt s[i:j] không gồm vị trí j và vì sao không gán trực tiếp để sửa một kí tự.

b) Nội dung

Nhóm cặp làm việc với Phiếu học tập số 1. HS chạy lần lượt các đoạn lệnh sau và điền kết quả dự đoán rồi kết quả thực tế:

  • s = "Hoa", print(s[0], s[2], len(s))
  • s = "abcde", print(s[1:4])
  • s = "ban", s[0] = "B" (quan sát thông báo lỗi)
  • s = "ban", s = "B" + s[1:], print(s)
    GV hỏi: (1) “Chỉ số của kí tự đầu tiên là bao nhiêu?” (2) “Lát cắt s[1:4] lấy những vị trí nào?” (3) “Vì sao không sửa được s[0] trực tiếp mà vẫn có cách đổi thành “Ban”?”

c) Sản phẩm

Kết quả: s[0], s[2], len(s) của "Hoa" in ra H, a, 3 (chỉ số bắt đầu từ 0). s[1:4] của "abcde" cho "bcd", tức là lấy vị trí 1, 2, 3, không lấy vị trí 4. s[0] = "B" gây lỗi vì xâu bất biến, không gán sửa từng kí tự theo chỉ số. Muốn có “Ban”, tạo xâu mới bằng s = "B" + s[1:]. Kiến thức HS rút ra: xâu có chỉ số từ 0; lát cắt s[i:j] lấy đến j-1; muốn thay đổi nội dung xâu phải tạo xâu mới.

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: dự đoán trước, sau đó chạy từng đoạn lệnh và ghi kết quả vào phiếu.

    Học sinh

    HS đọc phiếu, nhóm cặp phân công: một bạn gõ lệnh, một bạn ghi dự đoán.

  2. Giáo viên

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

    GV đi quanh lớp, nhắc HS chú ý thông báo lỗi ở đoạn s[0] = "B", không để HS bỏ qua.

    Học sinh

    HS chạy từng đoạn lệnh, so sánh dự đoán với kết quả, ghi lại thông báo lỗi khi gán trực tiếp. HS thử thêm s[2] và s[3] với xâu "ban" để kiểm tra chỉ số.

  3. Giáo viên

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

    GV mời một cặp báo cáo kết quả lát cắt và một cặp báo cáo về lỗi gán; hỏi thêm: “Nếu s có 5 kí tự, s[0:5] lấy được bao nhiêu kí tự?”

    Học sinh

    HS trả lời dự kiến: “s[1:4] lấy bcd, vì không lấy vị trí 4.” “Gán s[0] bị lỗi, vì xâu không sửa được từng kí tự, nên phải tạo xâu mới.” “s[0:5] lấy đủ 5 kí tự.”

  4. Giáo viên

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

    GV chốt: chỉ số từ 0; lát cắt s[i:j] không gồm j; xâu bất biến nên sửa xâu bằng cách tạo xâu mới; dấu nháy xác định xâu, không là nội dung.

    Học sinh

    HS ghi vào vở: chỉ số từ 0, lát cắt không gồm vị trí kết thúc, xâu bất biến và cách tạo xâu mới.

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

Duyệt xâu để đếm kí tự

a) Mục tiêu

Vận dụng được cấu trúc duyệt xâu bằng for kết hợp bộ đếm và điều kiện để đếm số lần xuất hiện của một kí tự.

b) Nội dung

HS làm việc theo cặp với Phiếu học tập số 2. GV trình chiếu chương trình mẫu đếm chữ a trong xâu "ban an":
s = "ban an", d = 0, for ch in s:, if ch == "a":, d += 1, print(d)
HS dự đoán kết quả, chạy chương trình, rồi điền vào phiếu bảng theo dõi từng kí tự (vị trí, kí tự, có bằng a không, giá trị bộ đếm). GV hỏi: (1) “Bộ đếm d cần được khởi tạo trước vòng lặp để làm gì?” (2) “Hai chữ a nằm ở vị trí nào nếu đếm từ 0?” (3) “Nếu s rỗng thì chương trình in ra gì?”

c) Sản phẩm

Kết quả in ra là 2. Bảng theo dõi: vị trí 0 là b, 1 là a (đếm 1), 2 là n, 3 là khoảng trắng, 4 là a (đếm 2), 5 là n. Hai chữ a ở vị trí 1 và 4. Với s = "", vòng lặp không chạy, bộ đếm vẫn bằng 0 nên in 0. Kiến thức HS rút ra: quy trình gồm gán xâu và khởi tạo bộ đếm, duyệt từng kí tự, tăng bộ đếm khi bằng a, in 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ố 2, nêu nhiệm vụ: dự đoán kết quả, chạy chương trình và điền bảng theo dõi từng kí tự.

    Học sinh

    HS đọc phiếu, cùng bạn dự đoán số lần xuất hiện của chữ a trong "ban an".

  2. Giáo viên

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

    GV yêu cầu HS chạy chương trình, sau đó thử đổi s thành "" và "aaa", ghi kết quả vào phiếu.

    Học sinh

    HS nhập và chạy chương trình, điền bảng theo dõi, thử xâu rỗng (kết quả 0) và xâu "aaa" (kết quả 3).

  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 bảng theo dõi và hỏi: “Vì sao phải đặt d = 0 trước vòng lặp?”

    Học sinh

    HS trả lời dự kiến: “Có chữ a ở vị trí 1 và 4 nên kết quả là 2.” “Nếu không gán d = 0 trước thì chương trình báo lỗi, vì chưa có biến để cộng dồn.”

  4. Giáo viên

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

    GV chốt bốn bước của bài toán đếm kí tự và nhấn mạnh điều kiện ch == "a" dùng dấu hai chấm ‘==’ để so sánh.

    Học sinh

    HS ghi quy trình bốn bước vào vở và đối chiếu với chương trình đã chạy.

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

Luyện tập trắc nghiệm và bài tập chấm mã

a) Mục tiêu

Vận dụng được kiến thức về len, lát cắt, tính bất biến và duyệt xâu để giải các bài tập; tự đánh giá đoạn mã theo thang điểm.

b) Nội dung

HS làm nhanh các bài tập 1 đến 6 trên NeoEdu hoặc giấy, sau đó làm bài 7 và 8 theo cặp. Các bài tập:

  1. Chương trình s = "Hoa", print(len(s)) in ra số nào?
  2. Chương trình s = "abcde", print(len(s[1:4])) in ra số nào?
  3. Chương trình s = "a a a", print(s.count("a")) in ra số nào?
  4. Phát biểu đúng về xâu: A. Không gán sửa trực tiếp một kí tự theo chỉ số; B. Luôn là số nguyên; C. len luôn là số byte UTF-8; D. Chỉ có chữ không có dấu cách.
  5. Khoảng trắng trong xâu có phải là kí tự không?
  6. Sắp xếp các bước giải bài đếm chữ a trong xâu.
  7. Đếm chữ a trong "ban an" bằng duyệt xâu; viết chương trình hoàn chỉnh, kiểm tra theo dữ liệu mẫu và nêu kết quả khi xâu rỗng. Người dạy chấm mã và lập luận.
  8. Vì sao s[0] = "B" không sửa được s = "ban"? Nêu cách tạo kết quả “Ban”.

c) Sản phẩm

Đáp án:

  1. 3 (H, o, a là 3 kí tự).
  2. 3 (lát cắt là "bcd", có 3 kí tự).
  3. 3 (có 3 chữ a, không đếm khoảng trắng).
  4. Đáp án A (xâu bất biến, thay bằng xâu mới).
  5. Đúng (len và duyệt đều tính khoảng trắng).
  6. Gán xâu và khởi tạo bộ đếm → Duyệt từng kí tự → Tăng khi bằng a → In số lần.
  7. Chương trình chuẩn: s = "ban an", d = 0, for ch in s:, if ch == "a":, d += 1, print(d); kết quả in 2; với s = "" in 0. Thang chấm: xâu và bộ đếm 0,2 điểm; duyệt và điều kiện chữ a 0,4 điểm; hai vị trí 1, 4 và kết quả 2 là 0,3 điểm; trường hợp rỗng cho 0 là 0,1 điểm. Chấp nhận phương án tương đương đúng, có lí giải.
  8. Xâu bất biến nên gán theo chỉ số gây lỗi (0,3 điểm). Tạo s = "B" + s[1:] để được “Ban” (0,4 điểm). Kết quả “Ban” giữ đúng ý nghĩa (0,3 điểm). Chấp nhận cách giải 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 chiếu danh sách bài 1 đến 8, nêu thời gian: 5 phút làm bài 1 đến 6 cá nhân, 7 phút làm bài 7 và 8 theo cặp.

    Học sinh

    HS làm bài 1 đến 6 vào vở hoặc trên NeoEdu, sau đó nhóm cặp thảo luận bài 7 và 8.

  2. Giáo viên

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

    GV đi quanh lớp, kiểm tra chương trình bài 7 của HS; gợi ý “Em thử chạy với s = "" xem kết quả thế nào?” khi HS chưa xét xâu rỗng.

    Học sinh

    HS viết chương trình bài 7, chạy kiểm tra với "ban an" và ""; HS bài 8 thử s[0] = "B" để thấy lỗi rồi viết s = "B" + s[1:].

  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 bài 7 và bài 8, các nhóm khác nhận xét theo thang chấm; GV công bố đáp án đầy đủ.

    Học sinh

    HS trình bày: “Chương trình in 2 với "ban an", in 0 với xâu rỗng.” “Em tạo s = "B" + s[1:] nên được Ban.” Các nhóm đối chiếu với đáp án và thang chấm.

  4. Giáo viên

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

    GV nhận xét chung về lỗi hay gặp (quên khởi tạo bộ đếm, gán trực tiếp s[i]) và chốt cách kiểm thử chương trình bằng dữ liệu mẫu và xâu rỗng.

    Học sinh

    HS tự sửa bài của mình theo nhận xét, ghi chú lỗi cần tránh vào vở.

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

Đếm kí tự trong thông điệp thực tế

a) Mục tiêu

Vận dụng được duyệt xâu, bộ đếm và lát cắt để giải quyết bài toán thực tế; kiểm tra điều kiện áp dụng với xâu rỗng.

b) Nội dung

GV đưa tình huống: một nhóm bạn viết thông điệp “Hôm nay lớp mình có bài kiểm tra Tin học”, cần biết số lần chữ “a” xuất hiện và lấy 5 kí tự đầu của thông điệp để làm tiêu đề ngắn. HS viết chương trình gán thông điệp vào s, đếm chữ “a” bằng vòng lặp for và bộ đếm, in tiêu đề bằng lát cắt s[0:5], sau đó thử với xâu rỗng và kiểm tra kết quả. Gợi ý thêm cho HS khá: đổi chữ cần đếm sang chữ khác, hoặc giải thích vì sao s[0:5] không lấy kí tự thứ 5.

c) Sản phẩm

Sản phẩm là chương trình hoàn chỉnh có ba phần: đếm chữ “a” bằng bộ đếm; in tiêu đề bằng s[0:5] cho kết quả “Hôm n” (5 kí tự đầu: H, ô, khoảng trắng, m, n ... đúng theo chỉ số của thông điệp đã chọn); với xâu rỗng chương trình in 0 và tiêu đề rỗng. HS nêu được lập luận: lát cắt s[0:5] lấy 5 kí tự từ vị trí 0 đến 4, không gồm vị trí 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 tình huống, yêu cầu HS viết chương trình đếm chữ “a” và in tiêu đề bằng lát cắt, kiểm tra với xâu rỗng.

    Học sinh

    HS đọc tình huống, xác định biến s, bộ đếm d và đoạn lát cắt cần dùng.

  2. Giáo viên

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

    GV hướng dẫn HS viết chương trình, nhắc kiểm tra kết quả của lát cắt bằng cách chạy thử từng bước.

    Học sinh

    HS viết và chạy chương trình trên máy, kiểm tra kết quả đếm và tiêu đề; thử thêm xâu rỗng.

  3. Giáo viên

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

    GV mời một HS trình bày chương trình và kết quả, hỏi: “Nếu thông điệp chỉ có 3 kí tự, s[0:5] cho kết quả gì?”

    Học sinh

    HS trình bày chương trình và kết quả; trả lời dự kiến: “Với xâu 3 kí tự, s[0:5] vẫn cho cả 3 kí tự, không báo lỗi.”

  4. Giáo viên

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

    GV chốt: bài toán đếm kí tự và lấy đoạn con đều dựa trên chỉ số từ 0 và lát cắt không gồm vị trí kết thúc; kiểm thử với xâu rỗng là điều kiện cần khi áp dụng.

    Học sinh

    HS ghi nhận kiến thức 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ụ: Dự đoán kết quả trước, sau đó chạy từng đoạn lệnh và điền kết quả thực tế.

  • Đoạn 1: s = "Hoa", print(s[0], s[2], len(s))
    • Dự đoán: ........
    • Kết quả thực tế: ........
  • Đoạn 2: s = "abcde", print(s[1:4])
    • Dự đoán: ........
    • Kết quả thực tế: ........
    • Lát cắt lấy những vị trí nào? ........
  • Đoạn 3: s = "ban", s[0] = "B"
    • Máy báo lỗi gì? ........
    • Vì sao không sửa được trực tiếp? ........
  • Đoạn 4: s = "ban", s = "B" + s[1:], print(s)
    • Kết quả: ........
      Kết luận nhóm (2 câu): ........

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

Nhiệm vụ: Chạy chương trình đếm chữ a trong xâu "ban an" và điền bảng theo dõi.

s = "ban an"
d = 0
for ch in s:
    if ch == "a":
        d += 1
print(d)
  • Dự đoán kết quả: ........
  • Kết quả thực tế: ........
    Bảng theo dõi:
  • Vị trí 0: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
  • Vị trí 1: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
  • Vị trí 2: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
  • Vị trí 3: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
  • Vị trí 4: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
  • Vị trí 5: kí tự ........, có bằng a không? ........, giá trị bộ đếm ........
    Thử với s = "": kết quả là ........
    Vì sao phải khởi tạo d = 0 trước vòng lặp? ........

Hướng dẫn về nhà

  • Viết chương trình đếm số lần xuất hiện chữ “o” trong họ tên đầy đủ của em (gán vào biến s), in kết quả; chạy thử với xâu rỗng và ghi lại kết quả vào vở.
  • Dùng lát cắt để in 3 kí tự đầu của họ tên đầy đủ của em; giải thích vì sao s[0:3] không gồm kí tự thứ 3.
  • Làm lại bài tập 1 đến 8 trên trang bài học NeoEdu (neoedu.vn/learn/10/informatics/bai-24-xau-ki-tu) để tự kiểm tra; ghi lại câu sai và giải thích lại lời giải đúng.
  • Chuẩn bị nội dung bài học tiếp theo: tìm hiểu cách tách một xâu thành các từ và ví dụ về dữ liệu văn bản trong đời sống.

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.