1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Bài tập thực hành 5 (tiết 1)

10 8 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 105,86 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

chương trình thể hiện cho việc kiểm Whileilengths div 2 then Writeln‘ xâu đối xứng’ Else Writeln‘xâu không đối xứng’; - Gi¸o viªn nhËn xÐt vµ yªu cÇu häc sinh về nhà viết chương trình ho[r]

Trang 1

Bài tập thực hành 5(tiết 1)

Ngày soạn, ngày tháng năm 2008 Ngày giảng, ngày tháng năm 2008 Người soạn: Nguyễn Thị Nhung A

Giáo viên hướng dẫn: Ngô Thị Tú Quyên

I Mục đích yêu cầu

Củng cố cho học sinh những hiểu biết về kiểu xâu.Sau khi đã chuẩn bị bài tập ở nhà, học sinh cần có được những kỹ năng cơ bản làm việc với xâu trong lập trình Cụ thể là:

 Khai báo dữ liệu cho xâu, đưa ra màn hình giá trị của xâu

 Duyệt qua tất cả các kí tự của xâu để thực hiện xử lý tương ứng vói từng kí tự đó

 Sử dụng được các hàm và thủ tục chuẩn đã trình bày ở SGK

 Cung cấp cho học sinh một vài thuật toán cơ vản và đơn giản thường gặp khi xử lý văn bản, rèn luyện một số kỹ năng cài đặt:

 Tạo một xâu mới từ một xâu ban đầu

 Đếm số lần xuất hiện của một chữ cái trong một văn bản

 Góp phần hình thành và ràn luyện tư duy lập trình, tác phong của người lập trình

II Nội dung cụ thể

1 ổn định lớp(1p)

Kiểm tra sĩ số : Tổng số : Vắng :

Có phép :

Không phép :

2 Triển khai bài mới

*Hoạt động 1 : Hướng dẫn học sinh giải quyết bài 1(SGK)(17p’)

Hoạt động của giáo viên Hoạt động của học sinh

GV : Một em hãy đọc yêu cầu của

bài tập1

HS: Đọc bài

Trang 2

Một em hãy xác định Input và

Output của bài toán trên ?

- Nhận xét, đưa ra 2 ví dụ

VD: Xâu 1: aabccbaa

Xâu 2: accshkaa

- Xâu nào là xâu đối xứng? Vì sao?

- Cách khai báo một xâu s?

- Hãy nêu ý tưởng của thuật toán

dựa vào định nghĩa của xâu đối

xứng theo bài toán đã nêu?

- Dựa vào VD3-VD4 (sgk-71,72)

mà các em đã được học từ tiết

trước, một em hãy viết cách tạo một

xâu p ngược lại xâu ban đầu là xâu

s?

- Sau khi tạo xâu P ta cần làm gì?

- Vậy để kiểm tra ta dùng câu lệnh

nào ?

- Một em hãy kiểm tra dùng câu

lệnh này

- Các em hãy quan sát chương trình

+ Input: Xâu s + Output: Xâu s là xâu đối xứng hoặc s không phải là xâu đối xứng

- Xâu 1 là xâu đối xứng vì đọc từ phải sang trái cũng thu được kết quả như đọc từ trái sang phải

- Xâu 2 không phải xâu đối xứng tương tự như cách giải thích của xâu 1

- s: string;

- Tạo 1 xâu mới ngược với xâu ban

đầu và so sánh xem 2 xâu này có giá trị bằng nhau hay không?

X:= length(s);

P:=”;

For i:= x down to 1 do P:=P+s[i];

- Ta cần kiểm tra xem xâu P có bằng với xâu s không

- Câu lệnh If….Then…

- If s=p then writeln(‘xâu đối xứng’)

Else Writeln(‘xâu không đối xứng’);

- Học sinh quan sát đoạn chương trình trong sách

Trang 3

(phần a-bt1-sgk73)

- VD xâu aaabffbaaa

Gọi một học sinh đứng tại chỗ chạy

chạy chương trình trên với xâu đã

cho

- Nhận xét : Ngoài cách trên ta còn

có cách khác như:

+ Dựa vào vị trí các ký tự đối xứng

trong xâu mà không cần phải tạo 1

