21
UBND THỊ XÃ NINH HÒA PHÒNG GIÁO DỤC VÀ ĐÀO TẠO Kính gửi: Hội đồng Xét duyệt sáng kiến thị xã ĐỀ CƯƠNG SÁNG KIẾN Đề tài: Sử dụng phần mềm chấm bài Themis góp phần nâng cao chất lượng bồi dưỡng học sinh giỏi tin học 9Họ và tên: Trần Minh Thọ Chức vụ: Giáo viên – Tổ phó tổ Toán, Tin, Thể dục Đơn vị công tác: Trường THCS Trần Quang Khải Đề tài chuyên môn: Môn tin học khối lớp 9 Tháng 8 năm 2020

ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

UBND THỊ XÃ NINH HÒA

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO

Kính gửi: Hội đồng Xét duyệt sáng kiến thị xã

ĐỀ CƯƠNG SÁNG KIẾN

Đề tài: “Sử dụng phần mềm chấm bài Themis góp phần nâng cao

chất lượng bồi dưỡng học sinh giỏi tin học 9”

Họ và tên: Trần Minh Thọ

Chức vụ: Giáo viên – Tổ phó tổ Toán, Tin, Thể dục

Đơn vị công tác: Trường THCS Trần Quang Khải

Đề tài chuyên môn: Môn tin học khối lớp 9

Tháng 8 năm 2020

Page 2: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

2

Page 3: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

ĐỀ CƯƠNG SÁNG KIẾN

- Họ và tên: Trần Minh Thọ Giới tính: Nam

- Ngày, tháng, năm sinh: 19/08/1982

- Cơ quan, đơn vị công tác: THCS Trần Quang Khải

- Chức vụ/ chức danh: Tổ Phó tổ Toán, Tin, thể dục

- Trình độ chuyên môn: Đại học sư phạm

1. Tên sáng kiến:

Sử dụng phần mềm chấm bài Themis góp phần nâng cao chất lượng bồi

dưỡng học sinh giỏi tin học 9

2. Lĩnh vực áp dụng

2.1. Lĩnh vực áp dụng sáng kiến:

Áp dụng cho việc dạy học môn tin học phần ngôn ngữ lập trình Pascal và

đặc biệt là bồi dưỡng học sinh giỏi môn tin học.

2.2. Mục tiêu

Môn tin học ở trường phổ thông trang bị cho học sinh những hiểu biết cơ

bản về công nghệ thông tin và vai trò của nó trong xã hội hiện đại. Môn học này

giúp học sinh bước đầu làm quen với phương pháp giải quyết vấn đề theo quy

trình công nghệ và kĩ năng sử dụng máy tính phục vụ học tập và cuộc sống. Tin

học có ý nghĩa to lớn đối với sự phát triển trí tuệ, tư duy thuật toán, góp phần

hình thành học vấn phổ thông cho học sinh.

Bồi dưỡng học sinh giỏi là một trong những phong trào mũi nhọn của

trường và của Thị xã, Có học sinh giỏi các cấp nhất là học sinh giỏi Thị xã,

Tỉnh. Giáo viên mới thấy được sự thành công của mình trong sự nghiệp giáo dục

và sự tiến bộ nghề nghiệp đối với xã hội.

Để học tốt môn ngôn ngữ lập trình Pascal học sinh cần được hình thành

và rèn luyện tư duy lập trình, việc hình thành và rèn luyện được giáo viên chú

trọng thường xuyên thông qua một số bài toán đơn giản nhưng đòi hỏi phải có

sự vận dụng tư duy của học sinh.

Phần mềm Themis là phầm mềm chấm bài tự động là công cụ hỗ trợ

quan trọng của giáo viên và ban giám khảo các kì thi lập trình, phần mềm có

Page 4: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

2

nhiều ưu điểm như: Tự động hóa các thao tác cho điểm, quá trình cho điểm hoàn

toàn khách quan, Giáo viên chấm bài của học sinh hoàn toàn tự động nên tiết

kiệm được thời gian đọc code đồng thời phát hiện được các giải thuật sáng tạo

của học sinh. Học sinh có thể tự luyện tập và dùng phần mềm để chấm điểm mà

không cần tới việc đọc code của giáo viên.

2.3.Đối tượng và phạm vi nghiên cứu

