HỆ THỐNG CÁC BÀI TẬP THỰC NGHIỆM

Một phần của tài liệu 28037_1712202001917475LVNGUYENTHANHLEN (Trang 54)

6. Mục đích và ý nghĩa của đề tài

3.2. HỆ THỐNG CÁC BÀI TẬP THỰC NGHIỆM

3.2.1. Bài toán đấu giá

Đấu giá: Sở giao thông Hà Nội quyết định bán đấu giá các biển số xe đẹp để

lấy tiền ủng hộ đồng bào lũ lụt miền Trung. Một biển số xe được gọi là đẹp nếu nó thỏa mãn các điều kiện sau[6]:

- Là một số nguyên dương T mà A ≤ T ≤ B trong đó A, B là hai số nguyên dương cho trước;

- T là một số nguyên tố;

- T là một số đối xứng (đọc T từ trái qua phải thu được kết quả giống như đọc T từ phải qua trái). Ví dụ 12321 là một số đối xứng.

Yêu cầu: Cho hai số nguyên dương A và B, hãy tìm số lượng các biển số xe

Input: Vào từ file văn bản AUCTION.INP gồm 1 dòng chứa hai số nguyên

dương A và B (104≤A<B<105).

Output: Đưa ra file văn bản AUCTION.OUT một số nguyên là số lượng biển

số xe đẹp tìm được. Ví dụ: AUCTION.INP AUCTION.OUT 11111 22222 23 Xây dựng code bằng C++ : #include <bits/stdc++.h> using namespace std; ifstream fi ("AUCTION.INP"); ofstream fo ("AUCTION.OUT"); bool prime(int x){

if(x<2) return false;

