1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Sử dụng một số bài tập cơ bản để củng cố bài 12 kiểu xâu trong sách giáo khoa tin học 11

16 41 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 172,32 KB

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

Nội dung

Điều 30.3: Yêu cầu về nội dung, phương pháp giáo dục phổ thông: “Phương pháp giáo dục phổ thông phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh phù hợp với đặc trưng từn

Trang 1

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

TRƯỜNG THPT NGA SƠN

SỬ DỤNG MỘT SỐ BÀI TẬP CƠ BẢN ĐỂ CỦNG CỐ BÀI 12 “ KIỂU XÂU” TRONG SÁCH GIÁO KHOA

TIN HỌC 11

Họ tên: Nguyễn Văn Hải

Chức vụ: Giáo viên

SKKN thuộc bộ môn: Tin học

THANH HOÁ NĂM 2021

Trang 2

MỤC LỤC

1 Mở đầu 2

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

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

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

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

2 Nội dung sáng kiến kinh nghiệm 3

2.1 Cơ sở lý luận 3

a Khái niệm về xâu 3 b Khai báo xâu 3 c Tham chiếu đến phần tử của xâu 4 d Phép toán, thủ tục, hàm xử lí xâu 4 e Hàm, thủ tục xâu bổ sung 5 g Mở rộng khai báo độ dài xâu 5 2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 5

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

2.3.1 Các bài tập cơ bản về xâu 6

2.3.2 Các bài tập sử dụng khai báo ansistring trong Free Pascal 10 2.4 Kết quả thu được 13

3.Kết luận, kiến nghị 14

3.1 Kết luận 14

3.2 Kiến nghị 14

Trang 3

1 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, Đảng và Nhà nước rất chú trọng vấn đề này, đặc biệt là trong các trường phổ thông

Luật số: 43/2019/QH14 – Luật Giáo dục, điều 29.4: Mục tiêu của giáo dục phổ

thông: “Giáo dục trung học phổ thông nhằm trang bị kiến thức công dân; bảo đảm cho học sinh củng cố, phát triển kết quả của giáo dục trung học cơ sở, hoàn thiện học vấn phổ thông và có hiểu biết thông thường về kỹ thuật, hướng nghiệp; có điều kiện phát huy năng lực cá nhân để lựa chọn hướng phát triển, tiếp tục học

chương trình giáo dục đại học, giáo dục nghề nghiệp hoặc tham gia lao động, xây dựng và bảo vệ Tổ quốc.” [1].

Điều 30.3: Yêu cầu về nội dung, phương pháp giáo dục phổ thông: “Phương pháp giáo dục phổ thông phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh phù hợp với đặc trưng từng môn học, lớp học và đặc điểm đối tượng học sinh; bồi dưỡng phương pháp tự học, hứng thú học tập, kỹ năng hợp tác, khả năng tư duy độc lập; phát triển toàn diện phẩm chất và năng lực của người học; tăng cường ứng dụng công nghệ thông tin và truyền thông vào quá trình giáo dục.” [1].

Như vậy, giáo dục phổ thông không chỉ đào tạo thế hệ học sinh học được cái gì? biết được cái gì? mà còn phải vận dụng được những cái đã học, đã biết vào thực tế cuộc sống Do đó, để thực hiện tốt mục tiêu về đổi mới căn bản, toàn diện GD&ĐT giáo viên cần có nhận thức đúng về bản chất của đổi mới phương pháp dạy học theo định hướng phát triển năng lực người học và một số biện pháp đổi mới

phương pháp dạy học theo hướng này

Với sự phát triển mạnh mẽ của công nghệ thông tin đã có những đóng góp trong việc đổi mới phương pháp dạy học ở nhà trường Tin học đặc biệt là Pascal là môn học mới ở trường phổ thông nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này

Trong quá trình giảng dạy học, người thầy ngoài việc giúp học sinh nắm được những kiến thức cơ bản nhất thì còn phải kích thích được tính tích cực tự học, sáng tạo, chủ động của học sinh qua mỗi bài học sinh cảm thấy thích thú với kiến thức mới và những ứng dụng thực tế và cuộc sống

Việc học ngôn ngữ lập trình Pascal giúp các em hiểu được cấu trúc hoạt động của máy tính điện tử từ đó định hướng đam mê về tin học, nghề nghiệp của các em lựa chọn

[1]: Luật số: 43/2019/QH14 – Luật Giáo dục

Trang 4