xâu mới như chương trình trên

VD: aabccbaa

- Nhận xét ký tự đầu và ký tự cuối?

Ký tự thứ 2 và ký tự đứng ngay

trước ký tự cuối

- Vậy xâu có độ dài n, ký tự tại vị

trí thứ i trong xâu sẽ đối xứng với

ký tự ở vị trí nào trong xâu?

- Để kiểm tra xem xâu đó có phải là

xâu đối xứng không thì ta cần phải

kiểm tra xem tất cả các kí tự ở vị trí

đối xứng nhau trong xâu có bằng

nhau hay không Nếu gặp một cặp

vị trí đối xứng nào trong xâu vi

phạm thì kết luận luôn là xâu không

phải là xâu đối xứng Như vậy ta

dừng việc kiểm tra các cặp đối xứng

trong xâu khi nào?

- Xâu s có độ dài là n nếu phải kiểm

tra tất cả các vị trí đối xứng ta phải

kiểm tra bao nhiêu cặp vị trí đối

- Học sinh chạy chương trình trên bằng thuyết trình

- Đây là hai cặp vị trí đối xứng của xâu, và hai cặp vị trí đối xứng này các kí tự tương ứng đều bằng nhau

- Ký tự ở vị trí i đối xứng với ký tự

ở vị trí: n-i+1

- Nếu quá trình kiểm tra ta thấy 1 cặp vị trí đối xứng mà cặp kí tự đó không có giá trị bằng nhau thì ta sẽ dừng ngay việc kiểm tra Còn không thì ta phải kiểm tra tất cả các cặp vị trí đối xứng của xâu

- Ta sẽ phải kiểm tra (n div 2) cặp

vị trí đối xứng

Trang 4

- Việc kiểm tra này được thực hiện

lặp đi lặp lại với các cặp vị trí đối

xứng trong xâu vậy ta sẽ dùng câu

lệnh nào trong trường hợp này?

- Trong trường hợp này ta nên dùng

câu lệnh lặp nào? Vì sao?

- Một em hãy lên bảng viết đoạn

chương trình thể hiện cho việc kiểm

tra trên Giả sử nhập vào xâu s

- Giáo viên nhận xét và yêu cầu học

sinh về nhà viết chương trình hoàn

chỉnh theo cách thứ 2, không dùng

biến xâu p

- Ta sẽ sử dụng câu lệnh lặp

- Ta nên sử dụng câu lệnh lặp while do Vì trong quá trình kiểm tra nếu gặp một cặp vị trí nào đối xứng thì ta dừng việc kiểm tra ngay không cần phải kiểm tra các vị trí còn lại của xâu nữa

i :=1;

While(i<= length(s) div 2) and (s[i]=s[length(s)-i+1]) do

i:=i+1;

If i>(length(s) div 2) then Writeln(‘ xâu đối xứng’) Else

Writeln(‘xâu không đối xứng’);

Trang 5

-*Hoạt động 2: Hướng dẫn học sinh giải quyết bài tập 2(SGK-73)(20p’) Hoạt động của giáo viên Hoạt động của học sinh

GV : Một em hãy đọc yêu cầu của

bài tập 2 (SGK-73)

- Hãy xác định input và output của

bài toán

- VD: cho xâu aAyxz123

Số lần xuất hiện kí tự a là 2 lần, kí

tự y là 1 lần, kí tự x là 1 lần, kí tự z

là 1 lần

- GV: Từ ví dụ nêu trên em nào hãy

nêu ý tưởng để giải bài toán này?

- GV: Nhận xét ý tưởng của học

sinh và đưa ra ý tưởng để giải quyết

bài toán

*ý tưởng:

- Dùng mảng dem có chỉ số từ

‘A’ ’Z’.Khởi tạo giá trị cho mảng

- Chuyển tất cả các kí tự của xâu s

thành các kí tự in hoa

- Duyệt lần lượt các kí tự của xâu

và kiểm tra xem kí tự nào là kí tự

chữ cái thì tăng biến dem cho kí

tự đó

- Kiểm tra lại các phần tử của

mảng nếu phần tử nào của mảng

HS: Đọc bài

+ input: xâu s;