for(int i=2;i*i<=x;i++) if(x%i==0) return false; return true; } bool dx(int x){ char st[10]; itoa(x,st,10); int t=strlen(st);

for(int i=0;i<t/2;i++) if(st[i]!=st[t-i-1]) return false; return true; } main(){ int a,b; fi>>a>>b; int d=0;

for(int i=a;i<=b;i++) if(prime(i)&&dx(i)) d++; fo<<d;

fi.close(); fo.close();

Xây dựng bộ test: Trong bài này có 5 bộ test, mỗi bộ test gồm 2 file: AUTION.INP

và AUTION.OUT được đặt chung trong một thư mục như sau:

Hình 3.9. Xây dựng bộ test bài toán đấu giá

Trên đây là một ví dụ về bộ test thứ 3 trong 5 bộ test

3.2.2. Bài toán xóa số

Xóa số (DEL): Cho dãy số nguyên không âm . Người ta tiến hành chọn ra 2 chỉ số sao cho và xóa khỏi dãy 2 số để tổng giá trị các số còn lại trong dãy là số chẵn[6].

Yêu cầu: Cho dãy số . Hãy đếm số lượng cách chọn 2 chỉ số thỏa mãn. Hai cách chọn khác nhau nếu tồn tại một chỉ số khác nhau.

Dữ liệu: Vào từ file văn bản DEL.INP:

- Dòng 1: chứa số nguyên n ≤ 105

- Dòng 2: chứa số nguyên không âm

Kết quả: Đưa ra file văn bản DEL.OUT một số nguyên là số cách chọn 2 chỉ

Ví dụ: DEL.INP DEL.OUT 5 1 2 3 4 5 6 Chú ý: Có 50% số test có . - all số chẵn: C2 n - all lẻ: o n lẻ = 0 o n chẵn: C2 n - A: số lượng số chẵn, B: số lượng số lẻ o B lẻ: lấy 1 chẵn x 1 lẻ  A x B o B chẵn: C2 A x C2 B Xây dựng code bằng C++ : #include <iostream> #include <fstream> using namespace std;

long long n, a[1000001];

void Docfile(char *Filename) {

ifstream f (Filename); f>>n;

for(long long i=1;i<=n;i++) f>>a[i]; f.close();

void Ghifile(long long s, char *Filename) { ofstream f (Filename); f<<s; f.close(); } main() { Docfile("Del.inp"); long long s, A=0,B=0; for(long long i=1;i<=n;i++) if(a[i]%2==0) A++; else B++; if(A==n) s = (n-1)*n/2; else if(B==n) { if(B%2==1) s = 0; else s = (n-1)*n/2; } else {

if(B%2==1) s = A*B; else s = (A-1)*A/2 + (B-1)*B/2; }

cout<<A*(A-1)/2<<" "<<B*(B-1)/2; Ghifile(s,"Del.out");

}

Xây dựng bộ test: Trong bài này có 5 bộ test, mỗi bộ test gồm 2 file: DEL.INP và

Hình 3.10. Xây dựng bộ test bài toán xóa số

Trên đây là một ví dụ về bộ test thứ 1 trong 5 bộ test

3.2.3. Bài toán gà, thỏ

Gà, thỏ (GATHO): Viết chương trình để tìm lời giải cho bài toán sau[5]:

Trong giỏ vừa thỏ vừa gà, N cái cẳng, M cái đầu. Hỏi có mấy gà, mấy thỏ?

- Input: hai số nguyên dương m và n là tổng số đầu gà+thỏ và tổng số chân

gà+thỏ (0 ≤ m, n ≤ 106).

- Output: x và y là số lượng gà và thỏ.

INPUT OUTPUT

m n x y

Nếu không có đáp án thì OUTPUT -1. Ví dụ:

GATHO.INP GATHO.OUT

43 100 36 7

GATHO.INP GATHO.OUT

Xây dựng code bằng C++ : #include <fstream> #include <iostream> using namespace std; long SoGaTho,SoDauGaTho; void Tim() { long ga,tho; ofstream f ("gatho.out"); int dapan=0; for(ga=1;ga<=SoGaTho;ga++) { tho = SoGaTho-ga; if(2*ga+4*tho==SoDauGaTho) { f<<ga<<" "<<tho<<endl; dapan++; } } if(dapan==0) f<<-1; f.close(); } main() { ifstream f ("gatho.inp"); f>>SoGaTho>>SoDauGaTho; f.close(); Tim(); }

Xây dựng bộ test: Trong bài này có 10 bộ test, mỗi bộ test gồm 2 file: gatho.INP

và gatho.OUT được đặt chung trong một thư mục như sau:

Hình 3.11. Xây dựng bộ test bài toán gà, thỏ

Trên đây là một ví dụ về bộ test thứ 7 trong 10 bộ test

3.2.4. Bài toán tổng hai số lớn

Tổng của hai số lớn (LONGSUM): Cho hai số nguyên không âm M và N.

Tính tổng của chúng. Giới hạn: 0≤M,N<10200 , thời gian 1 giây [5].

INPUT: Dữ liệu vào từ tập tin longsum.inp. Dòng đầu tiên chứa số M ,

dòng thứ hai chứa số N.

OUTPUT: Dữ liệu ra xuất kết quả ra tập tin longsum.out. Đưa ra tổng của

hai số. Ví dụ: LONGSUM.INP LONGSUM.OUT 12 23 35 LONGSUM.INP LONGSUM.OUT 12345678901234567890123456789 1111111111111111111111111111 13456790012345679001234567900

Xây dựng code bằng C++ :

#include <string> #include <iostream> #include <fstream> using namespace std;

string Tong(string s1, string s2) { string s=""; int n1 = s1.size(); int n2 = s2.size(); int Max; if(n1>n2) { Max = n1; int k = n1-n2; for(int i=1;i<=k;i++) s2="0"+s2; } else { Max = n2; int k = n2-n1; for(int i=1;i<=k;i++) s1="0"+s1; } //Tinh tong int nho=0; for(int i=Max-1;i>=0;i--) { int a=s1[i]-48; int b=s2[i]-48;

int c=a+b+nho; int tong=c%10; s = char(tong+48) + s; nho = c/10; } if(nho>0) s = char(nho+48) + s; while(s[0]=='0') s.erase(0,1); if(s=="")return "0"; return s; } main() {

ifstream fin ("longsum.inp"); ofstream fo ("longsum.out"); string s1,s2; fin>>s1>>s2; string s = Tong(s1,s2); fo<<s; fin.close(); fo.close(); }

Xây dựng bộ test: Trong bài này có 10 bộ test, mỗi bộ test gồm 2 file: LONGSUM.INP và LONGSUM.OUT được đặt chung trong một thư mục như sau:

Hình 3.12. Xây dựng bộ test bài toán tổng hai số lớn

Trên đây là một ví dụ về bộ test thứ 8 trong 10 bộ test

3.2.5. Bài toán trộn hai dãy số

Trộn hai dãy số (MERGEARR): Cho 2 dãy số nguyên đã được sắp theo thứ

tự không giảm [6]:

Dãy A gồm m phần tử: a1, a2,...,am, dãy B có n phần tử: b1, b2,..., bn.

Hãy trộn hai dãy A, B thành dãy C sao cho dãy C cũng có thứ tự không giảm.

Input:

- Dòng đầu ghi 2 số nguyên dương: m và n (m, n < 5x105). - Dòng thứ hai ghi m số nguyên a1, a2,...,am (ai<1018). - Dòng thứ ba ghi n số nguyên b1, b2,...,bn (bi<1018).

Output:

- Dòng đầu ghi số nguyên K là độ dài của dãy C. - Dòng thứ hai ghi K số nguyên c1, c2,...,ck. Ví dụ: MERGEARR.INP MERGEARR.OUT 5 3 2 2 3 7 8 5 10 15 8 2 2 3 5 7 8 10 15

Xây dựng code:

#include <iostream> #include <fstream>

using namespace std;

void Tron(long m,long long A[],long n,long long B[],long &l,long long C[]) {

long i=1,j=1,k=0;

while((i<=m)&&(j<=n)) {

k++;

if(A[i]<B[j]) { C[k]=A[i]; i++;} else { C[k]=B[j]; j++;

} }

if(i>m) //A het truoc { while(j<=n) { k++; C[k]=B[j]; j++; } }

else //B het truoc {

while(i<=m) {

k++; C[k]=A[i];

i++; } } l=n+m; } long m,n,k;

