SỞ GD & ĐT NGHỆ AN
TRƯỜNG THPT CỜ ĐỎ
-----*******-----
SÁNG KIẾN KINH NGHIỆM
§Ò tµi:
SỬ DỤNG PHƯƠNG PHÁP SINH TEST ĐỂ KIỂM
THỬ CHƯƠNG TRÌNH LẬP TRÌNH, TRONG DẠY
HỌC VÀ BỒI DƯỠNG HỌC SINH THPT
Bé m«n: Tin häc
Người viết: Hoàng Thanh Hà
Chu Thị Quỳnh Nga
Tổ chuyên môn: Toán tin
Năm thực hiện: 2022
Số điện thoại: 0983 807 246 0373 697 113
Năm học: 2021 - 2022
2
MỤC LỤC
PHẦN I: ĐẶT VẤN ĐỀ ............................................................................................... 1
I. Lý do chọn đề tài ..................................................................................................... 1
II. Mục tiêu và điểm mới của đề tài ........................................................................... 1
III. Đối tượng nghiên cứu và ứng dụng ...................................................................... 1
IV. Phương pháp nghiên cứu ...................................................................................... 2
V. Ý nghĩa và đóng góp của đề tài ............................................................................. 2
PHẦN II: NỘI DUNG NGHIÊN CỨU ....................................................................... 3
I. Cơ sở khoa học ........................................................................................................ 3
II. Giải pháp ................................................................................................................ 3
1. Sinh mảng số nguyên ngẫu nhiên ....................................................................... 3
2. Sinh mảng tỉ lệ 1:1 .............................................................................................. 5
3. Sinh mảng tỉ lệ 1:K ............................................................................................. 9
4. Sinh ngẫu nhiên theo khoảng ........................................................................... 12
5. Sinh ngẫu nhiên tăng ........................................................................................ 12
6. Sinh hoán vị ngẫu nhiên ................................................................................... 13
7. Sinh ngẫu nhiên đều ......................................................................................... 14
8. Sinh ngẫu nhiên tệp cấp số cộng ...................................................................... 16
9. Sinh ngẫu nhiên mảng đối xứng ....................................................................... 17
10. Sinh số độ cao H ............................................................................................. 18
III. Nhận xét kết quả sau khi thực hiện đề tài .......................................................... 19
1. Về năng lực làm bài .......................................................................................... 19
2. Thực nghiệm sư phạm ...................................................................................... 19
3. Đánh giá kết quả thực nghiệm sư phạm ........................................................... 19
PHẦN III. KẾT LUẬN .............................................................................................. 21
I. Về mặt lý thuyết và thực tiễn: ............................................................................... 21
II. Phạm vi áp dụng, hạn chế, hướng phát triển và kiến nghị: ................................. 21
Tài liệu tham khảo: ................................................................................................... 22
1
PHẦN I: ĐẶT VẤN ĐỀ
I. Lý do chọn đề tài
Khi ta vừa đọc nội dung yêu cầu của một bài toán trong tin học, một thuật
giải lập tức nảy sinh trong đầu; giải thuật đó thường được gọi là giải thuật tự nhiên
chúng ta bắt tay vào viết chương trình cho bài toán đó với ngôn ngữ lập trình
mà chúng ta đã lựa chọn. Kết quả thu được khi chạy chương trình với những bộ dữ
liệu đơn giản mà chúng ta tự suy nghĩ để test hoặc sử dụng các bộ test dụ.
Tuy nhiên, kết quả này chỉ tương đối đúng hoặc sai. Để đánh ggiải
thuật sử dụng đã đáp ứng yêu cầu của bài toán hay chưa hoặc lỗi giải thuật hay
kém hiệu quả theo nghĩa chương trình đòi hỏi quá nhiều bộ nhớ, chạy quá lâu hay
sai kết quả thì chúng ta cần những bộ test chuẩn đủ lớn để kiểm tra chương
trình.
Để góp phần vào việc đánh giá chương trình cài đặt với những bộ dữ liệu đủ
lớn chúng tôi SỬ DỤNG PHƯƠNG PHÁP SINH TEST ĐỂ KIỂM THỬ
CHƯƠNG TRÌNH LẬP TRÌNH TRONG DẠY HỌC BỒI DƯỠNG HỌC
SINH THPT đó là lý do chúng tôi chọn đề tài này.
II. Mục tiêu và điểm mới của đề tài
1. Mục tiêu của đề tài
- Tạo ra nguồn tài liệu tham khảo cho giáo viên giảng dạy bộ môn tin học về
phương pháp tạo test để kiểm thử chương trình;
- Góp phần nâng cao kết quả kết quả học tập dạy học của giáo viên học
sinh;
- Giúp giáo viên, học sinh tự đánh giá các chương trình mình viết, tạo hưng
phấn trong lập trình, tìm ra được giải thuật tối ưu, đáp ứng yêu cầu bài toán.
2. Điểm mới của đề tài
- Khác với một số phần mềm miễn ptrên mạng internet hiện nay như
Tiện ích sinh test tự động cho phần mềm chấm điểm tự động Themis của
thầy giáo Nguyễn Sơn khi muốn tạo test cần phải code chuẩn. Còn đtài
của tôi đưa ra là chưa có code chuẩn.
- Tạo ra những bộ test đủ lớn mang tính ngẫu nhiên khi chưa hoặc
không cần chương trình mẫu (code chuẩn); qua đó giúp giáo viên, học sinh tự đánh
giá các chương trình mình viết, tạo hưng phấn trong lập trình, tìm ra được giải
thuật tối ưu, đáp ứng yêu cầu bài toán.
III. Đối tượng nghiên cứu và ứng dụng
1. Đối tượng nghiên cứu
- Giáo viên giảng dạy môn Tin học, học sinh muốn nâng cao kỹ năng về
2
chuyên đề lập trình;
- Học sinh được tuyển chọn chuẩn bị cho kỳ thi học sinh giỏi tham gia các
kỳ thi cao hơn.
2. Ứng dụng
- Tạo test cho các bải toán lập trình khi chưa có bộ test và chương trình nguồn
chuẩn để tạo test;
- Tạo b test cho phần mềm chấm bài tự động Themis qua đó chỉnh sửa
chương trình, đánh giá thuật toán.
IV. Phương pháp nghiên cứu
- Nghiên cứu lý luận và thực nghiệm;
- Nghiên cư
u cac da
ng bài toán trong quá trình dạy học bồi dưỡng về lập
trình;
- Tự đánh giá thuật toán và kỹ thuật lập trình.
V. Ý nghĩa và đóng góp của đề tài
- Tạo test để đánh giá code khi chưa có code chuẩn để sinh test;
- Phát triển tư duy lập trình;
- Tối ưu trong cài đặt thuật toán;
- Căn cứ để đánh giá, lựa chọn thuật toán.
3
PHẦN II: NỘI DUNG NGHIÊN CỨU
I. Cơ sở khoa học
1. Cơ sở lý luận
Để kiểm tra tính đúng đắn của thuật toán, chương trình cũng như các kỹ
thuật trong lập trình tchúng ta cần phải có các bộ test đủ lớn, rồi thông qua các
phần mềm chấm bài tự động như Chương trình chấm bài tự động Themis” của
TS Lê Minh Hoàng để đánh giá, chấm điểm.
Việc kiểm tra đánh giá được chương trình mình viết đã đạt đến mức độ nào
về mặt tối ưu về thuật toán, cần kiểm thử chương trình bằng btest đủ lớn mang
tính ngẫu nhiên mà vẫn đảm bảo độ chính xác cao.
2. Cơ sở thực tiễn (thực trạng)
Trong thực tế trên mạng internet đã một số phần mềm tiện ích miễn phí
để sinh test tđộng nTiện ích sinh test tự động cho phần mềm chấm điểm tự
động Themis” của thầy giáo Nguyễn Sơn. Tuy nhiên theo bản thân tôi tìm hiểu
để sử dụng phần mềm tiện ích này chúng ta cần phải code chuẩn. Từ thực trạng
này tôi đưa ra giải pháp tạo ra những bộ test đlớn mang tính ngẫu nhiên khi
chưa có hoặc không cần chương trình mẫu (code chuẩn);
II. Giải pháp
Nội dung chính của sáng kiến trình bày 10 phương pháp sinh ngẫu nhiên
ứng dụng tạo test cho một số bài toán cụ thể từ mức đđơn giản đến phức tạp hơn
như sau:
1. Sinh mảng số nguyên ngẫu nhiên
1.1. Bài toán:
Sinh ngẫu nhiên N số nguyên dương cho mảng A.
Ý tưởng thuật toán:
Tạo mảng gồm N số nguyên dương, trong Pascal hàm random(k) sinh một
số kiểu nguyên nằm trong đoạn từ 0 đến k-1.