(衡水學院,河北衡水市,053000)王 超
互聯(lián)網(wǎng)技術的出現(xiàn)給以人類社會的發(fā)展帶來了巨大的改變,當前計算機專業(yè)已經(jīng)成為高校的一門熱門專業(yè),深受國家和社會各界的重視,越來越多的學生選擇加入到計算機專業(yè)的學習中。而C語言程序設計則是計算機類專業(yè)諸多課程中的一門基礎性的課程,是計算機的入門課程,于計算機專業(yè)的學生而言有著深遠的意義,且該項課程具有較強的實踐性,教師在教學過程中要注重做實踐課程的課時規(guī)劃,更好地利用起C語言程序設計實踐課程,通過增加學生的編程代碼量來提高學生整體的編程能力。但就目前而言,高校計算機專業(yè)教學中教師所擁有教學資源已經(jīng)無法滿足C語言程序設計實踐課程的根本需求,使得課堂實踐教學工作的開展存在著一定的阻礙,不利于新時期學生實踐能力的有效提升。為了解決這一教學難題,從根本上降低計算機專業(yè)教師工作量,提高高校計算機專業(yè)學生編程能力,高校選擇適用程序設計題在線自動評分系統(tǒng),將其應用到學生上機練習和考試中。
基于Linux的C語言程序設計不僅是大學計算機專業(yè)學生的必修課之一,同時更是計算機專業(yè)學生對計算機相關專業(yè)知識學習的基礎。因此,為了方便教師對學生的學習狀況進行了解,我國許多高校均對其設計了相應的考評。但當前一些高校在對C語言程序設計題進行評閱的過程中仍舊采用傳統(tǒng)的人工評閱方式,這一方式不僅會影響到教師的評閱效率,同時還極易在評閱過程中出現(xiàn)一些人為失誤,從而直接影響到學生的綜合成績。此外,在一些高校中,其教師為了有效提升C語言程序設計的評閱效率也采用了自動評閱的方式對學生的答題進行評閱。而自動評閱中包括靜態(tài)評閱和動態(tài)評閱。其中動態(tài)評閱是指對學生所設計的程序進行測試運行并將其運行結果與正確答案進行比對,從而得出該學生的分數(shù)。而靜態(tài)評閱則是指對學生所設計的程序代碼進行檢測,從而得出該生的分數(shù)。雖然動態(tài)評閱可以促進學生創(chuàng)新性思維的發(fā)展,但其在對學生的程序設計進行評閱過程時卻無法指出該生程序設計中的錯誤,因此學生無法在這一過程中了解到其不足。同時,若學生在程序設計中出現(xiàn)部分錯誤也有可能會因為答案正確而被判定為正確,從而使其評閱過程失去公正性。
在動態(tài)評閱技術中最為常見的便是基于關鍵詞匹配的動態(tài)評閱算法,在這一算法中,首先需要執(zhí)行對源代碼的編譯與運行。由于動態(tài)評閱是依據(jù)學生所設計的程序結果對學生的程序設計的正誤進行判斷的,因此在對學生程序設計進行評閱前,需要對學生所編寫的程序進行測試運行。在這一過程中,首先動態(tài)評閱算法需要利用其中的system函數(shù)調用shell命令對該生所設計的程序進行編譯。在這一過程中,動態(tài)評閱算法不僅僅需要對學生所設計的程序進行初步檢測,同時更需要判斷其是否可以被編譯。其次,動態(tài)評閱算法還需要對已編譯的程序進行模擬運行,從而確定其是否得以運行。為了保障評閱結果的有效性,其在對程序進行測試的過程中不僅僅需要利用多組特征數(shù)值對該程序進行測試,同時還需要將其輸入數(shù)據(jù)以及得出結果依次存儲在input.txt以及result.txt文件中。
動態(tài)評閱算法是一種通過對學生所設計的程序結果進行判定的自動評閱方法,其在對學生程序進行評閱的過程中主要需要經(jīng)歷以下步驟。首先,在動態(tài)評閱算法中含有一個循環(huán)語句,其主要作用是對學生程序結果進行循環(huán)檢測。而在該循環(huán)語句中,動態(tài)評閱算法需要對該生的程序是否能夠被編譯進行檢測,若其可以被編譯則進行下一步檢測,若其無法被編譯則跳出循環(huán)體并輸出程序報錯。其次,在動態(tài)評閱算法中還需要包括一個循環(huán)語句,從而循環(huán)對該生程序是否得以運行進行檢測。若可以運行則將其輸出結果與正確結果進行比對,若結果正確,跳出循環(huán)并輸出正確,若結果錯誤或無法運行則跳出循環(huán)并輸出錯誤。當以上結果出現(xiàn)后則表示動態(tài)評閱結束,輸出結果為該生的測試結果。
在學生所設計的程序運行過程中極有可能會出現(xiàn)關鍵詞有序或關鍵詞無序的現(xiàn)象。在面對關鍵詞有序時,動態(tài)評閱算法首先需要對該結果中的關鍵詞進行比對,從而確定該關鍵詞是否完整以及關鍵詞輸出順序是否與答案一致。若該同學所設計的程序與答案一致,那么動態(tài)評閱程序則輸出正確,若該程序輸出關鍵字不全或關鍵詞輸出順序與答案不一致,那么則輸出錯誤。
在面對輸出關鍵詞無序的情況時,動態(tài)評閱程序首先需要對該程序所輸出的關鍵詞正確率進行檢測,即一次對該程序所輸出的關鍵詞與答案中的關鍵詞進行比對,從而確定其是否正確。其次,動態(tài)評閱程序還需要判定該程序所輸出的關鍵詞是否存在重復現(xiàn)象。在這一過程中,動態(tài)評閱程序需要將已輸入的關鍵詞進行兩兩之間的相互比對,進而防止其出現(xiàn)關鍵詞重復的現(xiàn)象。
在動態(tài)評閱程序運行過程中難免會遇到諸多問題,為了方便維護人員及使用人員對當前動態(tài)評閱程序的運行現(xiàn)狀進行了解,在該程序中也加入了相應的程序錯誤提示語句。例如,當學生在提交程序時出現(xiàn)無法提交的現(xiàn)象時,該程序會輸出問價類型不符等提示語句。而在其無法編譯以及無法運行時也會出現(xiàn)相應的語句提示。最后,若該生所設計的程序難以滿足要求,該程序將會輸出未按題目要求輸出結果的提示,從而方便學生以及教師對其程序運行結果進行了解。
綜上所述,基于Linux的C語言程序設計題的動態(tài)評閱技術探討具有一定的現(xiàn)實意義。本文介紹關于動態(tài)評閱方法的設計已經(jīng)被充分實踐到了C語言程序設計題自動評閱系統(tǒng)中,且在實踐過程中可以發(fā)現(xiàn),評閱系統(tǒng)的評分準確率得到了有效的提升,且完善了系統(tǒng)的錯誤提示功能,使得學生能夠第一時間察覺到程序的錯誤,有助于學生更好地調試程序。