long long A[1000001],B[1000001],C[2000001];

void Docfile(char *Filename) {

ifstream fi (Filename); fi>>m>>n;

for(long i=1;i<=m;i++) fi>>A[i]; for(long i=1;i<=n;i++) fi>>B[i]; fi.close();

}

void Ghifile(char *Filename) {

ofstream fo (Filename); fo<<k<<endl;

for(long i=1;i<=k;i++) fo<<C[i]<<" "; fo.close();

}

main() {

Tron(m,A,n,B,k,C); Ghifile("MergeArr.out"); }

Xây dựng bộ test: Trong bài này có 10 bộ test, mỗi bộ test gồm 2 file:

MERGEARR.INP và MERGEARR.OUT được đặt chung trong một thư mục như sau:

Hình 3.13. Xây dựng bộ test bài toán trộn hai dãy số

Trên đây là một ví dụ về bộ test thứ 3 trong 10 bộ test

3.3. ĐÁNH GIÁ KẾT QUẢ TRIỂN KHAI

Việc triển khai hệ thống chấm bài tự động hỗ trợ dạy học đã giúp chúng tôi giảm bớt rất nhiều thời gian và công sức trong hướng dẫn thực hành và quá trình đánh giá học tập của học sinh [5].

Để đánh giá thêm về điểm mạnh và điểm yếu khi triển khai hệ thống nộp và chấm bài tự động, chúng tôi thực hiện khảo sát với 50 học sinh của lớp 11B1, 11B2, 11B3 tại trường THPT Phạm Kiệt Sơn Hà – Quảng Ngãi. Đây là các nhóm lớp tham gia học bộ môn tin học trong nhà trường sử dụng ngôn ngữ lập trình C++ để viết code giải các bài tập tin học. Với mục đích đánh giá tính hiệu quả và mức độ hài lòng của người học đối với tính hiệu quả của hệ thống nộp và chấm bài tự động, sự cải thiện các kỹ năng lập trình của các em học sinh. Bảng 1 thể hiện 07 vấn đề mà

chúng tôi quan tâm, mỗi bộ câu hỏi có 3 đáp án với 3 cấp độ hài lòng của người học được đưa ra cho việc điều tra khảo sát: Đồng ý, không có ý kiến, không đồng ý.

Bảng 1. Bộ tiêu chí đánh giá khóa học và hệ thống hỗ trợ dạy học lập trình

Hình 3.14. Phản hồi của học sinh

được từ Hình 3.14 cho thấy đa số học sinh rất hài lòng. Mức cao nhất là "Đồng ý" ở phần lớn các tiêu chí. Tuy nhiên, ở các câu 2 và 6, tỷ lệ chọn "Đồng ý" vẫn còn thấp bên cạnh đó tỷ lệ chọn “Không có ý kiến” còn cao đã cho thấy hệ thống còn vài vấn đề hạn chế. Để hệ thống hỗ trợ tối đa việc dạy và học lập trình môn tin học trong nhà trường, chúng tôi tiến hành phỏng vấn một số học sinh bằng cách đưa ra một số câu hỏi như: “ Hệ thống còn những vấn đề gì các em chưa hài lòng ?”, “Em có giải pháp, yêu cầu nào cần cho hệ thống không ?”. Một vài học sinh trả lời: “Hệ thống chấm bài quá nghiêm túc; bài làm đúng quy trình, đúng thuật toán tuy nhiên chỉ cần thiếu sót nhỏ thì bài làm sẽ không đạt điểm”. Vài học sinh khác cho rằng: “Nguồn bài tập khá nhiều nhưng chưa đủ lớn; Những lúc chúng em từ tìm bài tập và tự làm thì hệ thống không chấm điểm được”. Qua đó chúng tôi nhận thấy hệ thống cần có thêm giải pháp để điều chỉnh lại cho phù hợp như: Cấu hình lại bộ dịch, xây dựng hệ thống dữ liệu, bổ sung nguồn bài tập phong phú hơn để hệ thống thực thi một cách tối ưu nhất .

