Kiến thức
- Biết xâu là một dãy ký tự (có thể coi xâu là mảng một chiều).
- Biết cách khai báo xâu, truy cập phần tử của xâu.
Kỹ năng
- Sử dụng được một số thủ tục, hàm thông dụng về xâu.
- Cài đặt được một số chương trình đơn giản có sử dụng xâu.
b. Năng lực hướng tới:
- Kĩ năng, hiểu biết về phần mềm, thiết bị CNTT-TT: Gõ đúng quy cách. Có khả năng xác định và giải quyết các vấn đề đơn giản đối với dữ liệu kiểu xâu.
- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào cấu trúc kiểu xâu trong tin học.
- Sử dụng CNTT-TT trong giao tiếp: Sử dụng thuật ngữ CNTT-TT chính xác.
- Đạo đức, hành vi phù hợp khi sử dụng CNTT-TT: Phân biệt giữa thế giới thực và thế giới ảo.
Ngày soạn: Ngày dạy: Bước 1: Chủ đề Kiểu xâu (2 tiết, tiết 31- 32 trong PPCT) Bước 2: Xác định KTKN và năng lực hướng tới a. Chuẩn kiến thức, kĩ năng, thái độ theo chương trình Kiến thức - Biết xâu là một dãy ký tự (có thể coi xâu là mảng một chiều). - Biết cách khai báo xâu, truy cập phần tử của xâu. Kỹ năng - Sử dụng được một số thủ tục, hàm thông dụng về xâu. - Cài đặt được một số chương trình đơn giản có sử dụng xâu. b. Năng lực hướng tới: - Kĩ năng, hiểu biết về phần mềm, thiết bị CNTT-TT: Gõ đúng quy cách. Có khả năng xác định và giải quyết các vấn đề đơn giản đối với dữ liệu kiểu xâu. - Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào cấu trúc kiểu xâu trong tin học. - Sử dụng CNTT-TT trong giao tiếp: Sử dụng thuật ngữ CNTT-TT chính xác. - Đạo đức, hành vi phù hợp khi sử dụng CNTT-TT: Phân biệt giữa thế giới thực và thế giới ảo. Bước 3: Bảng mô tả các mức yêu cầu cần đạt cho mỗi loại câu hỏi/bài tập Nội dung Loại câu hỏi/bài tập Nhận biết Thông hiểu Vận dụng thấp Vận dụng cao 1. Khai báo Câu hỏi/bài tập định tính Hs lấy được một số ví dụ về xâu kí tự đơn giản trong thực tế. Câu hỏi ND1.DT.NB1 Hs chỉ ra được dạng kí tự xâu trong tình huống thực tế. Câu hỏi ND1. DT. TH1 Bài tập định lượng Bài tập thực hành 2. Các thao tác xử lí xâu Câu hỏi/bài tập định tính Hs mô tả cấu trúc các thao tác xử lí xâu. Câu hỏi ND2.DT.NB1 Hs chỉ ra được các thành phần trong các thao tác xử lí xâu cụ thể. Câu hỏi ND2.DT.TH1 Bài tập định lượng Hs biết cơ chế hoạt động của hàm và thủ tục trong kiểu xâu để chỉ ra được hoạt động một lệnh dạng cụ thể. Câu hỏi ND2.DL.NB1 Hs hiểu ý nghĩa các hàm và thủ tục trong xâu để giải thích được hoạt động cụ thể. Câu hỏi ND2.DL.TH1 Hs viết được câu lệnh trong kiểu xâu để thực hiện một tình huống quen thuộc. Câu hỏi ND2.DL.VDT1 Bài tập thực hành Hs sửa lỗi lệnh về thao tác trong chương trình quen thuộc có lỗi Câu hỏi ND2.TH.TH1 3. Một số ví dụ Câu hỏi/bài tập định tính Hs mô tả cấu trúc, ý nghĩa lệnh của kiểu xâu. Câu hỏi ND3.DT.NB1 Hs chỉ ra được các thành phần của hàm và thủ tục cụ thể. Câu hỏi ND3.DT.TH1 Bài tập định lượng Bài tập thực hành Hs sửa lỗi lệnh của kiểu xâu trong chương trình quen thuộc. Câu hỏi ND3.TH.TH1 Hs vận dụng các lệnh của kiểu xâu kết hợp câu lệnh đã học để viết chương trình đơn giản. Câu hỏi ND3.TH.VDT1 Bước 4: Hệ thống câu hỏi/bài tập đánh giá theo các mức đã mô tả Câu ND1.DT.NB1. Em hãy lấy một ví dụ xâu kí tự đơn giản trong đời sống? Câu ND1.DT.TH1. Trong ngôn ngữ lập trình Pascal, cách khai báo xâu kí tự nào sau đây là đúng ? S := file of string ; S : file of char ; S : string; Cả 3 câu đều đúng ; Câu ND2.DT.NB1. Trong lập trình Pascal, xâu kí tự không có kí tự nào gọi là ? Xâu không; Xâu rỗng; Xâu trắng; Không phải là xâu kí tự; Câu ND2.DT.TH1. Độ dài tối đa của xâu kí tự trong PASCAL là 256 65535 255 257 Câu ND2.DL.NB1. Trong ngôn ngữ lập trình Pascal, khai báo nào trong các khai báo sau là sai khi khai báo xâu kí tự ? S : string; X1 : string[100]; S : string[256]; X1 : string[1]; Câu ND2.DL.TH1. Trong ngôn ngữ lập trình Pascal, hàm Length(S) cho kết quả gì ? Độ dài xâu S khi khai báo; Số ký tự hiện có của xâu S không tính các dấu cách; Số ký tự của xâu không tính dấu cách cuối cùng Số ký tự hiện có của xâu S. Câu ND2.DL.VDT1. Viết câu lệnh đưa ra kết quả độ dài xâu s? Câu ND2.TH.TH1. Hãy chỉ ra lỗi trong chương trình sau: i := pos(‘’, S); { ‘ ’ là 2 dấu cách } while i 0 do Begin Delete(S, i, 1) ; i := pos(‘ ’, S) ; End; Câu ND3.DT.NB1. Trình bày cấu trúc, ý nghĩa hàm sao chép? Câu ND3.DT.TH1. Trong ngôn ngữ lập trình Pascal, để xóa đi ký tự đầu tiên của xâu ký tự S ta viết : Delete(S, 1, 1); Delete(S, i, 1); { i là biến có giá trị bất kỳ } Delete(S, length(S), 1); Delete(S, 1, i); { i là biến có giá trị bất kỳ } Câu ND3.DL.NB1. Trong ngôn ngữ lập trình Pascal, để tìm vị trí xuất hiện đầu tiên của xâu ‘hoa’ trong xâu S ta có thể viết bằng cách nào trong các cách sau ? S1 := ‘hoa’ ; i := pos(S1, ‘hoa’) ; i := pos(‘hoa’, S) ; i := pos(S, ’hoa’) ; i := pos(‘hoa’, ‘hoa’) ; Câu ND3.DL.TH1. Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì ? X := length(S) ; For i := X downto 1 do If S[i] = ‘ ’ then Delete(S, i, 1) ; { ‘ ’ là một dấu cách } Xóa dấu cách đầu tiên trong xâu ký tự S Xóa dấu cách thừa trong xâu ký tự S Xóa dấu cách tại vị trí cuối cùng của xâu S Xóa mọi dấu cách của xâu S Câu ND3.TH.TH1. Hãy sửa lỗi sai trong đoạn chương trình sau: S1 := ‘anh’ ; S2 := ‘em’ ; i := pos(S2, S) ; While i 0 do Begin Delete(S, i, 2) ; Insert(S1, S, i) ; i := pos(S2, S) ; End. Câu ND3.TH.VDT1. Viết chương trình chèn xâu s1 vào xâu s2? Bước 5. Tiến trình dạy học theo chủ đề TÊN BÀI: Kiểu xâu Nội dung TG Hoạt động của thầy và trò Xâu là một dãy kí tự trong bảng mã ASCII. Mỗi kí tự được gọi là một phần tử của xâu. Số lượng kí tự trong xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 gọi là xâu rỗng. Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử trong xâu. Chỉ số phần tử trong xâu thường được đánh số từ 1. Trong ngôn ngữ Pacal, tham chiếu tới phần tử thường được viết : [chỉ số]; Hoạt động I. Khai báo - Pascal sử dụng từ khóa STRING để khai báo xâu . Độ dài tối đa của xâu được viết trong [ ] sau từ khóa STRING . Khai báo như sau : Var : String[độ dài lớn nhất của xâu] ; Ví dụ : Var Ten : String[10] ; Ho_dem : String[50] ; Que : String; Chú ý : Nếu không khai báo độ dài tối đa cho biến xâu kí tự thì độ dài ngầm định của xâu là 255 . Độ dài lớn nhất của xâu là 255 ký tự. Hằng xâu kí tự được đặt trong cặp nháy đơn ‘ ’. Hoạt động II. Các thao tác xử lí xâu Với các xâu kí tự có các phép phép xâu và phép so sánh hai xâu kí tự. * Phép ghép xâu : Kí hiệu bằng dấu cộng + - Ý nghĩa: Ghép nhiều xâu thành một. - Có thể ghép xâu với các hằng và biến xâu. Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha Noi’ * Phép so sánh : , >=, = , , Pascal tự động so sánh lần lượt từ kí tự từ trái sang phải. - Quy tắc so sánh xâu: SGK Ví dụ : ‘AB’ ‘ABB’, ‘ABC’ <’ABCD’ Ta có các thủ tục và hàm chuẩn sau: * Thủ tục delete(st,vt,n): Xoá n kí tự của biến st bắt đầu từ vị trí vt St thao tác kết quả 'abcdef' delete(st,5,2); 'abcd' 'Song Hong' delete(st,1,5); 'Hong' * Thủ tục insert(s1,s2,vt): Chèn xâu s1 vào xâu s2 từ vị trí vt s1 s2 thao tác kết quả 'PC' 'IBM486' insert(s1,s2,4); 'IBM PC 486 '1' 'Hinh .2' insert(s1,s2,6); 'Hinh 1.2' * Thủ tục Copy(s,vt,n): Tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí của xâu s S Biểu thức Kết quả 'Bai hoc thu 9' copy(s,9,5); 'thu 9' * Hàm length(s): Cho giá trị là độ dài xâu s 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 s2 Biểu thức kết quả 'abcdef' pos('cd',s2); 3 'abcdef' pos('k',s2); 0 * Hàm upcase(ch): Cho chữ cái in hoa ứng với chữ cái trong ch Ch Biểu thức kết quả 'd' upcase(ch) 'D' 'e' upcase(ch) 'E' Hoạt động III. Một số ví dụ * Ví dụ 1: Nhập họ và tên của hai người, in ra màn hình xâu dài hơn, nếu bằng nhau thì đưa ra xâu nhập sau: var a,b:string; begin write('nhap ho ten thu nhat:'); readln(a); write('nhap ho ten thu hai:'); readln(b); if lenth(a)>length(b) then write(a) else write(b); readln end. * Ví dụ 2: Nhập hai xâu từ bàn phím và kiểm tra kí tự đầu tiên của xấu thứ nhất có trùng kí tự cuối cùng của xâu thứ hai không. var x:byte; a,b: string; begin write('nhap xau thu nhat:'); readln(a); wrtie('nhap xau thu hai:'); readln(b); else write('khong trung nhau'); readln and. * Ví dụ 3: Nhập xâu kí tự từ bàn phím và in xâu đó ra màn hình theo chiều ngược lại var i,k:byte; a: string; begin write('nhap xau:'); readln(b); k:=length(a); for i:=k downto 1 do write(a[i]); readln end. * Ví dụ 4: Nhập một xấu và in ra màn hình khi đã loại bỏ dấu cách nếu có var i,k:byte; a,b:string; begin write('nhap xau:'); readln(a); k:=length(a); b:=' '; for i:=1 to k do if a[i]' ' then writeln('ket qua:',b); readln end. * Ví dụ 5: Nhập kí tự từ bàn phím vào xâu 1, tạo xâu 2 với các kí tự của xâu 1 và in ra màn hình kết quả var s1,s2:string; i:byte; begin write('nhap xau s1:'); readln(s1); for i:=1 to length(s1) do if ('0'=>s1[i]) and (s1[i]<='9') then s2:=s2+s1[i]; writeln('ket qua:'s2); readln end. GV : Giới thiệu một số khái niệm và thao tác thường dùng khi làm việc với xâu ký tự trong lập trình nói chung. GV : Đây là cách khai báo trong ngôn ngữ Pascal, trong các ngôn ngữ khác nhau có thể có cách khai báo khác nhau . Do đó khi viết chương trình bằng ngôn ngữ nào cần tìm hiểu rõ các đối tượng của ngôn ngữ đó. GV: Độ dài tối đa của xâu phụ thuộc vào ngôn ngữ lập trình, thường là 255 ký tự. Gv: Giới thiệu vai trò của hàm và thủ tục trong xâu. Gv: Giới thiệu phép ghép được sử dụng trong xâu Hs: Quan sát và ghi lại Gv: Giới thiệu phép so sánh được sử dụng trong xâu Hs: Quan sát và ghi lại Gv: Giới thiệu các thủ tục được sử dụng trong xâu Hs: Quan sát và ghi lại Gv: Giới thiệu các hàm được sử dụng trong xâu Hs: Quan sát và ghi lại Gv: Hướng dẫn học sinh cách viết chương trình ví dụ 1. Hs: Ghi bài Gv: Đưa ví dụ 2 có sử dụng kiểu xâu Gv: Học sinh lên bảng làm Gv: Nhận xét và đánh giá Gv: Đưa ví dụ 3 có sử dụng kiểu xâu Gv: Học sinh lên bảng làm Gv: Nhận xét và đánh giá Gv: Đưa ví dụ 4 có sử dụng kiểu xâu Gv: Học sinh lên bảng làm Gv: Nhận xét và đánh giá Gv: Đưa ví dụ 5 có sử dụng kiểu xâu Gv: Hoc sinh lên bảng làm Gv:Nhận xét các bài làm của học sinh. Cho điểm miệng Gv: Thông báo bài mới và ôn tập 4. Tổng kết bài học: (..2.phút) Là một cấu trúc thường xuyên sử dụng trong ngôn ngữ lập trình Pascal, cần xác định bài toán trước khi sử dụng kiểu xâu 5. Câu hỏi, bài tập và hướng dẫn tự học: (.1..phút): Câu 10 (sgk 80) IV. Tự đánh giá và rút kinh nghiệm: (Nội dung, phương pháp, thời gian) . Bước 6: Ma trận đề Cấp độ Tên chủ đề (nội dung,chương) Nhận biết Thông hiểu Vận dụng Cấp độ thấp Cấp độ cao Khai báo Hs biết cách khai báo để chỉ ra được hoạt động một lệnh dạng cụ thể Hs hiểu cơ chế hoạt động câu lệnh khai báo kiểu xâu để giải thích được hoạt động cụ thể Số câu:.3.. Số điểm:.1,5.. Tỉ lệ:15... % Số câu:..1... Số điểm:.0,5... Số câu:..2... Số điểm:..1đ... Số câu:.... Số điểm:.... Số câu:.... Số điểm:.... Định hướng phát triển năng lực Biết sử dụng chính xác khai báo kiểu xâu cho từng bài toán Hiểu ý nghĩa kiểu xâu cho từng dạng bài Các thao tác xử lí xâu Hs viết được hàm và thủ tục thực hiện một tình huống quen thuộc Số câu:.7.. Số điểm:.3,5.. Tỉ lệ:.35.. % Số câu:..... Số điểm:..... Số câu:..7... Số điểm:..3,5... Số câu:.... Số điểm:.... Số câu:.... Số điểm:.... Định hướng phát triển năng lực Sửa đoạn chương trình đơn giản có sử dụng các dạng của hàm và thủ tục trong kiểu xâu Một số ví dụ Hs viết được chương trình có khai báo và sử dụng một số thao tác trong xử lí xâu để thực hiện một tình huống quen thuộc Số câu:.1.. Số điểm:.5.. Tỉ lệ:.50.. % Số câu:..... Số điểm:..... Số câu:..... Số điểm:..... Số câu:.1... Số điểm:.5... Số câu:.... Số điểm:.... Định hướng phát triển năng lực Viết chương trình đơn giản có sử dụng các dạng của hàm và thủ tục trong bài kiểu xâu. Tổng số câu: Tổng số điểm: Tỉ lệ:.......... % Số câu:..1... Số điểm:.0,5... ..........5........% Số câu:....5. Số điểm:.4,5... .............45.....% Số câu:..1... Số điểm:.5... ........50.........% Đề kiểm tra A. Trắc nghiệm (5đ) Câu 1. Trong ngôn ngữ lập trình Pascal, cách khai báo xâu kí tự nào sau đây là đúng ? a. S := file of string ; b. S : file of char ; c. S : string; d. Cả 3 câu đều đúng ; Câu 2: Trong ngôn ngữ lập trình Pascal, xâu kí tự không có kí tự nào gọi là ? a. Xâu không; b. Xâu rỗng; c. Xâu trắng; d. Không phải là xâu kí tự; Câu 3: Độ dài tối đa của xâu kí tự trong PASCAL là 256 65535 255 257 Câu 4: Trong ngôn ngữ lập trình Pascal, khai báo nào trong các khai báo sau là sai khi khai báo xâu kí tự ? a. S : string; X1 : string[100]; c. S : string[256]; d. X1 : string[1]; Câu 5: Trong ngôn ngữ lập trình Pascal, hàm Length(S) cho kết quả gì ? a. Độ dài xâu S khi khai báo; b. Số ký tự hiện có của xâu S không tính các dấu cách; c. Số ký tự của xâu không tính dấu cách cuối cùng d. Số ký tự hiện có của xâu S. Câu 6: Hãy chỉ ra lỗi trong chương trình sau: i := pos(‘’, S); { ‘ ’ là 2 dấu cách } while i 0 do Begin Delete(S, i, 1) ; i := pos(‘ ’, S) ; End; Câu 7: Trong ngôn ngữ lập trình Pascal, để xóa đi ký tự đầu tiên của xâu ký tự S ta viết : a. Delete(S, 1, 1); b. Delete(S, i, 1); { i là biến có giá trị bất kỳ } c. Delete(S, length(S), 1); d. Delete(S, 1, i); { i là biến có giá trị bất kỳ } Câu 8: Trong ngôn ngữ lập trình Pascal, để tìm vị trí xuất hiện đầu tiên của xâu ‘hoa’ trong xâu S ta có thể viết bằng cách nào trong các cách sau ? a. S1 := ‘hoa’ ; i := pos(S1, ‘hoa’) ; b. i := pos(‘hoa’, S) ; c. i := pos(S, ’hoa’) ; d. i := pos(‘hoa’, ‘hoa’) ; Câu 9: Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì ? X := length(S) ; For i := X downto 1 do If S[i] = ‘ ’ then Delete(S, i, 1) ; { ‘ ’ là một dấu cách } a. Xóa dấu cách đầu tiên trong xâu ký tự S b. Xóa dấu cách thừa trong xâu ký tự S c. Xóa dấu cách tại vị trí cuối cùng của xâu S d. Xóa mọi dấu cách của xâu S Câu 10: Hãy sửa lỗi sai trong đoạn chương trình sau: S1 := ‘anh’ ; S2 := ‘em’ ; i := pos(S2, S) ; While i 0 do Begin Delete(S, i, 2) ; Insert(S1, S, i) ; i := pos(S2, S) ; End. B. Tự luận (5đ) Viết chương trình chèn xâu s1 vào xâu s2? Xây dựng hướng dẫn chấm (đáp án) và thang điểm Câu hỏi/đáp án Biểu điểm Câu 1:c Câu 2:b Câu 3:g Câu 4: c Câu 5:d Câu 6: i := pos(‘ ’, S); Câu 7:a Câu 8: b Câu 9: d Câu 10: end; 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ 0.5đ Var S,s1,s2: string; Begin Readln(s1,s2); S:=insert(s1,s2,1); Write(‘xau moi=’,s); Readln; End. 1đ 1đ 1đ 1đ 1đ , ngàytháng..năm 2015 Tổ chuyên môn duyệt giáo án (Nhận xét, ký và ghi rõ họ tên) Người soạn (Ký và ghi rõ họ tên)
Tài liệu đính kèm: