国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

自動閱卷系統(tǒng)中編程題的解決方法

2017-01-03 22:26:39周松
中國信息技術教育 2016年23期

周松

摘要:本文對當前自動閱卷系統(tǒng)中編程題的現(xiàn)狀進行了分析,并提出了使用代入法解決完善程序題和使用文件輸出法解決編程題兩種解決方法,同時給出了一些實現(xiàn)細節(jié)。

關鍵詞:自動閱卷;編程題;VBA

中圖分類號:TP311 文獻標識碼:A 論文編號:1674-2117(2016)23-0071-03

現(xiàn)狀和問題

在現(xiàn)代教學中,計算機課程的閱卷系統(tǒng)越來越多,從Office應用到各種高級編程語言都有,不過計算機本身的智能化程度不高,主要是按照事先設定好的程序運行的,所以在批改選擇題時非常有優(yōu)勢,速度快,準確率高,但對主觀程度比較高的,如完善程序,特別是編寫程序,很多閱卷系統(tǒng)還解決得不夠好,而編程題恰恰又是計算機編程語言課程考試的常見題型。

選擇題的實現(xiàn)已經(jīng)非常成熟,本文不再討論。填空、簡答、論述等題型也有了各種解決方法,雖然效果還不是很理想,但技術也是在不斷進步的,這部分也不是本文要討論的。本文以VBA為例,主要討論主觀性很強且會有多種不同答案但結果又都正確的完善程序和編寫程序兩種題型的閱卷方法。

完善程序題

1.一般的解決方法

完善程序題其實是填空題的一種,但里面填寫的是程序的代碼,下面就是一個完善程序的例子。

題目:從大到小輸入3個數(shù),如不符合要求則顯示“輸入不符合要求”,在空白處填入程序代碼完善程序(如圖1)。

一般的閱卷程序都在用枚舉答案的方法,如將可以想到的x > y And y > z和y < x And z < x等答案和學生的答案進行比較,如果相符則判對,否則扣分。但其實這道題目還有很多其他答案也是正確的,如y < x And x > z和x > y And z < x,甚至也會有學生寫成Not x <= y And Not y <= z和Not (x <= y Or y <= z)等答案。枚舉是一種方法,但只適應于答案非常單一的題目,因此建議盡量不使用。下面筆者將介紹一種代入法,將學生的答案代入到閱卷系統(tǒng)中,根據(jù)生成的表達式結果來判定答案是否正確。

2.代入法

代入法就是將學生寫的答案代入到事先編寫好的程序中進行驗證,圖2中的函數(shù)t15就是為上題編寫的驗證函數(shù),其中的參數(shù)x、y、z為輸入的三個數(shù),sExpression為獲得的學生編寫的答案。在t15函數(shù)中的第三行,就是On Error和Exit Function之間是一個空行,學生的代碼將代入到這里。

那么如何在一個程序中動態(tài)地插入一行代碼并運行呢?這里要用到module對象中的ProcStartLine屬性和ReplaceLine方法。ProcStartLine屬性是指返回一個值,該值標識指定的過程的起始行。ReplaceLine方法是指在標準模塊中替換指定行。下面給出代入法的代碼,如圖3。

其中:①score是模塊的名稱。②sExpression = "t15 = " & "Not x <= y And Not x <= y"是將學生的答案存儲在sExpression中。最終sExpression中存放的是“t15 = Not x <= y And Not y <= z”,這樣如果“Not x <= y And Not y <= z”計算正確,則函數(shù)t15返回值為true,否則返回false。③lineNum = md.ProcStartLine("t15", vbext_pk_Proc)+3得到要將sExpression代入到t15函數(shù)的位置。④md.ReplaceLine lineNum, sExpression的功能是進行替換。將sExpression代入到t15函數(shù)中。⑤MsgBox(IIf(t15(5, 4, 3, sExpression), "得分", "不得分"))調(diào)用代入了學生答案的t15函數(shù),得到結果。

3.注意事項

上述代碼中給出的making()過程是一個演示程序,其中的"Not x <= y And Not y<= z"為學生編寫的答案,應該是從學生的答案中提取,而不是像本例中這樣直接寫出來。另外對答案的處理使用了代碼MsgBox(IIf(t15(5, 4, 3, sExpression), "得分", "不得分")),對于結果只是進行了顯示,在實際應用中應該是將結果寫入到學生的成績表中。而且在函數(shù)t15(5, 4, 3, sExpression)中使了5, 4, 3為測試參數(shù),應該按照軟件測試的方法給出測試數(shù)據(jù),多次調(diào)用t15函數(shù)進行驗證。

編程題

編程題是主觀性非常強的題目,每位學生的答案都有可能不一樣,如果根據(jù)學生每句代碼是怎么編寫的給分是不現(xiàn)實的,所以好的解決方法是根據(jù)結果給分。具體方法是將學生的答案寫入到一個文件中,然后閱卷系統(tǒng)讀取該文件中的內(nèi)容,判斷答案是否正確。

將答案寫入文件的代碼如圖4所示,其中"answer.dat"為答案文件名,tAnwser是學生的答案。

在具體實現(xiàn)時可以采用兩種方法,一種是事先為學生搭建好程序的框架,上面的文件輸出代碼寫在最后,要求學生不能修改已有的代碼,完成編碼后需運行代碼。還有一種方法就是利用Module.InsertLines(Line, String)方法將文件輸出代碼插入到學生編寫的代碼的后面來輸出答案。

結論

本文提出了準確評判學生編寫的程序的方法,解決了程序設計上機考試中主觀題評判不夠準確的問題。提供的方法簡單、容易實現(xiàn),大大提高了判卷的準確性。這里還需要特別說明的是,學生編寫的表達式或代碼會有錯誤,所以在代碼中一定要使用on error代碼來對可能的錯誤進行處理,以保證閱卷的順利進行。

嘉禾县| 通辽市| 奇台县| 将乐县| 渝中区| 水富县| 红河县| 万源市| 萝北县| 大城县| 华池县| 凭祥市| 和硕县| 宜兴市| 曲靖市| 龙江县| 福清市| 博湖县| 天台县| 通海县| 阿合奇县| 五大连池市| 阿鲁科尔沁旗| 恩施市| 中卫市| 敖汉旗| 苏尼特右旗| 湘潭县| 定边县| 江永县| 浙江省| 双鸭山市| 迁安市| 布尔津县| 比如县| 崇明县| 新田县| 金塔县| 黄大仙区| 康保县| 武宁县|