Nhìn chung, bên cạnh những vấn đề nhỏ cần điều chỉnh, hệ thống đã ứng dụng rất tốt. Các đánh giá của học sinh cung cấp một phản ánh tích cực nói chung đối với phương pháp luyện tập về kỹ năng học môn tin học của chúng tôi. Đồng thời, học lập trình môn tin học qua hệ thống giúp học sinh hứng thú, chủ động, sáng tạo từ đó kết quả học tập tốt hơn rất nhiều.

KẾT LUẬN

Việc xây dựng hệ thống chấm bài tự động hỗ trợ dạy học môn tin học THPT là điều cần thiết, nhằm nâng cao chất lượng dạy và học, đồng thời tạo hứng thú cho học sinh trong quá trình học tập, luyện tập. Kết quả phản hồi từ phía học sinh cho thấy một số kết quả tích cực mặc dù vẫn còn nhiều vấn đề chúng tôi cần phải điều chỉnh, bổ sung để chất lượng đào tạo ngày càng được nâng cao hơn, đặc biệt là hệ thống bài tập và rà soát lại quy trình kiểm tra, đánh giá.

1. Các kết quả đạt được

- Xây dựng được hệ thống nộp và chấm bài tự động hỗ trợ việc dạy và học môn tin học tại các trường THPT đạt hiệu quả.

- Hệ thống chạy được trên Website.

- Xây dựng được CSDL bài tập khá phong phú hỗ trợ dạy học. - Hệ thống triển khai được trên mạng internet.

2. Hạn chế của đề tài

- Hệ thống cần tạo thêm cơ sở dữ liệu chứa nhiều bài tập để học sinh có thể tự học, luyện thi với nhiều bài tập phong phú.

- Để hệ thống triển khai được trên môi trường mạng internet, cần một vài thủ tục đăng kí liên quan đến chính sách của cơ quan đơn vị và một số giải pháp an ninh cho hệ thống nên hệ thống chưa triển khai trên mạng internet.

3. Hướng phát triển

Chúng tôi sẽ tiếp tục nghiên cứu để xây dựng CSDL đủ lớn bổ sung nguồn bài tập phong phú hơn. Tiếp tục tham mưu để hệ thống hoạt động được trên môi trường mạng internet, tổ chức các kỳ thi online, tạo diễn đàn trao đổi học thuật... Đó là hướng phát triển của chúng tôi trong tương lai.

TÀI LIỆU THAM KHẢO

[1]. Nguyễn Thế Phúc. (2014), "Phương pháp dạy học phát hiện và giải quyết vấn đề".

[2]. Lưu Minh Phúc. (2015), "LEAS – MÔ HÌNH CHẤM ĐIỂM TỰ ĐỘNG MÃ CODE LẬP TRÌNH C VÀ C++", Báo cáo nghiên cứu khoa học.

[3]. Trần Minh Thành. (2013), "Giáo trình phân tích thiết kế hệ thống thông tin". [4]. thachpham.com, truy cập ngày-10//7/2016, tại trang web:

https://thachpham.com/thu-thuat/cai-dat-localhost-xampp.html.

[5]. Phạm Anh Phương. (2016), "Một giải pháp xây dựng hệ thống chấm bài tự động hỗ trợ dạy học lập trình", Tạp chí Khoa học & Giáo dục Trường Đại học Sư phạm, ĐHĐN.

[6]. Ban tổ chức kì thi. (2010), Tuyển tập đề thi Olympic 30 tháng 4 lần thứ XV, XVI, XVII môn Tin học Nhà xuất bản Đại học Sư phạm.

[7]. Lê Minh Hoàng. (2002), "Giải thuật và lập trình", Đại hoc Sư phạm Hà Nội. [8]. Microsoft Process Class (System.Diagnostics), truy cập ngày- 08/9/2016, tại

trang web:

https://msdn.microsoft.com/enus/library/system.diagnostics.process(v=vs.110).aspx

[9]. Lê Minh Hoàng; Đỗ Đức Đông, " Phần mềm chấm bài tự động Themis".

