Cách thức tiến hành hoạt động: Bài toán: Viết chương trình vào từ bàn phím xâu kí tự S1, tạo xâu S2 gồm tất cả các chữ số có trong S1 có giá trị lớn nhất và đưa kết quả ra màn hình.. Dự [r]
Trang 1I Thông tin chung
1 Trường: THPT Kỳ Sơn
2 Môn học: Tin học
3 Thông tin nhóm:
II Nội dung:
TÊN CHỦ ĐỀ: KIỂU XÂU
Lớp: 11 Thời lượng dạy học: 02 Tiết (Tiết 30,31)
I MỤC TIÊU
1 Kiến thức
- Biết xâu là một dãy ký tự (có thể coi xâu là mảng một chiều)
- Biết cách khai báo xâu, truy cập phần tử của xâu
2 Kỹ năng
- Sử dụng được một số thủ tục, hàm thông dụng về xâu
- Viết được một số chương trình đơn giản có sử dụng xâu
3 Năng lực hướng tới:
- Kĩ năng, hiểu biết về phần mềm, thiết bị CNTT-TT: Gõ đúng quy cách Có khả
năng xác định và giải quyết các vấn đề đơn giản đối với dữ liệu kiểu xâu
- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào cấu trúc kiểu xâu
trong tin học
- Sử dụng CNTT-TT trong giao tiếp: Sử dụng thuật ngữ CNTT-TT chính xác
- Đạo đức, hành vi phù hợp khi sử dụng CNTT-TT: Phân biệt giữa thế giới thực và thế giới ảo
II MÔ TẢ CÁC MỨC ĐỘ NHẬN THỨC VÀ NĂNG LỰC ĐƯỢC HÌNH
THÀNH
Nội dung Loại câu
hỏi/bài tập
Nhận biết Thông hiểu Vận dụng
thấp
Vận dụng cao
Mở đầu Câu hỏi/bài
tập định tính
HS nhận ra các kiểu dữ liệu đã học;
phân biệt được sự khác nhau cơ bản giữa xâu và mảng một
Trang 21 Khai
báo
Câu hỏi/bài tập định tính
Hs lấy được một số ví dụ
về xâu kí tự đơn giản trong thực tế
Câu hỏi ND1.DT.NB1
Hs chỉ ra được dạng kí tự xâu trong tình huống thực tế
Câu hỏi ND1 DT TH1 Bài tập
định lượng Bài tập thực hành
2 Các
thao tác
xử lí xâu
Câu hỏi/bài tập định tính
Hs mô tả cấu trúc các thao tác xử lí xâu
Câu hỏi ND2.DT.NB1
Hs chỉ ra được các thành phần trong các thao tác xử lí xâu cụ thể
Câu hỏi ND2.DT.TH1
Bài tập định lượng
Hs biết cơ chế hoạt động của hàm và thủ tục trong kiểu xâu để chỉ ra được hoạt động một lệnh dạng cụ thể
Câu hỏi ND2.DL.NB1
Hs hiểu ý nghĩa các hàm
và thủ tục trong xâu để giải thích được hoạt động cụ thể
Câu hỏi ND2.DL.TH1
Hs viết được câu lệnh trong kiểu xâu để thực hiện một tình huống quen thuộc
Câu hỏi ND2.DL.VDT 1
Bài tập thực hành
Hs sửa lỗi lệnh
về thao tác trong chương
Trang 3trình quen thuộc có lỗi
Câu hỏi ND2.TH.TH1
3 Một số
ví dụ
Câu hỏi/bài tập định tính
Hs mô tả cấu trúc, ý nghĩa lệnh của kiểu xâu
Câu hỏi ND3.DT.NB1
Hs chỉ ra được các thành phần của hàm và thủ tục cụ thể
Câu hỏi 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 của kiểu xâu trong chương trình quen thuộc
Câu hỏi ND3.TH.TH1
Hs vận dụng các lệnh của 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 ND3.TH.VDT 1
III CÂU HỎI VÀ BÀI TẬP
1 Nhận biết
Câu MD1.DT.NB1 Em hãy cho biết kiểu dữ liệu có thể khai báo cho các dữ liệu tương ứng sau:
2007
10.5
True
2007 la nam Quy Suu
Câu MD2.DT.NB2 Em hãy lấy một ví dụ xâu kí tự đơn giản trong đời sống? Câu MD3.DT.NB3 Phân biệt sự khác nhau giữa xâu và mảng?
Câu ND1.DT.NB1 Có nhất thiết khai báo độ dài lớn nhất của xâu không?
Trang 4Câu ND2.DT.NB1 Trong 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 ND2.DL.NB1 Trong ngôn ngữ lập trình Pascal, khai báo nào trong các khai
báo sau là sai khi khai báo xâu kí tự ?
E S : string;
F X1 : string[100];
G S : string[256];
H X1 : string[1];
Câu ND3.DT.NB1 Trình bày cấu trúc, ý nghĩa hàm sao chép?
Câu ND3.DL.NB1 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ách sau ?
I S1 := ‘hoa’ ; i := pos(S1, ‘hoa’) ;
J i := pos(‘hoa’, S) ;
K i := pos(S, ’hoa’) ;
L i := pos(‘hoa’, ‘hoa’) ;
2 Thông hiểu
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 ?
M.S : char ;
N S : string[300];
O S : string;
P Cả 3 câu đều đúng ;
Câu ND2.DT.TH1 Độ dài tối đa của xâu kí tự trong PASCAL là
Câu ND2.DL.TH1 Trong ngôn ngữ lập trình Pascal, hàm Length(S) cho kết quả
gì ?
A Độ dài xâu S khi khai báo;
B Số ký tự hiện có của xâu S không tính các dấu cách;
C Số ký tự của xâu không tính dấu cách cuối cùng
D Số ký tự hiện có của xâu S
Câu ND2.TH.TH1 Hãy chỉ ra lỗi trong chương trình sau:
i := pos(‘’, S); { ‘ ’ là 2 dấu cách }
while i <> 0 do
Begin
Delete(S, i, 1) ;
Trang 5i := pos(‘ ’, S) ; End;
Câu ND3.DT.TH1 Trong ngôn ngữ lập trình Pascal, để xóa đi ký tự đầu tiên của xâu ký tự S ta viết :
Q Delete(S, 1, 1);
R Delete(S, i, 1); { i là biến có giá trị bất kỳ }
S Delete(S, length(S), 1);
T Delete(S, 1, i); { i là biến có giá trị bất kỳ }
Câu ND3.DL.TH1 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì ?
X := length(S) ;
For i := X downto 1 do
If S[i] = ‘ ’ then Delete(S, i, 1) ; { ‘ ’ là một dấu cách }
U Xóa dấu cách đầu tiên trong xâu ký tự S
V Xóa dấu cách thừa trong xâu ký tự S
W.Xóa dấu cách tại vị trí cuối cùng của xâu S
X Xóa mọi dấu cách của xâu S
Câu ND3.TH.TH1 Hãy sửa lỗi sai trong đoạn chương trình sau:
S1 := ‘anh’ ;
S2 := ‘em’ ;
i := pos(S2, S) ;
While i <> 0 do
Begin
Delete(S, i, 2) ; Insert(S1, S, i) ;
i := pos(S2, S) ; End
3 Vận dụng
Câu ND2.DL.VDT1 Viết câu lệnh đưa ra kết quả độ dài xâu s?
Câu ND3.TH.VDT1 Viết chương trình chèn xâu s1 vào xâu s2?
4 Vận dụng cao
IV KẾ HOẠCH THỰC HIỆN CHỦ ĐỀ
Nội dung Hình thức tổ Thời Thời Thiết bị DH, Học Ghi chú
Trang 6chức dạy học lượng điểm liệu
Kiểu xâu Tại lớp 2 tiết 30,31 SGK, máy chiếu
V THIẾT KẾ TIẾN TRÌNH DẠY HỌC
Hoạt động 1 Khởi động/mở bài
1 Mục tiêu: Tạo nhu cầu tìm hiểu về 1 kiểu dữ liệu mới – Kiểu xâu.
2 Nhiệm vụ học tập của học sinh: Nhập các số từ bàn phím theo yêu cầu của GV.
3 Cách thức tiến hành hoạt động: Chia lớp thành 4 nhóm.
a) Nhập N là 1 số kiểu Integer, N=687
b) Không thể nhập 1 số như câu a.
Nhập vào từ bàn phím rồi đưa ra màn hình các số sau:
a) 687 b) 123456789101112131415
- Có thể dùng kiểu mảng nhưng dài dòng;
- Chạy chương trình dùng kiểu xâu để học sinh thấy chương trình sẽ rất ngắn gọn.
Hoạt động 2 Hình thành kiến thức mới
1 Mục tiêu:
- Biết xâu là một dãy ký tự (có thể coi xâu là mảng một chiều)
- Biết cách khai báo xâu, truy cập phần tử của xâu
- Sử dụng được một số thủ tục, hàm thông dụng về xâu
2 Nhiệm vụ học tập của học sinh: Tham gia các hoạt động giáo viên giao.
3 Cách thức tiến hành hoạt động: Chia lớp thành 4 nhóm
Bước 2 Thực hiện nhiệm vụ được giao
Các nhóm nghiên cứu SGK.
Bước 1 Giao nhiệm vụ:
Các nhóm nghiên cứu SGK và cho biết:
- Xâu là gì?
- Cách tham chiếu đến phần tử của
Trang 7Bước 3 Báo cáo kết quả và thảo luận
- Xâu là một dãy kí tự trong bảng mã
ASCII
- Mỗi kí tự được gọi là một phần tử của
xâu
- Số lượng kí tự trong xâu được gọi là độ
dài của xâu
- Xâu có độ dài bằng 0 gọi là xâu rỗng
- Tham chiếu tới phần tử trong xâu được
xác định thông qua chỉ số của phần tử
trong xâu
- Chỉ số phần tử trong xâu thường được
đánh số từ 1
- Trong ngôn ngữ Pacal, tham chiếu tới
phần tử thường được viết :
<Tên biến xâu>[chỉ số];
Khai báo
- Pascal sử dụng từ khóa STRING để khai
báo xâu Độ dài tối đa của xâu được viết
trong [ ] sau từ khóa STRING Khai báo
như sau :
Var <tên biến> : String[độ dài lớn nhất của
xâu] ;
Ví dụ :
Var Ten : String[10] ;
Ho_dem : String[50] ;
Que : String;
xâu?
- Nêu cách khai báo xâu trong Pascal
và cho 1 số ví dụ?
Bước 4 Đánh giá kết quả
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 của xâu là 255
- Độ dài lớn nhất của xâu là 255
ký tự
Trang 8- Hằng xâu kí tự được đặt trong
cặp nháy đơn ‘ ’.
Bước 2 Thực hiện nhiệm vụ được giao
Các nhóm nghiên cứu SGK.
Bước 3 Báo cáo kết quả và thảo luận
- 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 bằng dấu cộng +
- Ý nghĩa: Ghép nhiều xâu thành một
- Có thể ghép xâu với các hằng và biến xâu
Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha Noi’
* Phép so sánh : <, <=, >, >=, = , <>, Pascal
tự động so sánh lần lượt 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ự của biến
st bắt đầu từ vị trí vt
'abcdef' delete(st,5,2); 'abcd'
'
ong
Hong'
delete(st,1,5); 'Hong'
* Thủ tục insert(s1,s2,vt): Chèn xâu s1 vào
xâu s2 từ vị trí vt
quả 'PC' 'IBM486' ins
rt(s1,s2,4);
'IBM
PC 486
Bước 1 Giao nhiệm vụ:
Các nhóm nghiên cứu SGK và cho biết có các thao tác xử lý xâu nào?
Trang 9'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 bắt đầu từ vị trí của xâu s
'Bai hoc
thu 9'
copy(s,9,5); 'thu 9'
* Hàm length(s): Cho giá trị là độ dài xâu s
Biểu thức Kết quả
'500 ki tu' length(s); 9
* Hàm pos(s1,s2): Cho vị trí xuất hiện đầu
tiên của xâu s1 trong xâu s2
'abcdef' Pos('cd',s2); 3
'abcdef' Pos('k',s2); 0
* Hàm upcase(ch): Cho chữ cái in hoa ứng
với chữ cái trong ch
'd' upcase(ch) 'D'
'e' upcase(ch) 'E'
Bước 4 Đánh giá kết quả
Hoạt động 3 Luyện tập
1 Mục tiêu: Củng cố khái niệm về xâu, cách khai báo xâu và các thao tác xử lí xâu.
2 Nhiệm vụ học tập của học sinh: Thực hiện các bài tập theo yêu cầu của GV.
3 Cách thức tiến hành hoạt động: Chia lớp thành 4 nhóm
Trang 10Bước 2 Thực hiện nhiệm vụ được giao
Các nhóm nghiên cứu SGK.
Bước 3 Báo cáo kết quả và thảo luận
* Ví dụ 1:
Nhập họ và tên của hai người, in ra màn hình
xâu dài hơn, nếu bằng nhau thì đưa ra xâu
nhập trước:
var
a,b:string;
begin
write('nhap ho ten thu nhat:');
readln(a);
write('nhap ho ten thu hai:');
readln(b);
if length(a)=length(b) then
write(a)
readln
Bước 1 Giao nhiệm vụ:
- Nhóm 1, nhóm 2 nghiên cứu ví dụ 1,
4 SGK rồi sửa lại chương trình theo yêu cầu:
+ Ví dụ 1 sửa nếu 2 xâu bằng nhau thì đưa ra xâu nhập trước.
+ Ví dụ 4 hãy đưa ra màn hình số kí tự trắng có trong xâu.
- Nhóm 3, nhóm 4 nghiên cứu ví dụ 2,
5 SGK rồi sửa lại chương trình theo yêu cầu:
+ Ví dụ 2 sửa kiểm tra xem kí tự cuối cùng của xâu thứ nhất có bằng kí tự cuối cùng của xâu thứ hai không? + Ví dụ 5 sửa tạo xâu s2 gồm tất cả các chữ cái in hoa có trong xâu s1?
Trang 11* Ví dụ 2:
Nhập hai xâu từ bàn phím và kiểm tra kí tự cuối của xâu thứ nhất có trùng kí tự cuối cùng của xâu thứ hai không
var
a,b: string;
begin
write('nhap xau thu nhat:');
readln(a);
wrtie('nhap xau thu hai:');
readln(b);
if a[length(a)]=b[length(b)] then
Write(‘Trung nhau’)
else write('khong trung nhau');
readln
and.
* Ví dụ 4:
Nhập một xâu và in ra màn số kí tự trắng có trong xâu?
var i,k,dem:byte;
a:string;
begin
write('nhap xau:'); readln(a);
k:=length(a);
dem:=0;
for i:=1 to k do
if a[i]=’ ' then dem:=dem+1;
writeln('ket qua:',dem);
readln
end.
* Ví dụ 5:
Nhập kí tự từ bàn phím vào xâu 1, tạo xâu 2 với các kí tự in hoa của xâu 1 và in ra màn hình kết quả
Trang 12var s1,s2:string;
i:byte;
begin
write('nhap xau s1:');
readln(s1);
s2:=’’;
for i:=1 to length(s1) do
if ('A'=>s1[i]) and (s1[i]<='Z') then
s2:=s2+s1[i];
writeln('ket qua:'s2);
readln
end.
Hoạt động 4 Vận dụng
1 Mục tiêu: Vận dụng kiểu xâu để viết chương trình 1 số bài đơn giản về xâu.
2 Nhiệm vụ học tập của học sinh: Vận dụng kiến thức để viết chương trình.
3 Cách thức tiến hành hoạt động:
Bài toán: Dùng thủ tục Delete() để giải quyết bài toán ví dụ 4?
Dự kiến kết quả:
var i,k:byte;
a,b:string;
begin
write('nhap xau:'); readln(a);
k:=length(a);
b:=a;
for i:=1 to k do
if b[i]=’ ' then Delete(b,i,1);
writeln('ket qua:',b);
readln
end.
Hoạt động 5 Tìm tòi mở rộng
Trang 131 Mục tiêu: Vận dụng kiểu xâu để viết chương trình giải quyết 1 số bài toán phức tạp hơn.
2 Nhiệm vụ học tập của học sinh: Vận dụng kiến thức để viết chương trình.
3 Cách thức tiến hành hoạt động:
Bài toán: Viết chương trình vào từ bàn phím xâu kí tự S1, tạo xâu S2 gồm tất cả các chữ
số có trong S1 có giá trị lớn nhất và đưa kết quả ra màn hình.
Dự kiến kết quả:
var s1,s2,s3:string;
i,j:byte; k:char;
begin
write('nhap xau s1:');
readln(s1);
s2:=’’;
for i:=1 to length(s1) do
if ('0'=>s1[i]) and (s1[i]<='9') then
s2:=s2+s1[i];
s3:=’’;
for k:=’9’ downto ‘0’ do
for i:=1 to length (s2) do
if s2[i]=k then s3:=s3+s2[i];
writeln('ket qua:'s3);
readln
end.