Bài 12. Kiểu xâu

Chia sẻ bởi Phạm Vân Thái | Ngày 10/05/2019 | 60

Chia sẻ tài liệu: Bài 12. Kiểu xâu thuộc Tin học 11

Nội dung tài liệu:

Chuẩn bị học :
1/ mỗi người 1 giấy nháp (có ghi tên mình) để nháp câu trả lời cho BT khi cần
2/ mỗi nhóm 1 tờ giấy làm bài của nhóm (để làm các BT có yêu cầu làm theo nhóm) và sẽ nộp lại khi cần thiết hoặc vào cuối buổi học để chấm điểm cho cả nhóm. Ghi tên nhóm & tên các hs trong nhóm ở trên đầu tờ giấy.
+ mỗi bàn là 1 nhóm, ký hiệu tên nhóm là : bàn 1-trái, bàn 2-trái,…, bàn 1-phải, bàn 2- phải …. (theo hướng nhìn lên bảng). Khi làm bài theo nhóm hs được phép trao đổi để thống nhất câu trả lời cho nhóm mình.
( * 1 vài ví dụ viết câu trả lời trên nháp :
AD3 : 15 AD4 : hoc sinh … BT-AD2: 4 và 6 , true ,..)
Bài : Bài tập Kiểu xâu (Chuỗi)
Tiết 29,30 ppct
Bài tập Kiểu xâu (Chuỗi)
Ktrabài : Tóm tắt về Kiểu xâu (Chuỗi)
? Tóm tắt lại các kiến thức về kiểu xâu
(trả lời theo từng hs) Ghi nhận trên bảng !!
Tóm tắt về Kiểu xâu (Chuỗi)
Khái niệm : nhiều ký tự gộp lại tạo thành xâu. VD : ‘hoc sinh’ , ‘lop 11’ , ‘’
Khai báo biến : Var s : string [ n ] ;
hoặc Var s:string ;
Các phép toán :
1. Phép + ghép 2 xâu theo thứ tự
2. Phép So sánh > , < , >= ,<= , = , <>
Các cách xử lý trên xâu :
1. Xâu được xem như là mảng 1 chiều với các phần tử là ký tự.
2. Sử dụng Các hàm , thủ tục xử lý xâu.
1/ UPCASE(Ch) 2/ LENGTH(s) 3/ POS(s1,s2)
4/ COPY(s,m,n)
5/ DELETE(s,m,n) 6/ INSERT(s1,s2,m)
Xử lý với Kiểu xâu (Chuỗi) - 1
1. Xem Xâu là mảng 1 chiều với phần tử là các ký tự.
ta có s[1] là ký tự thứ nhất , s[2] là ký tự thứ 2 …
VD : s:=‘hoc tap’; khi đó s[1] là ‘h’ , s[2] là ‘o’ , s[3] là ‘c’,..
Hình ảnh xâu s
Length(s) là 7
AD : a:=‘truong hoc’; b:=‘’ ;
1/ writeln(length(a));
2/ Writeln(a);
3/ for i:=1 to 6 do write(a[i]);
4/ For i:=1 to length(a) do write(a[i]);
5/ For i:=8 to length(a) do b:=b+ a[i];
writeln(b);
Hỏi kết quả khi thực hiện các lệnh ?
(trả lời theo hs)
 1/ 10 2/ truong hoc 3/ truong
4/ truong hoc 5/ hoc
Xử lý trên xâu (Chuỗi) - 2
2. Các hàm , thủ tục xử lý xâu.
1/ hàm đổi ký tự thành chữ in hoa UPCASE(Ch)
2/ hàm cho độ dài xâu LENGTH(s)
3/ hàm cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2
POS(s1,s2)
4/ hàm tạo xâu con gồm n ký tự liên tiếp bắt đầu từ vị trí m của xâu S COPY(s,m,n)
5/ Thủ tục xóa n ký tự của xâu S bắt đầu từ vị trí m DELETE(s,m,n)
6/ Thủ tục chèn xâu s1 vào xâu s2 bắt đầu ở vị trí m INSERT(s1,s2,m)
Các VD : Hỏi kết quả khi thực hiện ? (trả lời theo hs)
AD : a:=‘hoc o truong hoc’ ; b:=‘hoc’ ; c:=‘nha’ ; t:=pos(c,a); Writeln(pos(b,a)); writeln(t);
 1 và 0
AD : a:=‘hoc o truong hoc’ ; b:=copy(a,5,8); writeln(b);
c:=‘nha’ ; delete(a,14,3);insert(c,a,7); writeln(a);
 o truong
hoc o nhatruong
Btập 1 - Kiểu xâu (Chuỗi) – 1
BT1: khai báo 1 biến lưu trữ tên 1 học sinh ?
a/ Var a: string ;
b/ Var a: string [40] ;
c/ Var a: char ;
Câu nào đúng ? Câu hợp lý nhất ? (trả lời theo hs)
 a/ và b/ đúng , b/ là hợp lý hơn
