1. Trang chủ
  2. » Giáo án - Bài giảng

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

16 598 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 128,5 KB

Nội dung

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 t

Trang 1

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 HOÁ NĂM 2017

Trang 2

MỤC LỤC

I Mở đầu 1

1.1 Lí do chọn đề tài 1

1.2 Mục đích nghiên cứu 1

1.3 Đối tượng nghiên cứu 2

1.4 Phương pháp nghiên cứu 2

II Nội dung của sáng kiến kinh nghiệm 2

2.1 Cơ sở lý luận của sáng kiến kinh nghiệm 2

a Hàm (Function) 2

b Thủ tục (Procedure) 3

c Tham số hình thức 3

d Tham số thực sự 3

e Tham biến 3

g Tham trị 3

2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 3

2.3 Các giải pháp giải quyết vấn đề 4

a Thủ tục Delete(Var St:String; vt, n: Byte) 4

b Thủ tục Insert(S1: String; Var S2: string; Vt : byte) 5

c Hàm Copy(S: string; vt, N:byte) 6

d Hàm length(s:string) 7

e Hàm upcase(ch :char) 9

g Hàm Pos(s1,s2:string) 9

2.4 Kết quả thu được 11

III.Kết luận, kiến nghị 11

3.1 Kết luận 11

3.2 Kiến nghị 12

Trang 3

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 quá 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 toán đơn giản trong phần lập trình tin học 11

1.2 Mục đích nghiên cứu.

Trang 4

Đư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 toá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

Trang 5

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

Trang 6

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 Thực hiện thủ tục Kết quả xâu St

Đú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

Ví dụ 1 4 :

Trang 7

Lập trình nhập vào một xâu st Yêu cầu xóa các dấu cách ở vị trí đầu xâu và cuối xâụ

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('ađ','hé,2)='hađé 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

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

Trang 8

Giá trị xâu S1 Giá trị xâu S2 Thao tác Kết quả xâu s2

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

Giá trị xâu S1 Giá trị xâu S2 Thao tác Kết quả xâu s2

Trường hợp 3: Chèn vào xâu rỗng

Giá trị xâu S1 Giá trị xâu S2 Thao tác Kết quả xâu s2

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 Biểu thức Kết quả

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 toán trong các biểu thức Để hiểu rõ hơn ta xem xét ví dụ sau :

Ví dụ 1 4 : 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

Var St:String;

Procedure XoaTrangThua(Var St:String);

Begin

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

Trang 9

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 Biểu thức Kết quả

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

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?

Trang 10

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ụ 2 3 : 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

For i:=1 to length(s) div 2 Do

If s[i] <> s[ length(s)-i+1] then exit(false);

End;

BEGIN

Trang 11

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 ữ cái in hoa ứng với ch ứng với ch ới ch

Giá trị xâu ch Biểu thức Kết quả

'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ụ 1 4 : 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

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

Trang 12

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ả

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 toá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ụ 1 3 :

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ụ 2 3 :

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

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}

Trang 13

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

đề

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:

Tỉ lệ (%)\Lớp 11A

(lớp dạy)

11E (lớp đối chứng)

11C (lớp dạy)

11D (lớp đối chứng)

Trang 14

Yếu 0 13 8 20

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

- Đố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

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

Ngày đăng: 16/08/2017, 14:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w