Trong thực tế khi lập trình hay khi xử lý dữ liệu vào các bài toán chúng ta thường đưa dữa liệu đó về các kiểu dữ liệu chuẩn (nguyên, thực, ký tự, logic) hoặc kiểu dữ liệu có cấu trúc, một trong những kiểu dữ liệu có cấu trúc là xâu Với mong muốn giúp học sinh tìm ra lời giải cho các bài toán liên quan tới kiểu dữ liệu xâu dễ

dàng, giải quyết được một số bài tập về xâu, tôi mạnh dạn đưa ra sáng kiến : “ Sử dụng một số bài tập cơ bản để củng cố bài 12 “kiểu xâu” trong sách giáo khoa tin học 11”.

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

Đưa ra các khái niệm về xâu, các ví dụ cơ bản về xâu

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

- Nghiên cứu : Kiểu dữ liệu xâu, các hàm và thủ tục của xâu và một số bài tập

về xâu

- 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

2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM

2.1 Cơ sở lí luận

Trong sáng kiến kinh nghiệm này xin được trình bày các khái niệm về xâu, các hàm, thủ tục khi làm việc với xâu và một số bài tập để củng cố về xâu

a.Khái niệm về xâu [2] :

- Xâu là một dãy các ký tự trong bộ 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 xâu Xâu có độ dài bằng 0 được gọi là xâu rỗng

- Có thể xem xâu là một mảng một chiều mà mỗi phần tử là một ký tự Các kí

tự của xâu được đánh số thứ tự, thường bắt đầu từ 1

- Tương tự như mảng, tham chiếu tới phần tử của xâu được xác định bởi tên biến xâu và chỉ số được trong cặp ngoặc [ ]

b.Khai báo xâu [2] :

Để khai báo biến xâu ta sử dụng từ khóa String

Var <tên biến>: string[độ dài lớn nhất của xâu];

Ví dụ: var hoten: string[50];

Để khai báo xâu có độ dài lớn nhất ta có thể bỏ qua phần độ dài xâu và khai

báo như sau Var hoten: string;

[2]: Hồ Sĩ Đàm – SGK Tin học 11

Trang 5

c Tham chiếu đến phần tử của xâu [2]:

Xâu là một mảng ký tự do đó để tham chiếu đến mỗi kí tự của xâu ta thực hiện như sau: <tên biến xâu>[chỉ số phần tử];

d Phép toán, thủ tục, hàm xử lí xâu [2] :

- Phép ghép xâu (phép cộng xâu): kí hiệu là dấu cộng (+), dùng để ghép

nhiều xâu thành một

- Các phép so sánh <, <=, =, >=, >, <> có thứ tự thực hiện ưu tiên thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo các quy tắc sau:

+ Xâu A > xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang

trong xâu A có mã ASCII lớn hơn

+ Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì

xâu A < xâu B

- Thủ tục Delete(st,vt,n): xóa đi n kí tự trong xâu st, bắt đầu từ vị trí vt

'abcdef' Delete(st,5,2) 'abcd'

- Thủ tục Insert(s1,s2,vt): chèn xâu s1 vào s2, bắt đầu ở vị trí vt.

Giá trị s1 Giá trị s2 Thao tác Kết quả

'PC' 'IBM486' Insert(s1,s2,4) 'IBMPC486'

- Hàm Copy(s,vt,n): tạo xâu mới n kí tự liên tiếp bắt đầu từ vị trí vt của xâu s.

- Hàm Length(s): cho giá trị là độ dài xâu s.

- Hàm Pos(s1,s2): cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2.

Giá trị s1 Giá trị s2 Thao tác Kết quả

- Hàm Upcase(ch): cho chữ cái in hoa ứng với chữ cái trong ch.

[2]: Hồ Sĩ Đàm – SGK Tin học 11

Trang 6

e Hàm, thủ tục xâu bổ sung [4]:

- Thủ tục Str(value, st): Biến đổi giá trị bằng số nguyên hoặc số thực Value thành dãy các ký tự biểu diễn số đó

Giá trị Value Thao tác Kết quả xâu st

1235.50 Str(value:1:2,st) '1235.50'

- Thủ tục Val(st,value,code): Biến đổi xâu ký tự st (biểu diễn số nguyên hoặc số thực) thành một số nguyên hoặc thực chứa trong value Code là số nguyên để phát hiện lỗi, nếu phép biến đổi mà đúng thì code có giá trị bằng 0, nếu sai do st không biểu diễn đúng số nguyên hoặc số thực code sẽ nhận giá trị bằng vị trí của kí tự sai trong xâu st

Giá trị xâu st Thao tác Kết quả value Kết quả code '1235' Val(st,value,code

)

'123abc' Val(st,value,code

)

