Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
498 KB
Nội dung
Tiãút 39 KIÃØU XÁU I Mục đích – Yêu cầu Mục đích: Đưa khái niệm kiểu liệu xâu HS làm quen với kiểu liệu xâu Giới thiệu số thủ tục thao tác xâu 2.Yêu cầu: HS nắm xâu ký tự, cách khai báo Nắm thủ tục thao tác xâu II Phương pháp giảng dạy Sử dụng phương pháp đặt vấn đề, gợi ý, đàm thoại, hướng dẫn III Các bước lên lớp Ổn định lớp: Nắm sĩ số tình hình lớp Kiểm tra cũ: Nội dung mới: Đặt vấn đề: Chúng ta thường sử dụng câu chữ để diển đạt ý lên giấy, viết tay, dùng máy vi tính để soạn thảo Như máy tính cho phép viết từ, câu cách viết lên giấy Thế máy tính làm thể để có chức Để tìm hiểu vấn đề bắt đầu tìm hiểu kiểu DL xâu, kiểu liệu có cấu trúc tương tự kiểu DL mảng chiều Tg Nội dung ghi bảng Hoạt động thầy Hoạt động trò Khai báo kiểu DL xâu Khái niệm kiểu DL xâu - Xâu dãy ký bảng mã ASCII, liên hệ với qua tên xâu - Tương tự HS liên hệ S1: = ‘ABCD’; - Ví dụ: S: = ‘Phu loc’; xâu khác S2: = ‘Lop 11D’; - Khi viết xâu cần đặt dấu ‘’ Độ dài xâu - Độ dài xâu số ký tự xâu Ví dụ: Độ dài xâu S ví dụ 12 Khai báo biến kiểu xâu: - Cú pháp: VAR : STRING [độ dài lớn xâu]; -Để khai báo báo kiểu liệu xâu, TP sử dụng tên dành riêng STRING độ dài lớn (không vượt 255) ghi cặp ngoặc [ ] - Các em cho biết muốn Ví dụ: Var S: String[25]; khai báo xâu có độ dài - Chú ý: Nếu muốn khai báo 255 ký tự làm nào? xâu có độ dài 255 khơng - Nhận xét câu trả lời HS cần khai báo độ dài lớn xấu Lúc ta cần viết: Var S: String; Var S: String[255]; Nhập, xuất giá trị biến xâu: - Nhập xâu, sử dụng lệnh: read readln Ví dụ: read (S) readln (S) - Nhập xâu, sử dụng lệnh: Ví dụ: write writeln Ví dụ: write(S) writeln(S) - Trước vào tìm hiều thao tác xử lý xâu thử xem qua cách tham chiều phần tử xâu Tham chiều đến phần tử xâu - Cú pháp: [] - Ví dụ: st[5], st:= ‘Lop 11’ st[5] = ‘1’ st[7] mã ASCII - Chú ý: Các ký tự xâu - Kiểu ký tự đánh số thứ tự từ - Dựa vào khái niệm xâu học em cho biết phần tử xâu có kiểu gì? - Nhận xét, bổ sung cho câu trả lời (nếu cần) - Bây tìm hiểu thao tác xử lý xâu Các thao tác xử lý xâu a Phép ghép xâu - Sử dụng toán tử ‘+’: S1+S2+… +Sn S1, S2,…, Sn biến xâu, xâu -Ý nghĩa: Ghép nhiều xâu thành xâu - Ví dụ: ‘Lop’ +‘ 11’ + ‘ D’ KQ: ‘Lop 11 D’ b Các Phép so sánh - Có phép so sánh: =, , , = - Ví dụ: ‘Lop 11’ < ‘Lop 11 HBT’ - Hai xâu có độ dài chúng giống hồn tồn Ví dụ: ‘Lop 11’ = ‘Lop 11’ c Thủ tục chuẩn Delete - Cú pháp: DELETE(st, vt, n); Trong đó: st xâu kí tự, vt n biểu thức nguyên - Ý nghĩa: Xóa n kí tự xâu st vị trí vt - Ví dụ: st: = ‘abcdef’; Delete(st,2,3); Kq: ‘aef’ d Thủ tục Insert - Cú pháp: INSERT(s1, s2, vt); Trong đó: s1, s2 xâu kí tự, vt biểu thức nguyên - Ý nghĩa: Chèn xâu s1 vào xâu s2 vị trí vt - Ví dụ: s1: = ‘Lop 11’; s2: = ‘⊔truong HBT’; insert(s1,s2,1); Kq:‘Lop 11 truong HBT’ - Cho HS lấy ví dụ - Giả sử có xâu s:= ‘Truong HBT’, làm để xâu s:= ‘Truong’ - delete(st,1,4); KQ: ‘ef’ - delete(s,7,4); - delete(s,8,4); - HS liên hệ lấy ví dụ - Giả sử có xâu s1:= ‘⊔HBT’; s2:= ‘Truong’; Vậy làm để xâu - Insert(s2,s1,1); ‘Truong HBT’ Cũng cố Yêu cầu học sinh: HS nắm khái niệm xâu ký tự, cách khai báo xâu, cách xuất nhập biến xâu Nắm vững cú pháp ý nghĩa thủ tục DELETE INSERT Đọc trước hàm xử lý xâu sách giáo khoa mục ví dụ mục để chuẩn bị cho tiết Tiết 24 Tim e Nội dung giảng §2 KIỂU DỮ LIỆU XÂU Hàm Copy: - Cú pháp: Copy(st, pos, num) - Công dụng: Hàm cho kết xâu gồm num kí tự lấy vị trí pos xâu st ví dụ 1: st := ‘Tin hoc van phong’; write(Copy(st, 5, 7); → ‘hoc van’ ví dụ 2: st := ‘Phu loc’; delete(st, 3, 3); write(copy(st, 5, 5); → loc Hàm Pos: - Cú pháp: Pos(st1, st2) - Công dụng: Hàm cho kết số nguyên dương vị trí xuất xâu st1 xâu st2 ví dụ: st := ‘ab’; st1 := ‘efadbabeabcabn’; write(Pos(st, st1)); → III Ví dụ: 1) Ví dụ 1: (Xem ví dụ 2, Sgk/72) Viết chương trình nhập vào xâu, in hình kí tự đầu có trùng với kí tự cuối hay không? Input: xâu Outpt: Trả lời trùng hay không trùng Hướng dẫn: sử dụng hàm length Ví dụ: ‘edge’ + Lấy kí tự vị trí → st[1] + Lấy kí tự vị trí cuối → st[length(st)] Var st: string; Begin Write(‘Nhap xau st: ‘); Readln(st); If st[1] = st[length(st)] then write(‘trung nhau’) Else write(‘khong trung nhau’); End Ví dụ 2: Nhập vào xâu kí tự, in hình xâu có phải Palindrom hay không ‘ABCBA’ → xâu Palindrom ‘ABCCA’ → xâu Palindrom HD: Dùng biến chạy i, j để so sánh kí tự nằm đối xứng xâu cho đề i = j Hoạt động GV Hoạt động HS Ví dụ 3: Viết chương trình nhập vào xâu, in hình từ dòng (Các từ cách khoảng trắng) Chẳng hạn : st := ‘Tin hoc van phong’; In hình : Tin hoc van phong Cũng cố Yêu cầu học sinh: HS nắm khái niệm xâu ký tự, cách khai báo xâu, cách xuất nhập biến xâu Nắm vững cú pháp ý nghĩa thủ tục DELETE INSERT Đọc trước hàm xử lý xâu sách giáo khoa mục ví dụ mục để chuẩn bị cho tiết BI THỈÛC HNH (tiết 27, 28) I Mục đích – Yêu cầu Mục đích - Giúp HS thành thạo sử dụng kiểu liệu xâu - Khi sử dụng thành thạo kiểu liệu xâu HS nắm vững kiểu liệu mảng chiều nói riêng kiểu liệu có cấu trúc nói chung - Thơng qua ví dụ, tập sửa, HS nắm phương pháp giải toán thực tế như: Tìm số lượng từ thỏa mãn điều kiện Yêu cầu - Nắm cách khai báo biến xâu, sử dụng thủ tục hàm xử lý xâu - HS tự làm tập tham gia làm tập nhà II Phương pháp giảng dạy - Chủ yếu sử dụng phương pháp đàm thoại, gợi mở để HS tìm phương pháp giải tập (giải thuật), hướng dẫn HS cài đặt chương trình, hiệu chỉnh chương trình III Các bước lên lớp (10’) Ổn định lớp - Nắm sĩ số tình hình lớp Kiểm tra cũ - Cho biết cú pháp khai báo biến kiểu xâu Giải thích thành phần câu lệnh, cho hai ví dụ khai báo biến xâu + Đáp án: Var :String[độ dài tối đa xâu]; Ví dụ: var hoten:string[30]; diachi:string[40]; + Thang điểm: Phần khai báo điểm, ví dụ điểm - Cho biết cách truy xuất (làm việc) đến phần tử xâu? Giả sử có xâu: St:= ‘Lop 11A’; viết lệnh in hình ký tự thứ ký tự cuối xâu st + Đáp án: [chỉ số] write(st[2]); write(st[7]); Câu hỏi phụ: Có thể viết cách khác tổng quát để in ký tự cuối không? + Thang điểm: Cách truy xuất điểm, hai câu lệnh in điểm - Nhận xét, cho điểm Nội dung TG Nội dung ghi bảng Hoạt động thầy Hoạt động trò 15’ Bài 1: Xâu Palindrom Đề: Hãy nhập từ bàn phím xâu, đưa hình xâu có phải xâu Palindrom hay khơng - Em cho thầy biết HS trả lới: liệu vào liệu - In: Một xâu ký tự Input: bài? - Out: True/False Output: - Nhận xét câu trả lời HS, sau ghi lên bảng intput output - Bây TG Nội dung ghi bảng Hoạt động thầy - Ví dụ: ‘ABCBA’ xâu xem, xâu Palindrom Palindrom - Xâu bảng xâu Palindrom, em có nhận xét dạng xâu khơng? - Câu hỏi mở: Các em thấy tương quan phần tử đầu phần tử cuối xâu, phần tử thứ hai kế cuối? - ‘AbCCbA’ ‘aBBCa’ Hoạt động trò - Kí tự đầu trùng ký tự cuối, ký tự thứ hai trùng ký tự kế cuối, v.v… - Kí tự đầu trùng ký tự cuối, ký tự thứ hai trùng ký tự kế cuối - Như xâu Palindrom xâu có phần tử đầu giống phần tử cuối, phần tử thứ hai giống phần tử kế cuối, v.v… - Xâu ‘AbCCbA’ - Đưa thêm hai ví dụ để học sinh nhận dạng - S = ‘ABCBA’, hình ảnh - Hai xâu bảng xâu - Có ký tự xâu S: xâu Palindrom? - Giống A B C B A - Như xâu Palindrom - Hàm length(s) xâu đối xứng Để thấy rõ Trong đó: xét ví dụ - ‘A’, ‘A’ S[1] = S[5] = S[length(s)] bảng S[2] = S[4] = S[length(s)-1] - Vị trí 5, length(s) = - Xâu có kí tự? - Ký tự ký tự nào? - S[length(s)] - Để lấy số lượng phần tử - S[length(s)-1] xâu ta dùng hàm gì? - Phần tử đầu ký tựgì, phần tử cuối ký tự gì? - S:= ‘AbCCbA’: - Ký tự ‘A’ cuối nằm vị trí thứ xâu? A b C C b A Length(s) bào nhiêu? Ta có: - Cách truy xuất đến phần - S[1] = S[length(s)] tử cuối xâu S S[length(s)] - S[2] = S[length(s)-1] nào? S[length(s)-1] - S[3] = S[length(s)-2] - Cách truy xuất đến phần S[length(s)-2] Phần tử 6, phần tử 5, tử kế cuối? phần tử phần tử gọi cặp phần tử đối xứng - Xét thêm ví dụ xâu Palindrom có số phần tử TG Nội dung ghi bảng * ↔ length(s) - = length(s) (1-1) * ↔ length(s) - = length(s) (2-1) * ↔ length(s) - = length(s) (3-1) Vị trí vị trí length(s), vị trí length(s) - 1, vị trí vị trí length(s) - gọi cặp vị trí đối xứng Vị trí i đối xứng với vị trí nào? Đặt n:=length(s); Hoạt động thầy Hoạt động trò chẵn (giúp HS nhận biết - length(s) quan hệ cặp - length(s) - ví trí đối xứng) - length(s) - - S[1] phần tử nào? - S[2] phần tử nào? - S[3] phần tử nào? - Lấy số phần tử đối xứng ta có: - Chỉ số tương ứng với? - Chỉ số tương ứng với? - Chỉ số tương ứng với? - Gọi số 1,2,3 tổng quát vị trí i - length(s)-(i-1) = length(s)-i+1 - Kiểm tra cặp kí tự đối xứng, bắt đầu tử cặp (1,n) - Có ký tự, cần kiểm tra cặp - Có ký tự, cần kiểm tra cặp - Vị trí i đối xứng với vị trí nào? Có quan hệ với i khơng? - Xâu Palindrom xâu - = div gồm cặp ký tự đối = div xứng Như để kiểm tra - Cần kiểm tra cặp thứ i tức xâu Palindrom cần (n div 2) lần kiểm tra gì? S[i] = S[n-i+1] với i = 1,2,3,…,(n div 2) - Xâu ‘ABCBA’ có ký tự? Cần kiểm tra - Cặp thứ - Cho xâu: ‘aBBCa’ cặp? Vì cặp khơng - Xâu ‘AbCCbA’ có bao giống nhiêu ký tự? Cần kiểm tra cặp? - Các em có nhận xét độ dài xâu số cặp ký tự - Tới cặp thứ ký tự cần kiểm tra? thứ: (n div 2) gặp cặp ký tự khác - Cần lần kiểm tra xâu Palindorm bất kỳ? TG Nội dung ghi bảng Sử dụng while i:=1; while (ilength(s)div then write(S,‘ la xau Palindrom) else write(S,‘ khong la xau Palindrom); Hoạt động thầy - Với xâu cần kiểm tra đến cặp thứ mấy? Tại sao? - Nếu xâu khơng xâu Palindrom việc kiểm tra kết thúc trước i đến (n div 2) - Như kiểm tra xâu xâu Palindrom việc kiểm tra cặp đối xứng đến ngừng? Hoạt động trị - Vịng lặp với số lần khơng biết trước (while,repeat) - HS ghi bảng Sử dụng while i:=1; while (i(n div 2) then write(S,‘ la xau Palindrom) else write(S,‘ khong la xau Palindrom); Sử dụng Repeat until i:=0; repeat i:=i+1; until (i>length(s)div 2)or (S[i]S[length(s)-i+1]); if i>length(s)div then write(S,‘ la xau Palindrom) - Số lần kiểm tra else write(S,‘ khong la xau trước, nên dùng vòng lặp Sử dụng Repeat until Palindrom); kiểu nào? i:=0; repeat - Gọi HS làm đoạn CT i:=i+1; kiểm tra until (i>n div 2)or (S[i]S[n- HS viết bẳng, GV đặt câu i+1]); hỏi cho lớp: if i>length(s)div Var s:string; + Bắt đầu kiểm tra từ cặp then write(S,‘ la xau begin thứ mấy? Palindrom) write(‘Nhap xau: ’); + Khi thực else write(S,‘ readln(s); kiểm tra cắp tiếp theo? khong la xau + Khi ngừng kiểm tra, Palindrom); Chương trình: số i vị trí xâu Var s:string; xâu ‘AbCCbA’, i,n:byte; ‘aBBCa’ Var s:string; begin begin write(‘Nhap xau: ‘);readln(s); write(‘Nhap xau: n:=length(s) div 2; ’); i:=1; readln(s); while (in then write(S,‘ la xau Palindrom’) else write(S,‘ khong la - Nhận xét, hiệu chỉnh, kết xau Palindrom’); hợp với phần khai báo readln; nhập HS trước viết end thành chương trình hồn