Tải bản đầy đủ (.pdf) (16 trang)

(SKKN mới NHẤT) SKKN sử dụng một số khái niệm về chương trình con và các ví dụ để củng cố kiến thức về kiểu dữ liệu xâu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (186.73 KB, 16 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT NGA SƠN

SÁNG KIẾN KINH NGHIỆM

SỬ DỤNG MỘT SỐ KHÁI NIỆM VỀ CHƯƠNG TRÌNH CON
VÀ CÁC VÍ DỤ ĐỂ CỦNG CỐ CÁC KIẾN THỨC
VỀ KIỂU DỮ LIỆU XÂU

Người thực hiện: Nguyễn Văn Hải
Chức vụ:
Giáo viên
SKKN thuộc lĩnh vực mơn: Tin Học

THANH HỐ NĂM 2017

download by :


MỤC LỤC
NỘI DUNG
I. Mở đầu.............................................................................................
1.1 Lí do chọn đề tài......................................................................
1.2 Mục đích nghiên cứu...............................................................
1.3 Đối tượng nghiên cứu.............................................................
1.4 Phương pháp nghiên cứu........................................................
II. Nội dung của sáng kiến kinh nghiệm..........................................
2.1 Cơ sở lý luận của sáng kiến kinh nghiệm.................................
a. Hàm (Function)....................................................................
b. Thủ tục (Procedure).............................................................


c. Tham số hình thức................................................................
d. Tham số thực sự..................................................................
e. Tham biến ...........................................................................
g. Tham trị.................................................................................
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm....
2.3 Các giải pháp giải quyết vấn đề................................................
a. Thủ tục Delete(Var St:String; vt, n: Byte) .........................
b. Thủ tục Insert(S1: String; Var S2: string; Vt : byte)..............
c. Hàm Copy(S: string; vt, N:byte) ..........................................
d. Hàm length(s:string) ............................................................
e. Hàm upcase(ch :char) ...........................................................
g. Hàm Pos(s1,s2:string) ..........................................................
2.4 Kết quả thu được........................................................................
III.Kết luận, kiến nghị.........................................................................
3.1 Kết luận.....................................................................................
3.2 Kiến nghị...................................................................................

download by :

TRANG
1
1
1
2
2
2
2
2
3
3

3
3
3
3
4
4
5
6
7
9
9
11
11
11
12


I.MỞ ĐẦU
1.1. Lí do chọn đề tài.
Sự phát triển như vũ bão của khoa học công nghệ - kỹ thuật hiện đại đã đặt giáo
dục vào thử thách mới, đó là nhằm đào tạo ra thế hệ tương lai vừa có phẩm chất,
vừa phải có năng lực tiếp cận khoa học hiện đại để hội nhập với xu thế chung của
xã hội. Hiện nay trong các trường phổ thông đã chú trọng tới vấn đề này.
Nếu như trước đây môn Tin học chủ yếu chỉ truyền đạt cho các em kiến thức lý
thuyết, hàn lâm thì nay đã chú trọng tới thực hành và giải các bài tập, giúp các em
làm quen với lập trình trên máy tính, do đó các trường phổ thông đã được trang bị
cơ sở vật chất phục vụ dạy và học: phòng máy, phòng nghe nhìn đã được chuẩn
hóa, học sinh ý thức được mơn học nên tập trung hơn,...Tuy nhiên, nhưng thay đổi
đó chưa thực sự mang lại hiệu quả cao trong việc tiếp thu và nhận thức bài học của
học sinh và phần lớn học sinh chưa có điều kiện để tiếp cận với nhiều tài liệu, cũng

như thời gian để làm việc với máy tính đang cịn ít. Mơn Tin học đối với học sinh
là mơn khó, đặc biệt là chương trình lớp 11 vì kiến thức lập trình đa số với nhiều
học sinh là khó tiếp cận.
Trong q trình giảng dạy chương trình lớp 11 học sinh gặp rất nhiều khó khăn
trong việc giải quyết các bài tập từ việc soạn thảo chương trình cho đến việc cho
chương trình chạy được.Việc dạy học nội dung kiểu xâu, chương trình con là
những khái niệm trừu tượng đối với học sinh, học sinh thường gặp khó khăn trong
việc tiếp thu các kiến thức về lập trình. Do đó để phần nào giải thích cách sử dụng
hàm và thủ tục trong xâu, tôi chọn sáng kiến kinh nghiệm : “Sử dụng một số khái
niệm về chương trình con và các ví dụ để củng cố kiến thức về kiểu dữ liệu xâu”.
Giúp học sinh nắm được các thủ tục và hàm để giải quyết một số bài tốn đơn giản
trong phần lập trình tin học 11.
1.2. Mục đích nghiên cứu.

1

download by :


Đưa ra cấu trúc cụ thể các hàm và thủ tục của xâu, giải thích việc sử dụng các
hàm của xâu. Nâng cao kỹ năng sử dụng các hàm và thủ tục của xâu trong một số
trường hợp cụ thể.
1.3. Đối tượng nghiên cứu.
- Nghiên cứu cấu trúc của thủ tục và hàm của xâu, một số ví dụ sử dụng hàm và thủ
tục.
- Thực trạng học và làm bài tập môn Tin học của học sinh khối 11 tại trường THPT
Nga Sơn.
1.4. Phương pháp nghiên cứu.
- Phương pháp nghiên cứu lý thuyết.
- Phương pháp nghiên cứu thực tiễn.

- Phương pháp thực nghiệm sư phạm.
- Phương pháp thống kê toán học.
II. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
Khi học sinh học bài học Bài 12 “Kiểu xâu”, học sinh đã có rất nhiều khó
khăn, nhầm lẫn trong việc xử lý dữ liệu vì các em đang quen với các bài tốn xử lý
dữ liệu kiểu số, các bài toán quen thuộc như tính tổng hoặc tích của 1 dãy số thoả
mãn điều kiện nào đó.... Cách sử dụng các hàm và thủ tục của xâu, khi nào sử dụng
hàm, khi nào sử dụng thủ tục sẽ được trình bày cụ thể qua các phần tiếp theo của
sáng kiến kinh nghiệm này.
2.1 .Cơ sở lí luận
Việc sử dụng các khái niệm về chương trình con để giải thích cho các thủ tục,
hàm của xâu được thể hiện qua các khái niệm về chương trình con như sau:
a. Hàm (Function) : Là chương trình con thực hiện một số thao tác nào đó và
trả về một giá trị qua tên của nó[1].
Ví dụ : Hàm sqrt(x), sqr(x), abs(x)....
Trong mục 2.1 Khái niệm về hàm được tham khảo từ tài liệu tham khảo số 1
2

download by :


b. Thủ tục (Procedure) : Là chương trình con thực hiện các thao tác nhất định
nhưng không trả về giá trị nào qua tên của nó[1].
Ví dụ: Thủ tục Writeln, Readln, Delete....
c. Tham số hình thức:
Các biến được khai báo cho dữ liệu vào/ra của chương trình con được gọi là
tham số hình thức[1]
d. Tham số thực sự :
Trong lời gọi chương trình con, các biến và hằng thay thế tương ứng bởi tham
số hình thức được gọi là tham số thực sự [1].

e. Tham biến:
Trong lời gọi chương trình con các tham số hình thức được thay thế tương ứng là
tên các biến chứa dữ liệu ra được gọi là tham biến [1].
g. Tham trị:
Trong lời gọi chương trình con các tham số hình thức được thay thế tương ứng là
các giá trị cụ thể được gọi là tham trị [1].
Để phân biệt giữa tham trị và tham biến, ngơn ngữ lập trình pascal sử dụng từ
khóa var để khai báo những tham số biến.
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm
Mặc dù hiện nay công tác dạy và học môn Tin học tại các trường phổ thông đã
được quan tâm, cơ sở vật chất được trang bị nhưng chất lượng học sinh vẫn chưa
thực sự được nâng cao.
Tại trường THPT Nga Sơn, phần lớn học sinh có ý thức học tập và hứng thú với
môn Tin học. Trong những năm trở lại đây, ý thức được yêu cầu của xã hội, cũng
như là điều kiện cơ sở vật chất được nâng lên nên các em học sinh càng dành nhiều
thới gian cho môn học, từ đó mà chất lượng học sinh được nâng lên, đặc biệt ở lớp
Trong mục 2.1 Khái niệm về thủ tục, tham số hình thức, tham số thực sự, tham biến, tham trị
được tham khảo từ tài liệu tham khảo số 1
3

download by :


10 và lớp 12. Tuy nhiên, có một thực tế mà tơi và các đồng nghiệp trong tổ cịn
nhiều băn khoăn, trăn trở đó là chất lượng học sinh ở khối lớp 11 chưa cao, đặc biệt
là các bài kiểm tra hay các bài tập khi được đề cập đến các em rất lúng túng, tỉ lệ
giải quyết được các bài tập ở trong một lớp chỉ tính trên đầu ngón tay.
Một trong những bài tập các em gặp khó khăn là các bài tập kiểu xâu, đặc biệt là
ở khâu thao tác khai báo biến, vì mục này chỉ cần sai một dấu chấm, hay dấu phẩy
là đã không chạy được chương trình. Việc sử dụng các thủ tục và hàm cũng là vấn

đề khó khăn với học sinh, các em khơng biết khi nào thì dùng thủ tục gì, khi nào thì
dùng hàm gì. Từ những khó khăn đó, học sinh rất ngại làm các bài tập về kiểu xâu
rói riêng và các bài tập ở chương trình tin học 11 nói chung. Từ chỗ khơng biết
làm, ngại làm mà các em dần mất hứng thú dẫn đến sợ phải làm các bài tập và kết
quả không cao.
2.3. Các giải pháp để giải quyết vấn đề
a. Thủ tục Delete(Var St:String; vt, n: Byte) thực hiện xóa n kí tự của biến xâu
st bắt đầu từ vị trí vt [2].
Giá trị xâu St
'abcd'

Thực hiện thủ tục
Delete(St,2,2)

Kết quả xâu St
'ad'

Đúng như tên gọi thủ tục này thực hiện công việc là xóa xâu, khơng trả về giá trị
nào qua tên của thủ tục. Khi thực hiện thủ tục nhiều học sinh viết
Delete('abcd',2,2) ='ad' khi đó giáo viên sẽ giải thích cho học sinh là trường hợp
này em viết như thế khơng đúng. Việc giải thích như thế đối với nhiều học sinh khá
giỏi là chung chung, nhiều học sinh sẽ khơng phục. Bản chất của thủ tục xóa xâu có
cấu trúc như sau

Delete(Var St:String; vt, n: Byte).Khi học xong về phần

chương trình con học sinh sẽ nhận ra xâu St ở đây được khai báo là tham biến, Vt
và n là tham trị. Để hiểu rõ hơn về thủ tục delete ta cùng tìm hiểu qua ví dụ sau :
Cấu trúc thủ tục Delete(Var St:String; vt, n: Byte) được tham khảo từ TLTK số 2
4


download by :


Ví dụ 14:
Lập trình nhập vào một xâu st. u cầu xóa các dấu cách ở vị trí đầu xâu và cuối
xâu.
Program xoa_xau;
Var s: string;
Procedure xoa_xau_cach(Var st:string);
Begin
// Xoa dau cach dau xau
While St[1]= #32 Do delete(st,1,1);
// Xoa dau cach cuoi xau
While St[Length(st)]= #32 Do delete(st,length(st),1);
Xoa_dau_cach:=st;
End;
BEGIN
Write('Nhap xau S:'); Readln(S);
xoa_xau_cach(s);
Writeln(s);
Readln;
END.
b. Thủ tục Insert(S1: String; Var S2: string; Vt : byte) chèn xâu s1 vào xâu s2
bắt đầu từ vị trí vt[2].
Từ cấu trúc của thủ tục học sinh nhận thấy s1 và vt được khai báo là tham trị và s2
được khai báo là tham biến. Học sinh sẽ không được viết như sau
Insert('add','he',2)='hadde' mà phải lấy giá trị từ xâu s2. Để hiểu rõ hơn về thủ tục
chèn xâu là xem xét một số trường hợp sau :
Cấu trúc Thủ tục Insert(S1: String; Var S2: string; Vt : byte) được tham khảo từ TLTK số 2

Ví dụ 1 được tham khảo từ TLTK số 4
5

download by :


Trường hợp 1: Chèn vào vị trí nhỏ hơn hoặc độ dài xâu s2
Giá trị xâu S1

Giá trị xâu S2

Thao tác

Kết quả xâu s2

'gha'

Insert(s1,s2,2)

'gabcdha'

'abcd'

Trường hợp 2: Chèn vào vị trí lớn hơn độ dài xâu s2
Giá trị xâu S1

Giá trị xâu S2

Thao tác


Kết quả xâu s2

'gha'

Insert(s1,s2,4)

'ghaabcd'

Giá trị xâu S2

Thao tác

Kết quả xâu s2

''

Insert(s1,s2,0)

'abcd'

'abcd'

Trường hợp 3: Chèn vào xâu rỗng
Giá trị xâu S1
'abcd'

c. Hàm Copy(S: string; vt, N:byte) tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt
của xâu s.
Giá trị xâu S
'abcd'


Biểu thức

Kết quả

Copy(s,2,2)

'ab'

Từ cấu trúc trên ta nhận thấy s,vt,n được khai báo là các tham trị. Do đó khi sử
dụng hàm học sinh thay thế các tham số hình thức bằng các giá trị tương ứng. Hàm
copy tham gia vào tính tốn trong các biểu thức. Để hiểu rõ hơn ta xem xét ví dụ
sau :
Ví dụ 14: Viết chương trình liệt kê các từ của một xâu ký tự được nhập vào từ bàn
phím, mỗi từ phải được viết trên một dịng.
 Program liet_ke_tu;
Uses Crt;
Cấu trúc Hàm Copy(S: string; vt, N:byte) được tham khảo từ TLTK số 2
Ví dụ 1 được tham khảo từ TLTK số 4
6

download by :


Var  St:String;
Procedure  XoaTrangThua(Var St:String);
Begin
    {Xóa các ký tự trắng ở đầu xâu}
    While St[1]=#32 Do Delete(St,1,1);
    {Xóa các ký tự trắng ở cuối xâu}

    While St[Length(St)]=#32 Do Delete(St,Length(St),1);
    {Xóa các ký tự trắng ở giữa xâu}
    While POS(#32#32,St)<>0 Do Delete(St,POS(#32#32,St),1);
End;
 
Begin
    Write('Nhap xau St:'); Readln(St);
    XoaTrangThua(St);
    St:=St+#32;
    Writeln('Liet ke cac tu trong xau: ');
    While POS(#32,St)<>0 Do
        Begin
           Writeln(Copy(St,1,POS(#32,St)));
           Delete(St,1,POS(#32,St));
        End;
    Readln;
End.
d. Hàm length(s:string) cho giá trị là độ dài xâu s [2].
Giá trị xâu S
'abcd'

Biểu thức

Kết quả

Length(s)

4

Cấu trúc Hàm length(s:string) được tham khảo từ TLTK số 2

7

download by :


Hàm trả về một giá trị là độ dài xâu s, nếu xâu s rỗng thì giá trị là 0.
Ví dụ 1[3]:
Lập trình nhập vào hai xâu s1 và s2. Thơng báo ra màn hình kí tự đầu tiên của xâu
s1 có trùng với kí tự cuối cùng của xâu s2 hay không?
Program kiem_tra_trung;
Var st1,st2:string;
Function ktt(s1,s2:string):boolean;
Begin
IF s1[1]= s2[length(s2)] then ktt:=true else ktt:=false;
End;
BEGIN
    Write('Nhap xau St1:'); Readln(St1);
    Write('Nhap xau St2:'); Readln(St2);
IF ktt(st1,st2)=true then writeln('Trung nhau') else
then writeln('Khac nhau') ;
Readln;
END.
Ví dụ 23:

Lập trình nhập vào xâu s. Kiểm tra xâu có phải là xâu đối xứng hay

khơng?
Program kiem_tra_doi_xung;
Var st:string;
Function dxx(s:string):boolean;

Begin
Dxx:=true;
Ví dụ 1 được tham khảo từ TLTK số 3, Ví dụ 2 được tham khảo từ TLTK số 3

8

download by :


For i:=1 to length(s) div 2 Do
If s[i] <> s[ length(s)-i+1] then exit(false);
End;
BEGIN
    Write('Nhap xau St:'); Readln(St);
IF dxx(st)=true then writeln('Xau doi xung') else
then writeln('Xau khong doi xung') ;
Readln;
END.
e. Hàm upcase(ch :char) cho chữ cái in hoa ứng với ch
Giá trị xâu ch

Biểu thức

Kết quả

'a'

Upcase(ch)

'A'


'ab'

Upcase(ch)

Khơng có giá trị đối với chương trình
dịch Turbo Pascal. Đối với Free Pascal
chương trình có kết quả là 'AB'

Để hiểu rõ hơn về hàm upcase ta xem xét ví dụ sau đây:
Ví dụ 14: Lập trình nhập vào một xâu gồm các chữ cái in hoa. Chuyển xâu vừa
nhập sang in thường.
Program doi_in_thuong;
Uses Crt;
Var  St:String;
        i:Byte;
Begin
    Write('Nhap xau St: '); Readln(St);
  Cấu trúc Hàm upcase(ch :char) được tham khảo từ TLTK số 2 , Ví dụ 1 được tham khảo từ
TLTK số 4
9

download by :


For i:=1 to length(St) do
         If St[i] IN ['A'..'Z'] Then St[i]:=CHR(ORD(St[i])+32);
Write('Xau ket qua: ', St);
Readln;
End.

g. Hàm Pos(s1,s2:string) trả về vị trí đầu tiên của xâu s1 trong xâu s2 [2]
Giá trị xâu s1

Giá trị xâu s2

Biểu thức

Kết quả

'a'

'haa'

Pos(s1,s2)

2

'ab'

'cdde'

Pos(s1,s2)

0

Sử dụng khái niệm về chương trình con ta nhận thấy s1 và s2 là được khai báo là
tham trị của hàm Pos. Hàm Pos được sử dụng nhiều trong các bài tốn về xâu do đó
để hiểu thêm về hàm Pos ta xét một số ví dụ sau đây:
Ví dụ 13:
Lập trình nhập vào một xâu đưa ra màn hình xâu thu được khi loại bỏ hết dấu

cách trong xâu.
Program xoa_cach_xau;
Var st: string;
BEGIN
Write('Nhap xau St:'); Readln(St);
While Pos(#32,St) <> 0 Do delete(st,Pos(#32,st),1);
Writeln(st);
Readln;
END.
Ví dụ 23:
Lập trình nhập vào một xâu. Đếm số từ trong xâu
Ví dụ 1, ví dụ 2 được tham khảo từ TLTK số 3; Cấu trúc Hàm Pos(s1,s2:string) được tham khảo
từ TLTK số 2
10

download by :


Program dem_so_tu_trong_xau;
Var s:string;
Function dem_tu(st:string):integer;
Var i,d:integer;
    Begin

{Xóa các ký tự trắng ở đầu xâu}
   

While St[1]=#32 Do Delete(St,1,1);

   


{Xóa các ký tự trắng ở cuối xâu}

    While St[Length(St)]=#32 Do Delete(St,Length(St),1);
  

  {Xóa các ký tự trắng ở giữa xâu}

    While POS(#32#32,St)<>0 Do Delete(St,POS(#32#32,St),1);
d:=0; st:=st + #32;
For i:=1 to length(st) -1 Do
If ( St[i] <>#32) and ( st[i+1]= #32) then d:=d+1;
Dem_tu:=d;
BEGIN
Write('Nhap xau S:'); Readln(S);
Writeln(dem_tu(s));
Readln;
END.
2.4. Kết quả thu được.
Trong quá trình trao đổi, thảo luận, trình bày học sinh được thể hiện khả năng
vận dụng, hiểu biết của mình nên các em tỏ ra hăng hái trong việc giơ tay phát biểu
tranh luận. Đồng thời tiết học trở nên sinh động hơn và giáo viên không đóng vai
trị là người xây dựng lý luận mà học sinh là người chủ động để giải quyết các vấn
đề.

11

download by :



Tiến hành trong giảng dạy ở các lớp, tôi nhận thấy sau khi được hướng dẫn học
sinh đã biết làm bài tập. Từ đó, kết quả kiểm tra, đánh giá đã có sự thay đổi theo
hướng tích cực, kết quả cụ thể ở lớp áp dụng dạy và lớp đối chứng như sau:
11A

11E

11C

11D

(lớp dạy)

(lớp đối chứng)

(lớp dạy)

(lớp đối chứng)

Giỏi

25

14

15

8

Khá


45

40

42

36

Trung bình

30

33

35

33

Yếu

0

13

8

20

Kém


0

0

0

3

Tỉ lệ (%)\Lớp

III. KẾT LUẬN, KIẾN NGHỊ
3.1. Kết luận
Sau khi vận dụng vào để củng cố, hướng dẫn học sinh thực hiện, tôi nhận thấy:
- Học sinh tiếp thu bài tốt hơn, các em đã làm được bài tập, chạy được chương trình
do đó tạo hứng thú trong học tập.
- Kết quả kiểm tra, đánh giá được nâng lên. Ở các lớp được hướng dẫn thực hiện, tỉ
lệ đạt khá giỏi tăng lên, khơng cịn học sinh yếu kém hoặc tỉ lệ này còn rất thấp.
- Khi vận dụng vào hướng dẫn cho học sinh đòi hỏi bản thân phải tiếp cận nhiều tài
liệu để có nguồn tri thức phong phú, là điều kiện để tơi nâng cao tính tự học, nâng
cao kiến thức.
3.2. Kiến nghị
- Đối với đồng nghiệp, cần tăng cường hướng dẫn học sinh làm nhiều bài tập để
việc kiểm tra đánh giá học sinh bằng việc sử dụng bài tập, ngơn ngữ lập trình được
đồng bộ.
- Đối với nhà trường, quan tâm; xây dựng cơ sở vật chất đạt chuẩn để việc giảng
dạy tin học, đặc biệt là các giờ thực hành được thuận lợi.
12

download by :



- Đối với Sở Giáo dục, cần mở thêm các lớp tập huấn, tài liệu để nâng cao phương
pháp giảng dạy của giaó viên.
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh Hóa, ngày 25 tháng 5 năm 2017
Tơi xin cam đoan đây là SKKN của
mình viết, khơng sao chép nội dung của
người khác.

Nguyễn Văn Hải

13

download by :


TÀI LIỆU THAM KHẢO
[1]. Sách giáo khoa tin học 11

Hồ Sĩ Đàm

chủ biên

[2]. Turbo Pascal cẩm nang tra cứu

Quách Tuấn Ngọc

chủ biên


[3]. Sách bài tập tin học 11

Hồ Sĩ Đàm

chủ biên

[4]. Một số bài tập tham khảo trên Internet.

download by :



×