APP下载

一种面向数组C程序的静态评分方法

2021-11-10舒新峰何孝敏郭芳瑶

西安邮电大学学报 2021年4期
关键词:程序方法

舒新峰,何孝敏,郭芳瑶

(西安邮电大学 计算机学院,陕西 西安 710121)

C语言具备表达能力强、语法简洁紧凑以及执行效率高等特点,已广泛应用于操作系统和控制系统等各类底层软件开发中,是高校信息类专业普遍开设的必修课程。为了提升学生C语言编程能力,许多高校在C语言程序设计课程教学中打破传统的纸质作业和试卷的考核方式,引入“程序自动判定系统”对学生的作业和试卷进行计算机自动判定,通过考核手段改革引导学生强化C语言编写程序能力训练,并取得了良好的教学效果。数组是C语言广泛使用的一种数据类型,操作数组的方法和程序表达方式的多样性,给程序自动评分带来了困难。

栈返回地址保护[1-2]、数据追踪和插入检测代码[3]等动态评分方法可以应用于含有数组的C程序评分,但评测结果单一,只有0分或满分,不能很好地满足教学需要。静态评分方法主要是将源程序转化为系统依赖图[4]、控制流[5]和抽象语法树[6](Abstract Syntax Tree,AST)等中间表示形式,然后通过树或图的匹配算法[7]计算语句相似度进行评分。该方法虽然考虑了程序结构,但现有的中间表示形式不能准确表达程序语义及语句依赖关系,若数组空间大小不同或计算数组下标方式不同,则会导致误判,降低了评分的准确性。文献[8]将数组越界问题转化为下标变量取值的范围分析问题,利用抽象解释技术[9]进行数组越界的判定,但该方法对循环语句中数组的检测结果精度较低。……

登录APP查看全文

猜你喜欢

程序方法
学习方法
试论我国未决羁押程序的立法完善
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
用对方法才能瘦
创卫暗访程序有待改进
四大方法 教你不再“坐以待病”!
赚钱方法
捕鱼