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