999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

程序設計在線作業代碼不規范檢測方法及應用

2018-10-13 09:43:28杜彬賀杰徐陽王林鑫尤楓
教育教學論壇 2018年44期

杜彬 賀杰 徐陽 王林鑫 尤楓

摘要:針對程序初學者編寫的C/C++程序,調試需要消耗大量的時間和精力。然而,初學者在接觸簡單的編程時,編寫思路一般不存在問題,但由于其良好的編程習慣還未養成,代碼格式往往不規范,從而導致程序相應代碼塊出錯。本文結合程序在線評測系統,針對程序設計課程的C/C++程序代碼不規范問題提出了一種基于在正則表達式和編輯距離的檢測方法并通過實驗驗證了不規范的代碼出現錯誤概率較大。

關鍵詞:軟件測試;代碼格式規范;程序在線評測系統

中圖分類號:G623.58 文獻標志碼:A 文章編號:1674-9324(2018)44-0154-02

一、引言

目前國內外的程序自動化調試研究中,在針對特定類型故障、數據結構及內存等方面取得了一定進展,但對由不良程序編程習慣或者編程代碼格式的不規范引起的錯誤類型研究還較少[1]。編程者往往在編程中只注重算法和正確性,卻忽略代碼規范性,消耗了軟件調試過程中大量的時間和成本[2]。本文結合作者所在學校的在線編程評測系統(Online Judge System,OJ)[3,4],分析系統數據庫中答題者提交的程序,針對其中由于代碼塊括號匹配不規范出錯的程序,進行錯誤程度計算,提出一種代碼不規范程度檢測方法。

二、代碼格式規范化的概念

就軟件開發的代碼編寫而言,每個開發者的編程水平、經驗和習慣都大不相同。本文對于程序代碼格式規范化的概念進行簡單梳理,歸納如下:

1.格式一:對齊與縮進。(1)①“{”位置的兩種風格:①“{”和“}”獨占一行,且位于同一列,與引用他們的語句左對齊,便于檢查配對情況;②“{”位于引用他語句之后,“}”與引用他的語句左對齊。(2)位于同一層“{”和“}”之內的代碼相對于引用他們的代碼縮進。(一般用4個空格的tab鍵縮進,不用空格縮進)。

2.格式二:代碼行內空格。(1)關鍵字之后加空格,關鍵字與操作符之間不加空格。(2)采用第一種“{ }”格式的函數名之后不加空格,采用第二種“{ }”格式的函數名之后加空格。(3)賦值、算術、關系、邏輯等二元運算符前后各加一空格,但是一元運算符前后一般不加空格。(4)“( )”中,變量之間緊跟“,”。(5)“,”,“;”后留一個空格。

3.格式三:代碼行。(1)一行只寫一條語句。(2)一行只寫一個變量。(3)每個關鍵字之間要加一個空格隔開。

三、代碼格式不規范化程度檢測方法

本文以OJ平臺學生所提交的所有代碼作為分析源,結合正則表達式及編輯距離的概念,使用Python對數據庫中的代碼計算相應的不規范程度。

1.正則表達式。本文設計的正則表達式如下。

(1)“.*? +”用該模式去掉多余的空格。(2)“[,!=<>\+\-\*\/]+[A-Za-z0-9]+|[A-Za-z0-9]+[,!=<>\+\-\*\/]+”用該模式添加標識符與運算符之間的空格。

2.編輯距離。編輯距離用來度量兩個字符串的相似度?;诰庉嬀嚯x算法進行動態編程,其算法的時間復雜度為O(m*n),空間復雜度為O(m*n),m,n分別表示源字符串S和目標字符串T的長度。編輯距離的動態規劃求解方程組如下所示。

四、實驗驗證

1.代碼格式不規范化錯誤統計及實例。本文針對目前OJ平臺數據庫中提交的135,556份C/C++程序(包含提交結果正確和錯誤的代碼),進行分析統計,計算全部代碼的不規范化程度,結果如圖1顯示。橫軸以規范代碼及不規范代碼之間的編輯距離作為劃分依據,縱軸是屬于此編輯距離的不規范代碼數量。從圖1我們可以發現,OJ平臺數據庫中,只有不到11,000份代碼做到規范化,當然如果把不規范程度在[1—20]之間的代碼看作規范的話,那么也只有不到46,000份代碼是規范的。

為了進一步分析不規范程度對于代碼的正確性影響,我們將OJ平臺數據庫中87,933份錯誤代碼進行單獨分析,圖2顯示了錯誤代碼中不同規范程度的代碼分布情況及占總錯誤代碼的百分比。

我們綜合比較圖1和圖2,可以觀察到,錯誤代碼中不規范代碼的比例與總代碼中不規范代碼的比例成正相關。

五、總結與展望

本文針對C/C++程序代碼不規范問題,提出了一種基于在線編程評測系統(OJ)的代碼規范化檢測方法框架,實驗驗證了該方法能夠有效度量代碼不規范錯誤程度,且代碼不規范是程序錯誤的重要原因。之后的工作,我們將進一步分析程序員的編程習慣,并著眼于Java、C#以及Python等更多程序語言的代碼不規范自動修復問題。

參考文獻:

[1]馬春燕,劉杰,賴文豫.基于變異技術的程序故障自動化修復方法[J].計算機應用研究,2014,31(1):177-181.

[2]王延青,王建政,張麗杰,等.程序設計語言教學中編碼標準的定量評測框架[J].合肥工業大學學報(社會科學版),2008,(6):67-71.

[3]李文新,郭煒.北京大學程序在線評測系統及其應用[J].吉林大學學報:信息科學版,2005,23(2):170-177.

[4]紀洪波.基于jQuery的Web源程序在線評測系統的設計與實現[D].吉林大學,2010.

Abstract:For inexperienced programmers,it costs lots of effort to debug and fix C/C++ program errors. When beginners get in touch with the simple programming problem,the solution methods are always correct. Due to their poor programming experiences and inadequate programming habit,the code formatting is incorrect,which leads to incorrect outputs. Motivated by the prospect of reducing human developer involvement,this paper proposed a detection method,especially for the code segment standardization,and applied this method to detect bugs of incorrect code formatting of C/C++ language programs.

Key words:software testing;code segment standardization;online judge system

主站蜘蛛池模板: 波多野结衣一区二区三视频| 97国产在线视频| 91免费国产高清观看| 亚洲综合国产一区二区三区| 天堂成人av| 欧美色图久久| 欧美第九页| 国产麻豆永久视频| AV在线天堂进入| 九色免费视频| 久久亚洲天堂| 99精品在线看| 国产自视频| 久久精品亚洲热综合一区二区| 国产特一级毛片| 亚洲欧美日韩中文字幕在线| 99999久久久久久亚洲| 欧美日韩国产在线观看一区二区三区 | 成人一级黄色毛片| 欧美国产精品不卡在线观看| 亚洲日韩精品综合在线一区二区| 国产精品亚欧美一区二区三区| 亚洲Aⅴ无码专区在线观看q| 波多野结衣爽到高潮漏水大喷| 久久婷婷人人澡人人爱91| 久久午夜影院| 国产欧美综合在线观看第七页| 国产成人免费| 国产成人三级在线观看视频| 亚洲国内精品自在自线官| 亚洲国产综合精品一区| 国产精品午夜福利麻豆| 欧美国产菊爆免费观看| 四虎在线观看视频高清无码| 亚洲女同一区二区| 青青草91视频| 在线国产毛片手机小视频| 国产经典在线观看一区| 亚洲永久精品ww47国产| 国产综合网站| 精品国产成人高清在线| 国产精品亚洲专区一区| 成人免费一区二区三区| 无码一区二区三区视频在线播放| 亚洲国产天堂久久综合226114| 囯产av无码片毛片一级| 国产偷国产偷在线高清| 五月天久久综合国产一区二区| 久久无码免费束人妻| 国产精品yjizz视频网一二区| 亚洲无码精品在线播放| 国产噜噜噜视频在线观看| 无码在线激情片| julia中文字幕久久亚洲| 亚洲成人免费在线| 欧美区一区| 狠狠亚洲五月天| 91久久精品国产| 九九久久99精品| 中文字幕在线免费看| 嫩草国产在线| 亚洲一级无毛片无码在线免费视频| 天天操精品| 免费又黄又爽又猛大片午夜| 超清无码一区二区三区| 91亚洲国产视频| 久久国产精品电影| 国产原创演绎剧情有字幕的| 国产成人久视频免费| 日韩精品亚洲人旧成在线| 毛片基地视频| 一级毛片免费高清视频| 国产成人精品日本亚洲| 国产精品第三页在线看| 高清久久精品亚洲日韩Av| 九九视频免费在线观看| 亚洲无码在线午夜电影| 亚洲区第一页| 成人免费网站久久久| 亚洲一区二区无码视频| 国产第三区| 国产一区成人|