+ output: Thông báo số lần xuất hiện của mỗi chữ cái tiếng anh trong xâu s(Không phân biệt chữ hoa hay chữ thường)

- HS : Nghe giảng và ghi bài

- HS: Đưa ra ý tưởng của mình

- Chú ý nghe ý tưởng của giáo viên

Trang 6

có giá trị khác 0 thì đưa ra số lần

xuất hiện của kí tự tương ứng với

chỉ số của dem

GV: Phân tích qua thuật toán cho

học sinh hiểu

- Một em hãy nêu cách khai báo

một biến thuộc kiểu mảng

- Chỉ số của mảng là kiểu chữ số

tương tự như vậy ta cũng có thể

khai báo chỉ số theo kiểu kí tự là

từ ‘A’ ’Z’

- Giáo viên vứa phân tích ý tưởng

và cùng viết chương trình hoàn

chỉnh với học sinh

 Viết chương trình

Var

i: integer;

dem: array[‘A’ ’Z’] of integer;

s: string;

j: char;

begin

write(‘nhap xau s’); readln(s);

for j:= ‘A’ to ‘Z’ do

dem[j]:=0;

for i:=1 to length(s) do

s[i]:= upcase(s[i]);

for i:=1 to length(s) do

if (s[i]<= ‘Z’) and (s[i]>=’A’)

then inc(dem[s[i]]);

- a: array[1 10] of integer;

- Cùng giáo viên viết chương trình hoàn chỉnh

Trang 7

for j:=’A’ to ‘Z’ do

if dem[j] <>0 then

writeln(‘so lan xuat

hien’,dem[j],’la’,dem[j],’lan’);

end.

Hoạt động 3: Hướng dẫn học sinh làm bài tập 3(sgk-73)(10p’)

Hoạt động của giáo viên Hoạt động của học sinh

- Yêu cầu học sinh đọc đề bài

- Hãy xác định bài toán

- Ví dụ s=’anh den trong con mua’

-> s=’em den trong con mua’

- Hãy nêu ý tưởng của bài toán

- Tìm vị trí của xâu ‘anh’ thì ta sử

dụng hàm nào?

- Xóa cụm kí tự ta dùng hàm nào?

- Chèn từ ‘em’ ta dùng hàm nào?

- Đọc bài tập

+Input: xâu s + Ouput: Thay thế tất cả cụm kí

tự ‘anh’ bằng cụm kí tự ‘em’

- Ta tìm vị trí của từ ‘ạnh’ trong xâu s Xoá cùm kí tự đó đi và chèn ‘em’ vào vị trí ‘anh’ vừa xoá trong xâu s Viết xâu vừa thay thế

ra màn hình

- Pos(‘anh’,s)=vt

- Delete(s,vt,3);

- Insert(‘em’,s,vt);

Trang 8

- Trong trường hợp này chúng ta

chưa biết được có bao nhiêu cụm

từ ’anh’ trong xâu s nên ta phải sử

dụng câu lệnh nào ?

- Cùng học sinh viết chương trình

hoàn chỉnh

 Viết chương trình

Var

Vt: byte;

St: string;

Begin

Writeln(‘nhap vao xau :’);

Readln(s);

While pos(‘anh’,s) <> 0 do

Begin

Vt:=pos (‘anh’,s);

Delete(st,vt,3);

Insert(‘em’,st,vt);

End;

Writeln(st);

Readln;

End.

- Ta sẽ sử dụng câu lệnh While do

- Theo dõi giáo viên cùng giáo viên viết chương trình hoàn chỉnh

Trang 9

III Củng cố(2p’)

- Qua các bài tập trên chúng ta về cách tạo xâu mới từ xâu ban đầu, cách

sử dụng một số hàm chuẩn như upcase(),Pos(), Delete(),Insert()

IV.Bài tập về nhà

 Các em về nhà tự chạy lại các chương trình trên bộ test và trên máy tính Và làm một số bài tập trong sách bài tập bài 4.39, 4.40, 4.42 giờ sau chúng ta sẽ thực hành trên phòng máy

Trang 10

Nhận xét của giáo viên hướng dẫn

Ngày đăng: 01/04/2021, 20:25

w