- Hàm Ord(ch): cho mã của kí tự ch trong bảng mã ASCII

- Hàm Chr(n): cho kí tự với mã là n

g Mở rộng khai báo độ dài xâu :

Khi thực hành trên Turbo Pascal xâu khai báo có độ dài lớn nhất là 255 Chương trình dịch này hiện nay ít sử dụng mà sử dụng sang chương trình dịch Free Pascal Chương trình dịch này cho khai báo xâu có độ dài lớn hơn Cách khai báo như sau :

Var <tên biến>: ansistring;

Kích thước khai báo kiểu ansistring là gần 2GB

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

Trang 7

[4]: Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc

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 Các tiết học được sử dụng máy chiếu, phòng thực hành nhiều hơn giúp cho học sinh học tập sinh động và trực quan hơn Tuy nhiên có một thực tế mà tôi và các đồng nghiệp trong nhóm 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ác bài tập sử dụng về xâu học sinh giải quyết chưa thực sự được nhiều, các em chưa áp dụng được cách sử dụng các hàm, thủ tục của xâu để giải quyết các bài toán Đôi khi còn chưa nhận dạng các bài tập xâu để làm việc với xâu Do đó trong sáng kiến này tôi trình cách sử dụng các hàm, thủ tục của xâu để học sinh làm quen và giải quyết được các bài tập cơ bản về xâu

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

2.3.1 Các bài tập cơ bản về xâu

a Bài tập 1[2]: Viết chương trình nhập một xâu từ bàn phím Đưa ra màn hình xâu

theo thứ tự ngược lại

Program baitap1;

var s:string;

tg:char;

i:integer;

BEGIN

write('moi nhap xau '); read(s);

for i:=1 to length(s) div 2 do

begin

tg := s[i];

s[i]:= s[length(s)-i+1];

s[length(s)-i+1]:= tg;

end;

write(s);

readln;

readln;

END

Đây là bài tập trong sách giáo khoa tin học lớp 11, trong sách giáo khoa đã có cách giải nhưng trong sáng kiến này tôi đưa cách giải khác để hướng dẫn học sinh hiểu hơn về cách truy cập đến các phần tử của xâu và làm rõ hơn nữa về ý tưởng hoán đổi giá trị của hai phần tử với nhau Đây là một cách giải quyết để học sinh làm việc với những bài toán phức tạp hơn sau này

Trang 8

[2]: Hồ Sĩ Đàm – SGK Tin học 11

b Bài tập 2[2]: Viết chương trình thực hiện nhập từ bàn phím một xâu Đưa ra

màn hình xâu thu được bằng cách loại bỏ hết dấu cách trong xâu

Program baitap2;

var s:string;

BEGIN

write('moi nhap xau '); read(s);

