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

主站蜘蛛池模板: 狠狠综合久久| 91九色国产porny| 久久福利片| 免费观看精品视频999| 亚洲Aⅴ无码专区在线观看q| 亚洲免费人成影院| 91蝌蚪视频在线观看| 国产精品所毛片视频| 免费看av在线网站网址| 国产真实二区一区在线亚洲| 亚洲欧洲日韩综合色天使| 色国产视频| 久久婷婷色综合老司机| 国产凹凸视频在线观看| 亚洲综合九九| 99久久精品视香蕉蕉| 国产永久无码观看在线| 国产网友愉拍精品视频| 亚洲永久精品ww47国产| 99国产精品免费观看视频| 日韩高清无码免费| 亚洲人成网址| 99热最新网址| 国产精品丝袜在线| 亚洲二区视频| 亚洲AV无码一区二区三区牲色| 久青草国产高清在线视频| 亚洲最新在线| 欧美亚洲另类在线观看| 国产午夜一级毛片| 亚洲精品在线91| 91网在线| 无码专区第一页| 九色综合伊人久久富二代| 9cao视频精品| 亚洲一区无码在线| 免费人欧美成又黄又爽的视频| 亚洲男人在线天堂| 色悠久久久| 国产精品中文免费福利| 亚洲开心婷婷中文字幕| A级全黄试看30分钟小视频| 2021亚洲精品不卡a| 老司机久久99久久精品播放| 国产性精品| 日韩欧美国产精品| 亚洲男人在线| 91精品情国产情侣高潮对白蜜| 黄色网在线免费观看| 午夜日本永久乱码免费播放片| 91在线精品免费免费播放| 国产网友愉拍精品视频| 国产综合另类小说色区色噜噜| 国产成人精品在线1区| 欧美国产精品拍自| 久久久久国产一级毛片高清板| 亚洲精品第1页| 国产视频自拍一区| 久久精品人妻中文系列| 99这里精品| 亚洲水蜜桃久久综合网站| 婷婷综合在线观看丁香| 九九视频在线免费观看| 91探花在线观看国产最新| 久久人体视频| 精品国产一区91在线| 亚洲综合精品香蕉久久网| 老司国产精品视频91| 天堂网国产| 欧美午夜一区| 亚洲AV无码乱码在线观看代蜜桃| 亚洲a免费| 综合久久久久久久综合网| 国产成人精品免费av| 亚洲一区波多野结衣二区三区| 久久人与动人物A级毛片| 91av成人日本不卡三区| 中文毛片无遮挡播放免费| 91精品国产综合久久香蕉922| 久久免费成人| 亚洲视屏在线观看| 亚洲一区黄色|