BT2: đoạn CT sau :
a:=‘hoc sinh’;
b :=‘truong ; c:= ‘trung hoc’ ;
c:= b + c ; c:= c + a ;
writeln ( c );
Cho kết quả gi ? (trả lời theo hs)
 truongtrung hochoc sinh
Btập 1- Kiểu xâu (Chuỗi) -2
BT3: m:= ‘hoc’ < ‘hoc sinh’ ;
n := ‘an’ < ‘binh’ ;
p := ‘an’ > ‘An’ ;
q := ‘nha’ = ‘NHA’ ;
a/ m , n , p , q đều có giá trị TRUE b/ m , n đều có giá trị TRUE
c/ q có giá trị FALSE d/ m , n , p đều có giá trị TRUE
Kết quả nào đúng ? (trả lời theo hs)
 b/ c/ d/
BT4: var a ,b ,c : string;
begin write(‘nhap xau a=’);readln(a);
write(‘nhap xau b=’);readln(b);
c:=‘’ ; c:= c + a;
writeln (a>b); Writeln (a=c); Readln;
end.
Cho Kết quả gì khi nhập vào a là nam và b là nhat?
(trả lời theo hs)
 false và true
Đề BT-AD Xử lý trên xâu (Chuỗi)-1
1/ viết CT dảo ngược 1 chuỗi .
2/ viết CT đổi 1 chuỗi thành toàn chữ in hoa .
3/ viết CT loại bỏ các dấu cách ở đầu và cuối 1 xâu.
4/ viết CT đếm số lần xuất hiện của xâu cần tìm trong 1 xâu cho trước .
Vd : câu cho là : toi di hoc o truong trung hoc , di duong rat met nhoc Xâu cần tìm là : hoc  kết quả là 3
5*/ viết CT đếm số lần xuất hiện của từ cần tìm trong 1 câu cho trước .
Vd : câu cho là : toi di hoc o truong trung hoc .
Từ cần tìm là : hoc  kết quả là 2
6*/ viết CT thay thế 1 từ cần tìm bằng 1 từ mới trong 1 câu cho trước .
Vd : câu cho là : toi doc sach hoc o nha sach .
Từ cần tìm là : sach , từ mới để thay thế là : truyen
 kết quả là : toi doc truyen hoc o nha truyen
Đề BT-AD Xử lý trên xâu (Chuỗi)-2
2/ bài tập thêm :
7/ tìm những chữ cái (không phân biệt chữ thường , chữ in hoa) có mặt trong cả 2 xâu.
8/ trong n tên học sinh (n <30), hãy tim những tên có chứa xâu x. Viết ra những tên tìm được.
9/ viết CT nhập họ , tên , điemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột họ ten điemtb theo thứ tự tăng dần của tên (hay gọi là thứ tự Alphabet).
10/ viết CT nhập họtên , điểm các môn của n học sinh (n<=30, số môn học <=15), sau đó viết ra danh sách dạng họtên tbhk xloại, cuối cùng viết tỷ lệ % học sinh khá giỏi .
Giải BT-AD Kiểu xâu (Chuỗi)-1
1/ viết CT dảo ngược 1 chuỗi .
Hướng giải : Lời giải mẫu
2/ viết CT đổi 1 chuỗi thành toàn chữ in hoa .
Hướng giải : Lời giải mẫu :
3/ viết CT loại bỏ các dấu cách ở đầu và cuối 1 xâu.
Hướng giải : Lời giải mẫu :
4/ viết CT đếm số lần xuất hiện của xâu cần tìm trong 1 xâu cho trước
Vd : câu cho là : toi di hoc o truong trung hoc , di duong rat met nhoc
Xâu cần tìm là : hoc  kết quả là 3
6*/ viết CT thay thế 1 từ cần tìm bằng 1 từ mới trong 1 câu cho trước .
Hướng giải : Lời giải mẫu :
5*/ viết CT đếm số lần xuất hiện của từ cần tìm trong 1 câu cho trước .
Hướng giải : Lời giải mẫu :
Chạy Magnifer
** (trả lời hướng giải và viết lời giải theo hs) cho các bài 1.2.3.4
** (viết lời giải theo nhóm) cho các bài 5,6 mỗi nhóm chọn 1 bài. Viết trong 8 phút !!
Giải BT-AD Kiểu xâu (Chuỗi)-2
2/ bài tập thêm :
7/ tìm những chữ cái (không phân biệt chữ thường , chữ in hoa) có mặt trong cả 2 xâu.
Hướng giải :Lời giải mẫu
8/ trong n tên học sinh (n <30), hãy tim những tên có chứa xâu x. Viết ra những tên tìm được.
Hướng giải : Lời giải mẫu :
9/ viết CT nhập ho , tên , diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên (hay gọi là thứ tự Alphabet).
10/ viết CT nhập hotên , điểm các môn của n học sinh (n<=30, số môn học <=15), sau đó viết ra danh sách dạng họtên tbhk xloai, cuối cùng viết tỷ lệ % học sinh khá giỏi. (cách tính tbhk,xloại như các bài tập trước đây đã làm)
Chạy Magnifer
** (làm bài theo nhóm)
mỗi nhóm chọn 1 bài (trong 2 bài 9,10) để trình bày lời giải lên giấy làm bài của nhóm để nộp chấm điểm. Viết bài 8 phút !
** (trả lời hướng giải và viết lời giải theo hs) cho các bài 7,8
Dặn dò
Dặn dò – chuẩn bị ở nhà :
1/ làm các bài tập còn lại
2/ BTập thêm :
11/ lớp có n hs (n<30), tìm những hs có họtên dài nhất.
12/ trường có m lớp, mỗi lớp có n hs (m<20 , n<50). hãy tìm số lượng hs có họtên là x cho trước trong mỗi lớp, và chỉ ra lớp nhiều như vậy nhất.
3/ chuẩn bị xem và viết lời giải trước cho các bài tập ở Bài Thực hành 5 , SGK .
** nộp bài làm theo nhóm
Gồm các 2 BT-AD tự chọn
Kết thúc bài
LG1-Kiểu xâu (Chuỗi)
1/ viết CT dảo ngược 1 chuỗi .
Hướng giải :
Lời giải mẫu :
Var s,s1:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
S1:=‘’;
For i:= length(s) downto 1 do s1:=s1+s[i] ;
writeln(‘chuoi dao nguoc la :’, s1);
readln;
End.
Trở về slide đề bài
Thử trong Pascal
LG2-Kiểu xâu (Chuỗi)
2/ viết CT đổi 1 chuỗi thành toàn chữ in hoa .
Hướng giải :
Lời giải mẫu :
Var s:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
For i:=1 to length(s) do s[i] := upcase ( s[i] ) ;
writeln(‘kq =‘ , s );
readln;
End.
Trở về slide đề bài
Thử trong Pascal
LG3-Kiểu xâu (Chuỗi)
3/ viết CT loại bỏ các dấu cách ở đầu và cuối 1 xâu.
Hướng giải :
Lời giải mẫu :
Var s:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
while (s[1] =‘ ‘)and(length(s)>0) do delete (s,1,1);
while (s[length(s)] =‘ ‘)and(length(s)>0) do delete (s,length(s),1);
Writeln( ‘ kq = ‘ , s );
Readln;
End.
Trở về slide đề bài
Thử trong Pascal
LG4-Kiểu xâu (Chuỗi)
4/ viết CT đếm số lần xuất hiện của xâu cần tìm trong 1 xâu cho trước
Vd : câu cho là : toi di hoc o truong trung hoc , di duong rat met nhoc
Xâu cần tìm là : hoc  kết quả là 3
Lời giải mẫu :
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap xau s= ‘);readln(s);
write(‘nhap xau can tim a= ‘);readln(a);
d:=length(a); Dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ; dem:=dem+1;
s:=copy(s,vt+d,255);
end;
writeln(‘so lan =‘ , dem );
readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG5-Kiểu xâu (Chuỗi)
5*/ viết CT đếm số lần xuất hiện của từ cần tìm a trong 1 câu s cho trước .
Hướng giải : Lời giải mẫu :
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap chuoi s= ‘);readln(s);
write(‘nhap tu can tim a= ‘);readln(a);
d:=length(a); Dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ;
if (vt-1=0) and (vt+d-1=length(s)) then dem:=dem+1 ;
if (vt-1=0) and (vt+d-1 if (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1=length(s)) then dem:=dem+1 ;
if (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1 delete(s,vt ,d );
end;
writeln(‘so lan =‘ , dem ); readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG6-Kiểu xâu (Chuỗi)
6*/ viết CT thay thế 1 từ cần tìm bằng 1 từ mới trong 1 câu cho trước .
Hướng giải : Lời giải mẫu :
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap chuoi s= ‘);readln(s);
write(‘nhap tu can tim a= ‘);readln(a); write(‘nhap tu thay the b= ‘); readln(b); d:=length(a); dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ;
if ( (vt-1=0) and (vt+d-1=length(s)) ) or ( (vt-1=0) and (vt+d-
10) and (s[vt-1]=‘ ‘) and (vt+d-1=length(s)) ) or ( (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1 begin delete(s,vt ,d ) ; insert(b,s,vt); dem:=dem+1 ;
end;
end;
writeln(‘so tu da thay the =‘ , dem );
writeln(‘chuoi kq=‘ , s); readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG7-Kiểu xâu (Chuỗi)
7/ tìm những chữ cái (không phân biệt chữ thường , chữ in hoa) có mặt trong cả 2 xâu.
Var s1,s2 ,s,kq :string; a:char; vt,i: byte;
Begin
write(‘nhap chuoi s1= ‘);readln(s1); write(‘nhap chuoi s2= ‘);readln(s2);
for i:=1 to length(s1) do s1[i]:=upcase(s1[i]);
for i:=1 to length(s2) do s2[i]:=upcase(s2[i]);
s:=s1 ; kq:=‘’ ;
while length(s)>0 do
begin a:=s[1];
while pos(a,s)>0 do
begin vt:=pos(a,s); delete(s,vt,1); end;
if pos(a,s2)>0 then kq:=kq+a;
end;
writeln(‘s1=‘,s1); writeln(‘s2=‘,s2); writeln(‘cac ky tu co trong 2 chuoi la :‘ , kq , ‘gom so ky tu la= ‘,length(kq)); readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG8-Kiểu xâu (Chuỗi)
8/ trong n tên học sinh (n <30), hãy tim những tên có chứa xâu x. Viết ra những tên tìm được.
Hướng giải : Lời giải mẫu :
Const nmax=30;
Var a:array [1..nmax] of string[8] ;
x :string; I,dem:byte;
Begin write(‘nhap so hs n= ‘);readln(n);dem:=0;
for i:=1 to n do
begin write(‘nhap ten hs ‘ , I , ‘la= ‘);readln(a[i]);
end;
write(‘nhap xau x can tim la= ‘);readln(x);
writeln(‘Ket qua :’);
for i:=1 to n do
if pos(x,a[i]) >0 then begin writeln(a[i]); dem:=dem+1; end;
writeln(‘So truong hop tim thay la =’ , dem);
readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG9-Kiểu xâu (Chuỗi)
9/ viết CT nhập ho , tên , diemtb của n học sinh (n<=30), sau đó viết ra
danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên (hay gọi
là thứ tự Alphabet).
Const nmax=30;
Var ten: array [1..nmax] of string[8] ; ho : array [1..nmax] of string[35] ;
tb : array [1..nmax] of real ; n,i,j :byte; a:string[8]; b: string[35]; c:real;
Begin write(‘nhap so hs n= ‘); readln(n);
for i:=1 to n do
begin write(‘nhap ho dem hs ‘ , I , ‘la= ‘);readln(ho[i]);
write(‘nhap ten hs ‘ , I , ‘la= ‘);readln(ten[i]);
write(‘nhap tb hs ‘ , I , ‘la= ‘);readln(tb[i]);
end;
for i:= n downto 2 do
for j:=1 to i-1 do
if ten[j]>ten[j+1] then
begin a:=ten[j]; ten[j]:=ten[j+1]; ten[j+1]:=a;
b:=ho[j]; ho[j]:=ho[j+1]; ho[j+1]:=b;
c:=tb[j];tb[j]:=tb[j+1];tb[j+1]:=c;
end;
for i:=1 to n do writeln(ho[i]:40,ten[i]:10,tb[i]:10:2); readln;
end.
Trở về slide đề bài
Thử trong Pascal
LG10-Kiểu xâu (Chuỗi)
10/viết CT nhập hotên , điểm các môn của n học sinh (n<=30, số môn học <=15), và
sau đó viết ra danh sách dạng họtên tbhk xloai, cuối cùng viết tỷ lệ % học sinh khá
giỏi .
Const nmax=30; mmax=15;
Var hoten: array [1..nmax] of string[45] ;
tb : array [1..nmax] of real ; n,m,i,j,dem : byte; tg,d : real; xl : string[8] ;
Begin write(‘nhap so hs n= ‘);readln(n); write(‘nhap so mon m= ‘);readln(m);
for i:=1 to n do
begin write(‘nhap hoten hs ‘ , I , ‘la= ‘);readln(hoten[i]); tg:=0;
for j:=1 to m do
begin write(‘nhap diem mon ‘ , j , ‘la= ‘);readln(d); tg:=tg + d;
end; tb[i]:=tg/m;
end; dem:=0;
for i:= 1 to n do
begin write(hoten[i]:50,tb[i]:10:2);
if tb[i] <5 then xl:=‘yeu’ else if tb[i] <6.5 xl : =‘tbinh’
begin dem:=dem+1; if tb[i] <8 then xl:=‘kha’ else> end;
writeln(‘Ty le% kha gioi la=’,dem*100/n :10:2); readln;
end.
Trở về slide đề bài
Thử trong Pascal
Kthúc Bài : Bài tập Kiểu xâu (Chuỗi)
Cám ơn đã theo dõi bài
Bài học kết thúc

Tiết 29,30 ppct
Bài tập Kiểu xâu (Chuỗi)
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Phạm Vân Thái
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)