while pos(#32,s)>0 do delete(s,pos(#32,s),1);

write(s);

readln;

readln;

END

Bài tập trên là một cách giải khác trong sách giáo khoa tin học 11 Với xâu có độ dài nhỏ hơn hoặc bằng 255 học sinh có thể sử dụng hàm pos để lấy các vị trí trong xâu và quá trình này lặp lại cho đến khi không còn dấu cách (#32) trong xâu Cách giải này để củng cố học sinh về sử dụng hàm và thủ tục trong xâu

c Bài tập 3[2]: Viết chương trình nhập từ bàn phím một xâu ký tự s1, tạo xâu s2

gồm tất cả các chữ số trong xâu s1( giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình

Program baitap3;

var s1,s2:string;

i:integer;

BEGIN

write('moi nhap xau s1 '); read(s1);

s2:='';

for i:=1 to length(s1) do

if (s1[i]>='0') and (s1[i] <='9') then s2:=s2 +s1[i];

write(s2);

readln;

readln;

END

[2]: Hồ Sĩ Đàm – SGK Tin học 11

Trang 9

Với bài tập trên học sinh được củng cố hơn nữa về cách truy cập đến các phần tử của xâu, cách ghép xâu và hiểu hơn về giá trị của xâu có thể là các chữ cái hoặc giá trị của xâu là ký tự số

c Bài tập 4[3]: Viết chương trình nhập vào một xâu họ tên từ bàn phím Đưa ra

màn hình xâu họ tên chuẩn Xâu họ tên chuẩn là xâu được loại bỏ hết dấu cách ở đầu xâu và cuối xâu, hai từ cách nhau một dấu cách, các ký tự ở đầu mỗi từ được viết in hoa

Program baitap4;

var hoten:string;

i:integer;

BEGIN

write('moi nhap xau hoten : '); read(hoten);

//Xoa het dau cach dau xau

while hoten[1]=#32 do delete(hoten,1,1);

//Xoa het dau cach cuoi xau

while hoten[length(hoten)]=#32 do delete(hoten,length(hoten),1);

//Xoa hai dau cach lien ke

while pos(#32#32,hoten)>0 do delete(hoten,pos(#32#32,hoten),1);

//Dua tat ca cac chu cai ve in thuong

for i:=1 to length(hoten) do

if (hoten[i]>='A') and (hoten[i] <='Z') then

hoten[i]:= chr(ord(hoten[i])+32);

//Dua xau ve dang chuan

hoten:= #32 +hoten;

for i:=1 to length(hoten) -1 do

if (hoten[i]=#32) and (hoten[i+1] <>#32)

then hoten[i+1]:=upcase(hoten[i+1]);

delete(hoten,1,1);

write(hoten);

readln;

readln;

END

' NGUYEN TRAN ANH ' 'Nguyen Tran Anh'

' dang hoai nam ' 'Dang Hoai Nam'

Bài tập trên giải quyết bài toán thường gặp trong cuộc sống là đưa xâu họ tên về dạng chuẩn, học sinh sử dụng các công cụ của xâu để giải quyết bài toán này [3]: Một số bài tập tham khảo trên Internet

Trang 10

d Bài tập 5[3]: Nam thường xuyên tham gia thi lập trình trên mạng Vì đạt được

thành tích cao nên Nam được gửi tặng một phần mềm diệt virus Nhà sản xuất phần mềm cung cấp cho Nam một mã số là một số nguyên dương N có không quá 255 chữ số Để cài đặt được phần mềm, Nam phải nhập vào mật khẩu của phần mềm Mật khẩu là một số nguyên dương M được tạo ra bằng cách tính tổng giá trị các chữ số của N

Yêu cầu: Hãy tìm số nguyên dương M.

Dữ liệu nhập:

- Số nguyên dương N được nhập từ bàn phím (1 ≤ N < 10255)

Dữ liệu xuất:

- Số nguyên dương M tìm được.

Program baitap5;

var n:string;

m,i,t:longint;

BEGIN

write('nhap n: '); read(n);

m:=0;

for i:=1 to length(n) do

if(n[i]>='0') and (n[i] <='9') then

begin

val(n[i],t);

m:= m+t;

end;

writeln(m);

readln;

readln;

END

Do học kiểu dữ liệu xâu nên bài toán có thể giải quyết được với những số có độ dài bằng 255, nếu không sử dụng kiểu dữ liệu xâu chúng ta chỉ giải quyết được với những số lớn nhất kiểu longint đối với Turbo Pascal hoặc đối với những số kiểu dữ liệu qword của Free Pascal Hai kiểu dữ liệu này đều không thõa mãn yêu cầu của bài toán

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

Trang 11

2.3.2 Các bài tập sử dụng khai báo ansistring trong Free Pascal

a Bài tập 1[3]: Cho xâu s (có độ dài không vượt quá 103) chỉ gồm các ký tự từ 'a' đến 'z' Cho biết có bao nhiêu loại ký tự xuất hiện trong s và đưa ra một ký tự xuất hiện nhiều nhất trong s cùng với số lần xuất hiện của ký tự đó

Dữ liệu nhập:

Dữ liệu xuất:

- Dòng 1 : Số lượng ký tự khác nhau trong xâu

- Dòng 2 : Ký tự xuất hiện nhiều nhất và cùng với số lần xuất hiện ký tự đó Nếu nhiều ký tự xuất hiện cùng nhau thì đưa ra ký tự có mã ASCII lớn nhất

Program baitap1;

uses crt;

var s :ansistring;

kt:array['a' 'z'] of longint;

ch,luu:char;

i,demkt,max:longint;

BEGIN

clrscr;

write('moi nhap xau :'); read(s);

for ch:='a' to 'z' do kt[ch]:=0;

//Dem so ky tu trong xau s

for i:=1 to length(s) do

for ch:='a' to 'z' do

if ch= s[i] then kt[ch]:= kt[ch]+1;

demkt:=0; max:=0;

for ch:='a' to 'z' do

begin

if kt[ch]>0 then demkt:=demkt+1;

if max <kt[ch] then begin max:=kt[ch]; luu:=ch; end;

end;

writeln('So luong ky tu khac nhau trong xau : ',demkt);

writeln('Ky tu xuat hien nhieu nhat la :',luu,' voi so lan la : ',max);

readln;

readln;

END

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

Ngày đăng: 19/05/2021, 20:56

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w