Học sinh đã và đang học lớp 8 và giáo viên tham gia bồi dưỡng học sinh

giỏi lớp 9 tại trường THCS Trần Quang Khải.

3. Cơ sở pháp lý

Thi học sinh giỏi là phong trào mũi nhọn của các trường THCS nói riêng

và của các Phòng GD&ĐT, Sở GD&ĐT nói chung, và hằng năm, Phòng và Sở

giáo dục đào tạo đều tổ chức thi học sinh giỏi môn tin học cấp thị xã, cấp Tỉnh.

Hội đồng đội tổ chức thi tin học trẻ không chuyên cấp thị xã và cấp Tỉnh và nội

dung thi học sinh giỏi tin học chính là ngôn ngữ lập trình mà các em được học ở

môn tin học lớp 8.

4. Thực trạng:

Trong 4 năm học môn tin học ở cấp THCS thì năm học lớp 8 các em sẽ

được học ngôn ngữ lập trình, mà cụ thể là ngôn ngữ lập trình Pascal, đây là một

chương trình khó nhất trong các chương trình mà các em được học ở cấp THCS.

Để học sinh học tốt môn tin học thì đòi hỏi nhà trường phải có trang bị

đủ máy vi tính và các em cũng phải có máy vi tính ở nhà. Các năm gần đây

trường THCS Trần Quang Khải đã trang bị phòng máy vi tính hiện đại đáp ứng

tốt cho việc dạy học. Tuy nhiên, về phần học sinh vì là con em của nông dân, gia

đình còn khó khăn nên nhiều em không có máy vi tính ở nhà gây khó khăn cho

việc tự học của các em.

Nhiều học sinh chưa được hình thành tư duy lập trình thường học trước

quên sau, học sau thì quên trước, do các em chưa nắm chắc cơ bản nên càng học

càng rối, dẫn đến những bài đã làm rồi có khi giáo viên cho làm lại hoặc cho

dạng tương tự thì lại không làm được.

Theo qui định của Sở GD&ĐT thì việc chấm bài thi học sinh giỏi môn

tin học sẽ được thực hiện trên máy và dùng phần mềm Themis (nghĩa là giám

khảo chuẩn bị sẵn test và đưa bài thực hành của học sinh cho máy vi tính chấm),

vì vậy trong quá trình làm bài các em chỉ cần sơ suất nhỏ (ví dụ khai báo dữ liệu

không đủ lớn), bài làm không xử lý được hết test thì sẽ bị điểm thấp.

Page 5: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

3

5. Mô tả sáng kiến:

5.1. Về nội dung của sáng kiến:

Nội dung của sáng kiến là nêu lên các kinh nghiệm trong việc sử dụng

phần mềm chấm bài Themis để góp phần nâng cao chất lượng bồi dưỡng học

sinh giỏi môn tin học 9. Sáng kiến giúp cho giáo viên tiết kiệm nhiều thời gian

khi chấm bài (code) của học sinh, tạo tác phong làm việc chuyên nghiệm, khoa

học. Sáng kiến nhằm giúp cho học sinh có tư duy lập trình, giúp các em giải các

bài toán về lập trình tốt hơn, các em có hứng thú hơn khi học lập trình, không

còn thấy môn học khô khan, khó, đặc biệt là các em học sinh giỏi sẽ tìm ra các

giải pháp để giải các đề thi một cách trọn vẹn và làm được hết các test cũng như

yêu cầu mà đề đưa ra.

5.1.1. Hình thành lòng yêu thích học lập trình

Giáo viên cần tạo cho học sinh lòng yêu thích học lập trình thông qua

việc giới thiệu một số người thành đạt trên thế giới nhờ học giỏi về tin học và

được học lập trình từ nhỏ như tỉ phú Bill Gates - tác giả và chủ tịch tập

đoàn Microsoft, hãng phần mềm khổng lồ; Mark Elliot Zuckerberg là một

nhà lập trình máy tính người Mỹ, đồng sáng lập của Facebook; Larry

Page và Sergey Brin sáng lập Google từ năm 1998...

Giởi thiệu cho học sinh xem các video nói về việc dạy học lập trình từ

nhỏ cho học sinh tiểu học, ứng dụng lập trình pascal để điều khiển Robot....các

