IV. TỔ CHỨC THỰC HIỆN:
4. Áp dụng khi giảng dạy Bài 12: Kiểu xâu: 1 Chọn tình huống gợi vấn đề:
4.1. Chọn tình huống gợi vấn đề:
Học sinh đã học về mảng 1 chiều, đã biết tham chiếu đến một phần tử mảng bất kỳ. Ngoài ra học sinh đã được học khái niệm xâu ký tự và đã biết xâu ký tự có thể được xem như mảng một chiều kiểu ký tự. Khi đó giáo viên có thể yêu cầu học sinh tìm vị trí đầu tiên xuất hiện một ký tự nào đó trong xâu.
Học sinh biết rằng phải thực hiện lặp lại việc duyệt từng ký tự từ đầu xâu đến cuối xâu, nếu xuất hiện ký tự cần tìm thì dừng lặp và đưa ra vị trí hoặc nếu duyệt hết xâu mà không tìm thấy thì kết luận vị trí bằng 0.
Vấn đề đặt ra là : Không dùng vòng lặp mà vẫn có thể tìm ra vị trí đầu tiên xuất hiện ký tự trong xâu.
Chứng minh đây là "Tình huống gợi vấn đề" :
- Học sinh chưa biết câu trả lời vì đây là vấn đề mới, học sinh chưa học hàm xử lý xâu.
- Học sinh có nhu cầu giải quyết vấn đề vì thiết kế vòng lặp với số lần lặp chưa xác định là một công việc không dễ.
- Học sinh thấy việc không dùng vòng lặp mà vẫn có thể tìm ra đáp án cho yêu cầu bài toán là điều lạ và ham muốn tìm hiểu cách làm.
4.2. Tổ chức dạy học “Nêu vấn đề”:
- Phát hiện hoặc thâm nhập vấn đề:
Học sinh mới học qua kiểu dữ liệu xâu, đã nắm khái niệm xâu là gì, đã biết ngôn ngữ lập trình cho phép thực hiện các khả năng thao tác trên xâu ký tự. Qua
bài toán mà giáo viên đã nêu, học sinh nhanh chóng phát hiện cách thực hiện tìm một ký tự trong xâu như tìm một phần tử trong mảng nhưng phải dùng lệnh lặp While – do vì khi tìm thấy kỳ tự thì dừng lặp lại việc tìm kiếm.
Khi giáo viên nêu vấn đề "không dùng lệnh lặp" học sinh sẽ nhanh chóng phát hiện vấn đề là ở chỗ này.
- Tìm giải pháp:
Giải pháp cho vấn đề chính là các thao tác trên kiểu dữ liệu xâu. “Trong bài 12: Kiểu xâu” học sinh vẫn còn nội dung chưa học và vì thế học sinh sẽ chủ động nghiên cứu phần còn lại của bài hoặc chủ động theo dõi tiếp tục bài học mà giáo viên đang hướng dẫn để hy vọng tìm ra giải pháp.
Hàm length(s) cho giá trị là độ dài xâu s. Ví dụ
Giá trị s Biểu thức Kết
quả
'500 ki tu' length(s) 9
Hàm pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2. Ví dụ Giá trị s2 Biểu thức Kết quả 'abcdef' pos('cd',s2) 3 'abcdef' pos('k',s2) 0 - Trình bày giải pháp:
Với chương trình nhập vào từ bàn phím xâu ký tự S và ký tự c, tìm vị trí đầu tiên xuất hiện ký tự c trong xâu S.
Học sinh viết lệnh đưa ra màn hình vị trí đầu tiên xuất hiện ký tự (có thể coi như là xâu có 1 ký tự) trong xâu.
Writeln(' Vi tri dau tien xuat hien ky tu:’,Pos(c,S));
- Nghiên cứu sâu giải pháp:
Học sinh cần phải hiểu việc đưa ra vị trí một xâu con trong xâu cho trước là một công việc phức tạp hơn việc đưa ra vị trí của một ký tự trong xâu đã được các nhà nghiên cứu ngôn ngữ thiết kế thành 1 hàm để cho người sử dụng tiện
dùng. Vì vậy đối với học sinh, vấn đề lớn hơn được đặt ra là tìm hiểu thuật toán tìm một xâu con trong xâu cho trước mà không dùng hàm Pos