[10]. Pham Văn Thảo. (2013), "Phương pháp đồ thị và ứng dụng trong dạy học tin học THPT", Luận văn thạc sỹ kỹ thuật, ĐHĐN

[11]. https://sourceforge.net

S6: 96'/QD-DHSP !Ja Nfmg, ngay 09 thang OLnam 2017

QUYETDTNH

Y� vi�c giao d� tai va trach nhi�m hu·6'ng dfin lu�n van th�c si HitU TIUJ'ONG TRUONG D�I HQC SU PH�M

Can ct'.r Nghj dtnh sf) 32/CP ngay 04 thang 4 nam 1994 cua Chinh phu v€ vi¢c thanh l?p D�i h9c Da N�ng;

Can ctr Thong tu s6 08/2014/TT-BGDDT ngay 20/3/2014 .cua B(> GD&DT v€ vi¢c ban hanh Quy chS t6 chfrc va ho�t d(>ng cua d�i h9c vung va cac CO' SC1 giao d\}C d�i h9c thanh vien;

Can cfr QuySt dtnh s6 6950/QD-DHDN ngay 01/12/2014 cua Giam d6c D�i h9c Da N�ng ban hanh Quy djnh nhi¢m V\l, quy€n h�n cua D<;1i h9c Da N�ng, cac ca sa giao d\lC d�i hQC thanh Vien Va CclC dan V! tnJC thUQC;

Can cfr Thong tu s6 15/2014/TT-BGDDT ngay 15/5/2014 cua BQ Giao d\lc va Dao t�o ve vi�c ban hanh Quy chS Dao t<;10 trinh d(> th<;1c si;

Can cfr Quy€t dtnh s6 3160/QD-DHDN ngay 22/6/2015 cua Giam dfJc D<;1i h9c Da Ning v€ vi¢c cong nh?n h9c vien cao h9c trung tuy�n;

Can cfr Quy€t djnh 1060/QD-DHSP ngay O 1/11/2016 cua Hi¢u trucrng Trucmg D�i h9c Su plwm- DHDN v� vi¢c ban hanh Quy djnh dao t�o trinh d(> th�c si;

Xet dc3 nghi cua 6ng Tru6·ng Phong Dao t<;10,

QUYETDTNH:

flifu 1: Giao cho h9c vien Nguy�n Thanh Len, chuyen nganh H¢ thfJng thong tin, kh6a 31 thµc hi¢n d€ tai lu�n van Xay dlfng Hi th6ng chdm iliim tic i19ng h6 tr9· luy¢n thi h9c sinh gioi tin h9c THPT, du&i s\r hu6ng dan cua PGS. TSKH. Trim Qu6c Chiin,

Truong Dq.i h9c Sic phqm- Dq.i h9c Da N&ng,·

Bi�u 2: 1-lQC vien cao h9c va nguai hu6ng dftn c6 ten a Di€u 1 duqc hucrng cac quy�n IQ'i va thvc hi�n nhi�m V\l dung theo Quy ch€ dao t<;10 trinh d(> th<;lc si do B9 Giao d\!C va t)ao tz.io ban hanh va Quy dtnh \I� (laO t<;10 trlnh d(> tlwc si cua D<;1i h9c Da Ning;

Di�u 3: Cac ong (ba) Tru&ng phong T6 chfrc - Hanh chinh, Bao t<;10, K€ ho�ch -Tai chinh, cac Khoa hG'u quan, nguai hu6ng d§n lu�n van va h9c vien c6 ten tren can CU' Quy�t dtnh thi hanh. ,v

HitU TRU'ONG

No'i n!i{in:

- 1Vfnl' !Ji,iu 3.

,... "?

BIEN BAN

HQP H<)I DONG CHAM LU� VAN T�C Si

1. Ten dS tai: Xay dvng H¢ th<5ng chdm aidm t7! d(mg h6 tr<;! luy¢n thi h9c sinh gioi tin h9c THPT

2. Chuyen nganh: H� thf>ng thong tin

3. Theo QuySt dinh thanh J�p H<)i d6ng chfun Ju� van tJwc si s6 719 /QD-DHSP ngay 07/7/2017

4. Ngay h9p H9i d6ng: ngay 30 thcing 7 nam 2017

5. Danh sach cac thanh vien H9i d6ng:

STT HQ vA TEN CUONG VJ TRONG H(>I DONG

1. TS. Nguy�n Quang Thanh Chu tich H<)i d6ng

2. TS. Huynh Cong Phap Thu ky H<)i d6ng

Một phần của tài liệu 28037_1712202001917475LVNGUYENTHANHLEN (Trang 54)

Tải bản đầy đủ (PDF)

(80 trang)