video nói về lợi ích của việc học lập trình

Thời sự VTV1 nói về tác dụng của học lập trình: https://youtu.be/cVs-

wqwCoQ8

Vì sao phải dạy lập trình cho con từ nhỏ:

https://youtu.be/7RlumXKoEXY

Tại sao mọi người nên học lập trình: https://youtu.be/OQAnhML3Q8g

Hào hứng ứng dụng thuật toán pascal để lập trình Robot:

https://dantri.com.vn/giao-duc-khuyen-hoc/hao-hung-ung-dung-thuat-toan-

pascal-de-lap-trinh-robot-20160411071310523.htm

5.1.2. Sử dụng phần mềm Themis

5.1.2.1. Giới thiệu về phần mềm:

Themis là phần mềm chấm bài tự động được phát triển theo yêu cầu của

Cục Khảo thí và Kiểm định chất lượng giáo dục, Bộ Giáo dục và Đào tạo. Sản

phẩm được thiết kế phục vụ ký thi học sinh giỏi Quốc gia hàng năm, nhưng

Page 6: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

4

hoàn toàn có thể sử dụng trong tất cả các kì thi và bài kiểm tra tin học dùng cơ

chế chấm điểm tự động và bằng bộ test.

5.1.2.2. Cài đặt Themis:

Tải phần mềm về tại địa chỉ:

https://drive.google.com/file/d/1hz_QkTicnB7pHoR4M51fL5LMLucMU38l/view?usp=sharing

Hoặc link rút gọn: http://tiny.cc/themis

Nháy đúp vào tệp tin ThemisInstaller.exe và cài đặt bình thường, tương

đối đơn giản.

Cấu hình và cho điểm từng bài thi (nếu cần): Nháy chuột phải vào tên bài thi và

chọn cấu hình bài thi

5.1.2.3. Chuẩn bị 1 kì thi

a. Các bước thực hiện

Chuẩn bị thư mục mang tên kì thi

Page 7: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

5

Trong thư mục này chứa 2 thư mục con là Đáp án và Thí Sinh, thư mục đáp án

chứa thư mục mang tên các đề thi và bộ test đáp án gồm file input và file output.

Thư mục Thí sinh chứa các thư mục con là Số báo danh của thí sinh trong mỗi

số báo danh lại chứa các tệp tin .pas là bài thi của học sinh.

Page 8: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

6

Ví dụ tạo thư mục kì thi 01 để chứa đáp án bài thi và các bài làm của học sinh:

KÌ THI 01

ĐÁP ÁN

BÀI 1

TEST01

BAI1.INP

BAI1.OUT

TEST02

BAI1.INP

BAI1.OUT

TEST03

BAI1.INP

BAI1.OUT

...

BÀI 2

TEST01

BAI2.INP

BAI2.OUT

TEST02

BAI2.INP

BAI2.OUT

TEST03

BAI2.INP

BAI2.OUT

... ....

THÍ SINH

SBD01

BAI1.PAS

BAI2.PAS

BAI3.PAS

...

SBD02

BAI1.PAS

BAI2.PAS

BAI3.PAS

...

SBD03

BAI1.PAS

BAI2.PAS

BAI3.PAS

...

...

KÌ THI 02

...

Page 9: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

7

b. Xem điểm và báo cáo kết quả

Phần mềm chấm và hiện kết quả điểm từng bài, điểm tổng cộng. Đối với những

bài bị lỗi thì hiện kí tự đặc biệt.

Ví dụ: bảng chấm điểm kiểm tra học kì 2 của nửa lớp 82 năm học 2019 – 2020

Đối với các bài có kí tự đặc biệt thì giáo viên kiểm tra lại bằng tay, để xem mức

độ làm bài của học sinh.

Sau đây là 2 trường hợp lỗi thường xảy ra đối với bài làm của học sinh

Một là học sinh chưa làm bài ví dụ bài 4 ở máy 10

Hai là bài dịch bị lỗi ví dụ bài 4 ở máy 9

Bài 3 ở máy 9 thì bài làm không qua được hết các test nên không đạt điểm tối đa

chỉ đạt 1,5/2. Còn bài 1 ở máy 9 thì không bị lỗi gì nhưng làm không đúng nên

bị điểm 0/4.

