1. Trang chủ
  2. » Mẫu Slide

tin hoc 11tiet 34

10 33 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Input: Xâu s Output: Số lần xuất hiện của mỗi chữ cái tiếng anh trong skhông phân biệt chữ hoa hay chữ thường Để hiểu rõ hơn về bài toán cô có ví dụ sau: Ta có xâu: ‘toán tin’ Theo yêu c[r]

(1)PPCT Tiết 34 Bài tập và thực hành Ngày soạn: Ngày giảng: Người giảng: Bùi Thị Hương GVHD: Ngô Thị Tú Quyên I Mục tiêu Kiến thức - Khắc sâu kiến thức lí thuyết kiểu xâu, các hàm và thủ tục - Nắm các thuật toán bản: Tạo xâu mới, đếm số lần xuất kí tự xuất xâu Kỹ - Khai báo biến kiểu xâu - Nhập xuất giá trị cho biến kiểu xâu - Duyệt qua các kí tự kiểu xâu - Sử dụng tốt các hàm thủ tục chuẩn: delete, insert, copy, length, pos, upcase Thái độ Học sinh ham thích môn học, chủ động học tập, góp phần phát triển tư II Chuẩn bị Giáo viên: Sách giáo khoa, sách giáo viên, giáo án Học sinh: Sách giáo khoa, ghi III Hoạt động Ổn định tổ chức lớp kiểm tra sĩ số (1p) Kiểm tra bài cũ(10p) Câu 1: Cấu trúc khai báo kiểu xâu và lấy ví dụ? (2đ) Câu 2: Cấu trúc các hàm và thủ tục chuẩn đã học? (6) Đáp án: Câu 1: Cấu trúc khai báo kiểu xâu: Var <tên biến>: string[độ lớn]; Vd: Var s:string; Câu 2: Cấu trúc các hàm và thủ tục - Detele(s,vt,n) - Insert(s1,s2,vt) - Length(s) (2) - Pos(s1,s2) - Copy(s,vt,n) - Upcase(ch) Để hiểu thêm các hàm và thủ tục trên cô có ví dụ sau(câu hỏi thêm 2đ): Xâu s=’abc’ Delete (s,1,1) cho kết quả? (‘bc’) Length (s) cho kết quả? (3) Copy (s,2,1) cho kết quả? (‘b’) Có thêm xâu s1=’bc’ Insert(s1,s,2) cho kết quả? (‘abcbc’) Pos(s1,s) cho kết quả? (2) Lưu ý: Hàm upcase tác động vào kí tự xâu không tác động đến toàn xâu Vd Upcase(t) cho kết là T Như bài trước chúng ta đã làm qua số ví dụ đơn giản với câu lệnh nhập, xuất xâu Trong bài ngày hôm chúng ta tiếp tục tìm hiểu câu lệnh có độ khó cao thông qua số bài tập bài “Bài tập và thực hành 5” Chúng ta vào bài Bài (30p) Nội dung Hoạt động GV Bài 1: SGK/T73 Input: Xâu x Output: Xâu đối xứng xâu không đối xứng a) Chương trình SGK T73 Hoạt động HS ? Yêu cầu đọc đề bài ? Xác định input, output Input: Xâu x Output: Xâu đối xứng xâu không đối Trước giải bài toán cô có xứng ví dụ sau: S1=’abced’ S2=’abccba’ Theo trực quan chúng ta thấy xâu s2 là xâu đối xứng, xâu đối xứng là đọc từ trái sang phải và từ phải sang trái thu kết Vậy để kiểm tra xâu có là xâu đối xứng không ta làm nào? Thời gian 15p (3) ? Nếu cô gọi xâu ban đầu là xâu x, xâu đảo ngược nó là xâu p, xâu x là xâu đối xứng thì điều kiện gì xâu x và xâu p sảy ra? xâu x phải xâu p Dựa vào ý tưởng này ta giải bài toán vừa nêu Trước tiên ta phải gán n:=length(x) (chiều dài xâu) và tạo xâu p cách gán p:=’’ để lưu trữ xâu đảo ngược xâu x Việc tạo xâu đảo ngược x ta làm nào? Em nào có thể cho cô biết? Cho vòng for chạy từ cuối xâu lên đầu xâu, gặp phần tử nào thì đẩy vào xâu p ? Quá trình đó thực tới nào? Khi gặp phần tử đầu tiên xâu ? Cú pháp vòng for đó thực nào? For i:=n downto P:=p+st[i]; Khi ta tạo xâu p là xâu đảo ngược xâu x, việc cần làm là so sánh x và p có hay không? Nếu thì viết màn hình là xâu đối xứng ngược lại thì không là xâu đối xứng Ta có chương trình SGK T73 Đối với bài này ta sử dụng biến trung gian để so sánh và đưa kết luận Vậy với yêu cầu này mà không sử dụng biến trung gian ta còn cách nào để biết xâu đó có là xâu đối xứng hay không? Đó chính là yêu cầu phần b (4) b) Theo các em còn cách nào để giải yêu cầu trên? Để các em dễ hình dung và tìm cách giải cô có ví dụ sau: Ta có xâu đối xứng A B C D D C B A Các em quan sát ví dụ và cho cô nhận xét các cặp kí tự vị trí thứ và 8, và 7, và 6, và 5? Vậy để kiểm tra xâu có phải đối xứng hay không ta cần so sánh kí tự đầu tiên với kí tự cuối cùng xâu, kí tự thứ với kí tự trước kí tự cuối cùng xâu… Như ví dụ trên kí tự so sánh với kí tự kí tự so sánh với kí tự (=8-1) kí tự so sánh với kí tự (=8-2) kí tự so sánh với kí tự (=8-3) Vậy bây cô gán chiều dài xâu là n? Kí tự thứ i so sánh với kí tự nào? Vậy ta phải so sánh bao nhiêu cặp để biết xâu đó có là đối xứng hay không? Các em quan sát tiếp ví dụ Với xâu 123321 có kí tự ta phải so sánh cặp, xâu abcdefg có kí tự ta so sánh lần (khi so sánh cặp dư kí tự là d, vì nó chính nó nên không cần so sánh) Vậy xâu có chiều dài là n thì cần so sánh bao nhiêu lần? Các cặp kí này giống So sánh với kí tự thứ n-i+1 cần so sánh n div lần (5) Để so sánh ta cần cấu trúc lặp nào? for…do while…do Thực vòng lặp đó nào Trước hết ta giả sử xâu đó là xâu đối xứng (ok:=true) Rồi ta thực các phép so sánh các kí tự xâu ta vừa nêu trên, gặp cặp kí tự nào khác thì ok:=false Cuối cùng dựa vào biến ok để kết luận, ok là true thì xâu là đối xứng ngược lại không là đối xứng Các câu lệnh này viết nào? Các em quan sát trên bảng và ghi bài vào Var s:string; n,i:integer; ok:boolean; begin write (‘nhap xau:’); readln(s); n:=length(s); ok:=true; for i:=1 to ndiv2 if s[i]<>s[n-i+1] then ok:=false; if ok then write(‘xau doi xung’) else write(‘xau khong doi xung’); readln; end Ngoài các em có thể sử dụng vòng lặp while…do để thực hiện: Bước đầu ta gán biến i sau đó thực vòng lặp Trong i<=ndiv2 và s[i]=s[n-i+1] thì tăng biến i lên Nếu i>ndiv2 thì viết (6) Bài SGK/T73 Input: Xâu s Output: Số lần xuất chữ cái tiếng anh s (không phân biệt chữ hoa hay chữ thường) xâu đó là đối xứng ngược lại thì không là đối xứng Các em nhà dựa vào gợi ý cô để hoàn thiện chương trình vào theo vòng lặp while…do Chúng ta sang bài Đối với bài các em cùng quan sát và đọc đề bài SGK 10p Một em cho cô biết input và output bài toán Input: Xâu s Output: Số lần xuất chữ cái tiếng anh s(không phân biệt chữ hoa hay chữ thường) Để hiểu rõ bài toán cô có ví dụ sau: Ta có xâu: ‘toán tin’ Theo yêu cầu bài toán thì xâu này cho ta kết nào? Kí tự ‘t’ xuất lần Kí tự ‘o’ xuất lần Kí tự ‘a’ xuất lần Kí tự ‘n’ xuất lần Kí tự ‘i’ xuất lần Cô có ví dụ tiếp, xâu: ‘Hoa hồng xanh’ kết nào Lưu ý: không phân biệt chữ hoa, chữ thường Kí tự ‘h’ xuất lần Kí tự ‘o’ xuất lần Kí tự ‘a’ xuất lần Kí tự ‘n’ xuất lần Kí tự ‘g’ xuất lần Kí tự ‘x’ xuất lần VÍ dụ tiếp, xâu: ‘1a2B6c8*D’ Với ví dụ này có nhiều bạn (7) hiểu nhầm và đưa 1,2,6,8 và * yêu cầu bài đưa các kí tự tiếng anh, để làm bài này và làm nào cô và các em cùng giải ? Trước hết vì xâu không phân biệt chữ hoa hay chữ thường nên ta cần chuyển tất các kí tự xâu là chữ hoa, ta cần sử dụng hàm hay thủ tục gì? Thủ tục upcase(ch) ? Tiếp theo là đếm số lần xuất kí tự ta có thể làm cách nào? Đếm kí tự, gặp kí nào thì tăng số lần xuất kí tự đó lên Vậy ta phải thực điều đó tới nào? Trong có 26 kí tự tiếng anh? Chúng ta phải đếm 26 lần? điều này hoàn toàn không sai dài, thời gian Vậy còn cách nào để làm nhanh hơn? Để khắc phục điều đó ta gọi kí tự bất kì là y Cho y chạy từ ‘A’ đến ‘Z’ và gán biến đếm dem[y]=0 Ta phải cần mảng để lưu trữ số lần xuất các kí tự? Mảng đó khai báo nào? Var dem:array[‘A’ ’Z’] of integer; Và bây khởi tạo các biến đếm Ta làm nào? for y:=’A’ to ‘Z’ Dem[y]:=0; Việc tiếp là đếm số lần xuất các kí tự Ta phải dùng câu lệnh gì để duyệt và để đếm? (8) For y:=’A’ to ‘Z’ For i:=1 to length(s) If y=upcase(s[i]) then dem[y]:=dem[y]+1; Sau đếm xong, ta cần đưa số lần xuất các kí tự xâu, có kí tự không có xâu, không lẽ đưa kí tự đó xuất lần, phải làm nào để loại bỏ trường hợp ấy? Hay nói cách khác làm để biết chữ cái nào xuất hiện? Kiểm tra chữ cái y xuất thì dem[y] phải khác Câu lệnh để kiểm tra điều nào? For y:=’A’ to ‘Z’ If dem[y]<>0 then write(‘so lan xuat hien ki tu’,y,’la’,dem[y],’lan’); Dựa vào cách bước mà cô và các em vừa cùng tìm hiểu các em nhà hoàn thiện chương trình này vào Chúng ta sang bài Bài SGK T73 Các em đọc để bài sách giáo khoa, em đứng dậy xác định input và output bài toán? Input: Nhập xâu Output: Đưa xâu mà các cụm từ ‘anh’ thay cụm từ ‘em’ 5p Input: Nhập xâu Output: Đưa xâu mà các cụm từ ‘anh’ thay cụm từ ‘em’ Công việc bài này ta cần phải tìm xâu ‘anh’, thực xóa xâu ‘anh’ và thay vào đó là xâu ‘em’(chèn vào vị trí vừa xóa) (9) Vậy bài này gồm việc chính, tìm, sóa và chèn Như phần kiểm tả bài cũ đầu tiết cô và các em đã ôn lại các kiến thức có liên quan đến thủ tục và hàm, bây chúng ta vận dụng các kiến thức đó để cùng tìm hướng giải bài này Ta phải dùng hàm hay thủ tục gì bài này? Hàm pos để tìm xâu ‘anh’ Thủ tục delete để xóa xâu ‘anh’ Thủ tục insert để chèn xâu ‘em’ Ta viết hàm và thủ tục này nào? + Tìm xâu ‘anh’? + Pos(‘anh’,s) + Xóa xâu ‘anh’? + Delete(s,vt,3) + Chèn xâu ‘em’? + Insert(‘em’,s,vt) Quá trình tìm, xóa và thay đó thực tới nào? Hay điều kiện dừng là gì? Khi không tìm xâu ‘anh’ Chúng ta có biết nào không tìm xâu ‘anh’ không? Không Vậy vòng lặp bài này là vòng lặp nào? While…do Trong vòng lặp while…do cần thực câu lệnh gì? Là lệnh: tìm, xóa và chèn (10) while pos(‘anh’,s)<>0 Begin Vt:=pos(‘anh’,s); Delete(s,vt,3); Insert(‘em’,s,vt); End Viết nào? while pos(‘anh’,s)<>0 Begin Vt:=pos(‘anh’,s); Delete(s,vt,3); Insert(‘em’,s,vt); End Trên đây cô đã hướng dẫn chi tiết các bài, các em nhà hoàn chỉnh tất các bài vào vở, tiết sau chúng ta thực hành bài này trên phòng máy IV Củng cố và dặn dò (4p) Củng cố - Cần nắm vững các kiến thức hàm và thủ tục, cách sử dụng chúng - Cách gải các bài tập đơn giản kiểu xâu Dặn dò - Hoàn chỉnh các bài vào - Làm thêm các bài 4.39, 4.40, 4.41 SBT trang 45 (11)

Ngày đăng: 14/09/2021, 09:25

Xem thêm:

w