Page 10: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

8

Đây là trường hợp không có bài của học sinh (do học sinh chưa làm bài này)

Đây là trường hợp dịch bị lỗi: Khi bài làm của học sinh còn lỗi biên dịch, học

sinh chưa chạy được chương trình mà đã nộp bài

Page 11: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

9

5.1.3. Cách tạo bộ test cho mỗi bài tập, đề thi

5.1.3.1. Sự cần thiết phải có bộ Test

Bộ test có vai trò cực kì quan trọng, bộ test giúp phần mềm kiểm tra và

chấm bài của học sinh theo tiêu chuẩn do giáo viên đưa ra. Khi tạo bộ test giáo

viên cần tính hết các trường hợp mà học sinh có thể mắc phải sai lầm ví dụ như

khai báo biến có kiểu dữ liệu nhỏ, các trường hợp số âm, các trường hợp số rất

nhỏ, rất lớn,... Thông thường mỗi bài tập có từ 10 đến 20 bộ test. Một số trường

hợp thì ít nhất phải có 5 bộ test. Nếu bộ test không chuẩn, không lường hết

trường hợp thì giải thuật của học sinh không chính xác vẫn đạt điểm tối đa. Vì

vậy bộ test có vai trò cực kì quan trọng.

5.1.3.2. Cấu trúc bộ test

Mỗi bài đều có trúc bộ test như sau: (1 phần của ví dụ ở trên)

BÀI 1

TEST01

BAI1.INP

BAI1.OUT

TEST02

BAI1.INP

BAI1.OUT

TEST03

BAI1.INP

BAI1.OUT

...

Trong đó các tệp BAI1.INP Là dữ liệu nhập vào, ứng với nó BAI1.OUT là

dữ liệu xuất ra. Phần mềm sẽ căn cứ vào bộ test chuẩn này để chấm bài. Nếu

khớp thì sẽ cho điểm phần test đó, nếu không khớp thì test đó bị 0 điểm.

Page 12: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

10

5.1.3.3. Xây dựng bộ test

Muốn xây dựng bộ test thì giáo viên cần có code đáp án (chương trình)

của bài thi. Rồi từ đó nhập các dữ liệu vào (tạo file BAI1.inp) lường hết các

trường hợp và thu được dữ liệu ra (chương trình tạo file BAI1.OUT)

5.1.4. Ví dụ một số bài tập và bộ test

Bài 1: Cặp số có tích lớn nhất

Cho dãy gồm N số nguyên A1, A2, ... , AN. Hãy tìm cặp số Ai, AJ

(1<=i#j<=N) sao cho tích của chúng là lớn nhất. Ví dụ với dãy số: 3, 4, 1, 2, 3,

9, 1, 3 thì hai số được chọn là 4 và 9 vì tích của chúng 4 x 9 =36 là lớn nhất.

Dữ liệu vào: Từ tệp văn bản BAI1.INP gồm:

+ Dòng đầu tiên ghi số nguyên N (2<=N<=107)

+ Dòng thứ hai ghi N số nguyên, A1, A2, ... , AN. Có giá trị tuyệt đối

không vượt quá 109.

Kết quả: ghi vào tệp văn bản BAI2.OUT một số nguyên duy nhất là tích

lớn nhất tìm được.

Ví dụ:

BAI1.INP BAI2.OUT

8

3 4 1 2 3 9 1 3

36

Khi giải bài này học sinh sẽ nghĩ ngay đến phương án vét cạn là dùng 2

vòng lặp for để xét hết tất cả các cặp số

Max:=lowlongint;

For i:=1 to n do

For j:=1 to n do

If (i<>j) and(a[i]*a[j]>max) then max:=a[i]*a[j];

Tuy nhiên với số lượng phần tử lớn thì cách làm trên không đảm bảo thời

gian. Do đó, không đạt được điểm tối đa, mà đối với bộ test nhỏ học sinh nhập

bằng tay sẽ không phát hiện được vấn đề. Nếu giáo viên tạo bộ test lớn thì khi

chấm bài học sinh sẽ không đạt điểm tối đa từ đó hướng dẫn học sinh tìm cách

giải khác, tối ưu hơn cho bài toán trên.

Page 13: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

11

Để giải bài toán trên thì ta cần tìm tích 2 phần tử lớn nhất, gọi là tích 1, và

tìm tích 2 phần tử bé nhất (để phòng trường hợp là 2 số đều âm, thì tích của

chúng ra số dương nên cũng có thể là lớn nhất) gọi là tích 2, kết quả bài toán

chính là số lớn nhất của tích 1 và tích 2.

Để tìm 2 phần tử lớn nhất thì ta dùng cách sắp xếp 2 phần tử lớn nhất ra

đầu, sau đó để tìm 2 phần tử nhỏ nhất thì ta cũng sắp xếp 2 phần tử nhỏ nhất ra

đầu. Use math;

var a:array[1..100000]of longint;

i,n,t,tich1,tich2,j:longint;

f:text;

begin

assign(f,'BAI1.inp');

reset(f);

readln(f,n);

for i:=1 to n do read(f,a[i]);

close(f);

for i:=1 to 2 do

for j:=i+1 to n-1 do

if a[i]<=a[j] then

begin

t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;

tich1:=a[1]*a[2];

for i:=1 to 2 do

for j:=i+1 to n-1 do

if a[i]>=a[j] then

begin

t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;

tich2:=a[1]*a[2];

assign(f,'BAI1.OUT');

Rewrite(f);

write(f,max(tich1,tich2));

close(f);

readln

end.

Xây dựng bộ test

Khi xây dựng bộ test cần lưu ý đầy đủ các trường hợp

Page 14: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

12

Test có 2 số dương có tích lớn nhất

Test có 2 số âm có tích lớn nhất

Test có số lượng phần tử rất lớn cụ thể là 100000 phần tử

Test BAI1.INP BAI1.OUT

01 5

1 9 3 4 5

45

02 10

1 4 -6 2 -5 5 2 2 -8 2

48

03 …..

04 100000

Bộ test lớn có 100000 phần tử trong

đó có 2 số dương có tích lớn nhất.

(vì số lượng phần tử

nhiều nên tôi không thể

đưa test vào đây)

05 100000

Bộ test lớn có 100000 phần tử trong

đó có 2 số âm có tích lớn nhất.

Đoạn code tạo test lớn: (Tạo test gồm 100000 phần tử nhận giá trị ngẫu

nhiên từ -1000 đến 1000

uses crt;

var n,i:longint;

f:text;

begin

randomize;

assign(f,'BAI1.inp');

rewrite(f);

writeln(f,100000);

for i:=1 to 100000 do

write(f,random(1001)-random(1001),' ');

close(f);

end.

Bài 2: Đoạn con có tổng lớn nhất

Đề bài: Nhập mảng gồm n phần tử (0<n<=1000), các phần tử nhận giá trị số

nguyên (-109<a[i]<109). Tìm đoạn mảng con có tổng lớn nhất

Dữ liệu vào: Từ tệp tin BAI2.INP gồm 2 dòng, dòng 1 là số nguyên n và dòng 2

là n số nguyên

Dữ liệu ra: Vào tệp tin BAI2.OUT Gồm 2 dòng, dòng 1 là tổng lớn nhất, dòng

2 là đoạn con có tổng lớn nhất, nếu có nhiều đoạn con thì xuất đoạn con có chỉ

số đầu nhỏ nhất

Ví dụ:

Page 15: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

13

BAI2.INP BAI2.OUT

7

1 2 -4 3 5 -1 3

10

3 5 -1 3

Giáo viên cần giải bài trên để có code xây dựng bộ test:

var a:array[1..1000]of longint;

n,i,j,d,c,s,max:longint;

f:text;

Begin

Assgin(f,’BAI2.inp’);

Reset(f);

read(f,n);

for i:=1 to n do read(f,a[i]);

close(f);

max:=low(longint);

for i:=1 to n do

begin

s:=a[i];

for j:=i to n do

begin

if i<>j then s:=s+a[j];

if s>max then begin max:=s;d:=i;c:=j;end;

end;

end;

assign(f,’BAI2.OUT’);

rewrite(f);

writeln(f,max);

for i:=d to c do write(f,a[i],' ');

close(f);

end.

Xây dựng bộ test

Khi xây dựng bộ test cần lưu ý đầy đủ các trường hợp

Test có đoạn con là 1 số dương lớn nhất (03)

Test có đoạn con là 1 số âm lớn nhất (04)

Test toàn số dương (05)

Test toàn số âm (04)

Test có số âm và dương (01, 02)

Test có 2 đoạn có tổng bằng nhau(06)

Page 16: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

14

Test BAI2.INP BAI2.OUT

01 7

1 2 -4 3 5 -1 3

10

3 5 -1 3

02 21

1 2 -4 3 5 -1 3 1 2 -4 3 5 -30 3 1 2 -4 3 5 -1 3

17

3 5 -1 3 1 2 -4 3 5

03 13

-8 -9 6 5 4 -8 -9 5 8 7 -100 80 -100

80

80

04 3

-8 -2 -9

-2

-2

05 3

1 2 3

6

1 2 3

06 9

-1 2 3 4 -10 5 2 2 -4

9

2 3 4

Bài 3: Phép cộng không nhớ

Bài tập về nhà của Tý trong môn Toán là phép tính có dạng: N+K=M

Trong đó N và K đã biết và M là số cần tìm. Rất nhanh chóng Tý tìm

được M. Tuy nhiên Tý lại nghĩ đến kết quả sẽ thế nào nếu phép tính N+K là

phép cộng không nhớ, nghĩa là với 2 chữ số a và b thì kết quả của a+b sẽ bị bỏ

đi chữ số hàng chục (nếu có).

Ví dụ: 8+9=7; 3+2=5; 8+3=1

Yêu cầu: Với hai số tự nhiên N và K có cùng số lượng chữ số, hãy tìm M

sao cho N+K=M với phép cộng không nhớ.

Dữ liệu vào: Từ tệp văn bản CONG.INP chứa 2 số N và K cách nhau

bằng 1 dấu cách (N, K 109).

Kết quả: Ghi vào tệp văn bản CONG.OUT số nguyên M.

Ví dụ:

CONG.INP CONG.OUT

612 401 13

896 426 212

111 999 0

Page 17: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

15

Giáo viên cần giải bài trên để có code xây dựng bộ test :

var f,g:text;

N,K,M,x,y:longint;

Begin

assign(f,'CONG.INP'); reset(f);

assign(g,'CONG.OUT'); rewrite(g);

readln(f,N,K); close(f);

M:=0;

while N>0 do

begin

x:=N mod 10;

y:=K mod 10;

M:=M*10+(x+y) mod 10;

K:=K div 10;

N:=N div 10;

end;

N:=0;

While M>0 do

begin

N:=N*10+M mod 10; M:=M div 10;

end;

writeln(g,N);

close(g);

end.

Khi xây dựng bộ test cần lưu ý đầy đủ các trường hợp từ số nhỏ có 1 chữ số đến

số lớn 109

Test BAI3.INP BAI3.OUT

01 1 1 2

02 8 9 7

03 111 999 0

04 545 847 382

05 4237 6236 463

06 64590 38439 92929

07 437587 297535 624012

08 891773 567130 358803

09 96366277 27265630 13521807

10 383441522 477665112 750006634

Page 18: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

16

Đối với bài toán về dãy số có có nhiều phần tử, cần bộ test lớn thì giáo

viên có thể dùng pascal để tạo các thư mục chứa test để tiết kiệm thời gian, xem

ví dụ ở bài 4 dưới đây:

Bài 4: Hộp kẹo thần kỳ

Tý rất thích ăn kẹo thần kỳ không chỉ vì vị ngọt mà kẹo thần kỳ còn tăng sức

mạnh cho Tý.

Tý có N hộp kẹo thần kỳ, các hộp được đánh số từ 1 đến N, hộp thứ i có ai

viên kẹo. Trong N ngày tới, mỗi ngày Tý chỉ được mở một hộp kẹo và ăn hết số

kẹo trong hộp đó. Nếu ngày thứ k Tý ăn hết hộp kẹo có x viên thì sức mạnh của

Tý tăng lên x.10k đơn vị sức mạnh.

Ví dụ: Tý có 3 hộp kẹo, số viên kẹo trong mỗi hộp lần lượt là 4 3 5. Nếu

ngày thứ nhất Tý ăn hết kẹo ở hộp thứ nhất, ngày thứ 2 ăn hết kẹo ở hộp thứ 2,

ngày thứ 3 ăn hết kẹo ở hộp thứ 3 thì tổng sức mạnh mà Tý nhận được là

4.10+3.100+5.1000=5340 đơn vị sức mạnh. Tuy nhiên, nếu ngày thứ nhất Tý ăn

hết kẹo ở hộp thứ 2, ngày thứ 2 ăn hết kẹo ở hộp thứ nhất, ngày thứ 3 ăn hết kẹo

ở hộp thứ 3 thì tổng sức mạnh mà Tý nhận được là 3.10+4.100+5.1000=5430

đơn vị sức mạnh.

Yêu cầu: Hãy cho biết số lượng viên kẹo Tý ăn ở mỗi ngày là bao nhiêu

để tổng sức mạnh tăng lên sau N ngày là lớn nhất?

Dữ liệu vào: Từ tệp văn bản BAI4.INP gồm:

Dòng đầu tiên ghi số nguyên dương N (N103).

Dòng thứ 2 ghi N số nguyên dương, với số thứ i là ai (i = 1..N; ai

104) là số viên kẹo ở hộp thứ i.

Kết quả: Ghi vào tệp văn bản BAI4.OUT gồm N số nguyên, trong đó

số thứ k là số lượng viên kẹo Tý ăn ở ngày thứ k (k = 1..N).

Ví dụ:

BAI4.INP BAI4.OUT

3

4 3 5

3 4 5

Bài này thực chất là sắp xếp mảng theo chiều tăng dần, code dùng để tạo

các thư mục chứa và tệp BAI4.INP như sau:

Chương trình dưới đây dùng để tạo 5 tệp BAI4.INP ngẫu nhiên, mỗi tệp

BAI4.INP trong các thư mục test...gồm 2 dòng: dòng đầu là số lượng phần tử

của dãy số, dòng thứ 2 là giá trị của các phần tử nhận giá trị ngẫu nhiên.

Page 19: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

17

const n:array[0..9] of longint=(10,20,60,100,120);

var t,i:longint;

s:string;

f:text;

begin

randomize;

for t:=0 to 4 do

begin

str(t,s);

s:='test'+s;

mkdir(s);

s:=s+'/BAI4.inp';

assign(f,s);

rewrite(f);

writeln(f,n[t]);

for i:=1 to n[t] do write(f,random(n[t]*10)+1,' ');

close(f);

end;

end.

Ghi chú: Hàm mkdir(s) dùng để tạo thư mục s

Lưu ý: lúc này trong thư mục các test0 đến test4 chỉ chứa các file BAI4.INP

Để tạo file BAI4.OUT ta cần chạy đoạn chương trình sau (đây cũng gần là đáp

án của bài)

var n,i,j,tg,t:longint;

a:array[1..1000] of longint;

f,g:text;

s:string;

begin

for t:=0 to 4 do

begin

str(t,s);

s:='test'+s+’\’;

assign(f,s+'BAI4.INP'); reset(f);

assign(g,s+'BAI4.OUT'); rewrite(g);

readln(f,n);

for i:=1 to n do read(f,a[i]);

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then

begin

tg:=a[i]; a[i]:=a[j]; a[j]:=tg;

end;

for i:=1 to n do write(g,a[i],' ');

close(f); close(g);

end;

end.

Page 20: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

18

Test BAI4.INP BAI4.OUT

0 10

71 65 28 37 9 15 43 39 99 64

9 15 28 37 39 43 64 65 71 99

1 20

176 84 117 164 65 187 22 194 177 99 85

188 2 106 75 79 183 79 88 88

2 22 65 75 79 79 84 85 88 88 99 106 117

164 176 177 183 187 188 194

2 60

367 452 32 227 476 289 292 515 218 79

55 466 115 447 5 232 18 379 471 294 171

580 67 269 509 293 450 528 466 423 462

566 524 431 329 231 461 294 212 180 209

258 389 171 42 362 116 328 98 530 323

58 49 98 584 587 215 481 529 296

5 18 32 42 49 55 58 67 79 98 98 115 116

171 171 180 209 212 215 218 227 231

232 258 269 289 292 293 294 294 296

323 328 329 362 367 379 389 423 431

447 450 452 461 462 466 466 471 476

481 509 515 524 528 529 530 566 580

584 587

3 100

107 786 490 178 304 969 703 852 399 119

162 279 366 120 466 666 674 632 609 899

496 722 654 419 149 510 332 638 925 501

824 960 275 416 781 914 220 210 149 647

176 544 881 661 926 14 514 575 57 373

625 125 40 890 311 216 917 662 436 820

772 668 394 496 274 515 292 804 449 350

20 704 217 556 330 686 672 925 550 205

244 771 58 510 634 340 160 599 375 589

374 858 738 949 772 692 242 931 333 87

14 20 40 57 58 87 107 119 120 125 149

149 160 162 176 178 205 210 216 217

220 242 244 274 275 279 292 304 311

330 332 333 340 350 366 373 374 375

394 399 416 419 436 449 466 490 496

496 501 510 510 514 515 544 550 556

575 589 599 609 625 632 634 638 647

654 661 662 666 668 672 674 686 692

703 704 722 738 771 772 772 781 786

804 820 824 852 858 881 890 899 914

917 925 925 926 931 949 960 969

4 120

650 934 152 129 196 486 93 447 110 401

594 359 1143 869 932 418 777 165 672

113 764 624 6 356 75 515 820 674 449

476 810 943 808 584 1150 872 174 260

164 94 102 1100 577 579 1086 408 1035

528 661 893 1017 240 487 1100 1154 31

200 376 565 894 1133 123 338 497 1116

524 792 521 19 284 408 780 1117 782 137

916 605 841 553 455 113 268 684 212

1118 712 744 862 957 326 477 571 388

980 1051 838 522 322 630 10 502 109 88

314 913 304 605 804 200 385 898 857

1058 15 1144 1021 1107 727 426 130

6 10 15 19 31 75 88 93 94 102 109 110

113 113 123 129 130 137 152 164 165

174 196 200 200 212 240 260 268 284

304 314 322 326 338 356 359 376 385

388 401 408 408 418 426 447 449 455

476 477 486 487 497 502 515 521 522

524 528 553 565 571 577 579 584 594

605 605 624 630 650 661 672 674 684

712 727 744 764 777 780 782 792 804

808 810 820 838 841 857 862 869 872

893 894 898 913 916 932 934 943 957

980 1017 1021 1035 1051 1058 1086

1100 1100 1107 1116 1117 1118 1133

1143 1144 1150 1154

5.2. Về khả năng áp dụng của sáng kiến:

Sáng kiến áp dụng tốt cho giáo viên giảng dạy bộ môn tin học lớp 8 và

dạy về ngôn ngữ lập trình pascal, đặc biệt là cho các giáo viên bồi dưỡng học

sinh giỏi.

Khi áp dụng sáng kiến này thì giáo viên có thể bổ sung thêm cho mình

về một số phương pháp trong dạy học tin học 8 và bồi dưỡng học sinh giỏi môn

tin học 8, 9.

Page 21: ĐỀ CƯƠNG SÁNG KIẾN - c2tqkhai.pgdninhhoa.edu.vn

19

Sáng kiến có thể áp dụng cho tất cả các trường có tham gia thi học sinh

giỏi môn tin học.

6. Các thông tin cần được bảo mật (không)

7. Kết luận.

Với mong muốn nâng cao chất lượng trong việc bồi dưỡng học sinh giỏi

môn tin học. Tôi đã dành thời gian để nghiên cứu, sử dụng phần mềm Themis và

viết ra sáng kiến này nhằm giúp cho công tác bồi dưỡng học sinh giỏi tốt hơn,

các em học sinh thêm yêu thích môn học, có hứng thú khi học tập không còn

thấy môn lập trình là khô khan, khó học.

Với thời gian không nhiều, và năng lực chuyên môn còn hạn chế, sáng

kiến không sao tránh khỏi thiếu sót, tôi mong nhận được sự góp ý chân thành từ

các bạn đồng nghiệp. Mong sao cho sự nghiệp giáo dục của thị xã Ninh Hòa

ngày càng phát triển. Phong trào bồi dưỡng học sinh giỏi các môn nói chung và

môn tin học nói riêng ngày ngày càng tiến bộ.

Xin chân thành cảm ơn!

THỦ TRƯỞNG ĐƠN VỊ

TÁC GIẢ

Trần Minh Thọ