依据程序依赖关系匹配度的C语言程序设计题评分方法
2019-11-30刘悦芳
文/刘悦芳
随着社会科技水平的快速增长,C语言程序设计题自动评分系统也如雨后春笋般层出不穷,现阶段应用最为广泛的C语言程序设计题评分方式有以下三种:
(1)软件质量度量法;
(2)动态分析法;
(3)源程序分析比较法。
相较于前两者而言,源程序分析法在我国应用时间较短,对学生C语言程序设计成绩及知识内容的检测缺乏人性化,因此更需依据程序依赖关系匹配度,对C语言程序设计题评分方式进行不断的完善与改革。
1 C语言程序设计题评分的理论分析
从C语言程序设计题评分源程序语义理解的时间与功能上看,可分为动态评阅及静态评阅两种方式:
1.1 动态评阅法
对无结果考生程序,利用C语言程序设计题系统对其进行模拟以获得模拟结果;对语法错误的考生,可通过动态词法分析及语法分析程序中找出错误所在,同时设计改错算法最大限度的改正考生中错误所在,并使C语言程序以运行的方式保留错误点,基于错误点扣除相应的分数,确保评分结果的全面性及准确性。
1.2 静态评阅法
在C语言程序无法运行或解决不正确的情况下,可利用静态评阅法。对考生C语言程序中语句进行静态检查以获取到评阅信息。同时,C语言程序设计题评分系统可事先在程序设计题的题库中依据考试题目设置相应的关键性语句,通过对考生C语言程序设计题关键语句的核对,给予考生相应的分数。
2 依据程序依赖关系匹配度下C语言程序设计题方法的重点
2.1 对C语言程序设计词法及语法的分析
通过程序依赖关系匹配度,对C语言程序设计题中的词法及语法进行分析。具体而言,C语言程序设计题词法分析主要就是对TOKEN串及错误处理的符号表等进行查填。C语言程序设计题语句分析主要就是对程序中变量声明语句、各函数界限等进行填查符号表。词法及语法中符号表具有变量名、层数、变量类型、变量地址等内容,同时,符号表还具有两个域用表示自定义数据类型名称、变量名称等之间互为依赖的关系。
2.2 绘制C语言程序设计题评分程序系统依赖图
在绘制C语言程序设计题评分程序系统依赖图的过程中,不同应用需选择与之相对应的依赖图定义形式。但就目前来看,无论何种程序系统依赖图,均是从Kuck基础上提出的,因此都具有控制依赖及数据依赖的特征。同时,C语言程序设计题程序系统依赖图绘制期间应构造起数据依赖边算法来获取各种数据依赖边中节点间数据,应用更为先进的数据流分析算法,在控制C语言程序设计题程序系统子依赖图的基础上,选择适应该程序标准化运行操作方式。
2.3 对C语言程序设计程序语义进行标准化转换处理
在C语言程序设计题评分方式进行改进及优化工程中,也应在程序依赖关系匹配度关系下做好C语言程序设计题语义标准化转换处理工作。具体而言,程序标准化主要包括表达式标准化、控制结果标准化、不相关语句标准化、指针变量标准化及结构标准化等。在C语言程序设计题算术表达式中,需控制结果中的符合表达式及结构等语法结构来提升C语言程序设计题评分系统的标准化程度。而标准化转换处理的C语言程序设计题评分系统依赖图可由赋值节点、选择节点经过及循环节点三者构成,最大限度的简化了C语言程序设计题系统依赖图结构,切实提升了C语言程序设计题后期评分工作效率。
2.4 做好C语言程序设计题评分程序匹配工作
依据程序依赖关系匹配度对C语言程序设计题评分方式进行优化时,还应做好相应的程序匹配工作。考生程序与模板程序匹配在智能化评分系统中可最大限度的还原人工评阅流程及结果,同时,C语言程序设计题评分程序标准化后,可显示出使用统一解题方式的考生及模板程序与系统依赖图中的相似之处。举例而言,如果考生C语言程序设计题中系统不完整且存在部分错误时,考生程序系统依赖图也只有一部分与模板程序相同。
在C语言程序设计题评分期间,程度匹配度也是评分的重要标准之一,需对考生程序中动态运行语义、程序规模、程序结构及程序语句知识点等匹配度进行系统匹配,以最大限度的提升C语言程序设计题评分质量。
3 程序依赖关系匹配度的C语言程序设计题评分系统实验研究
在依据程序依赖关匹配度的C语言程序设计题评分系统进行实验研究的过程中,需从以下几方面入手:
(1)收集并完善C语言程序设计题评分系统实验参数数据;
(2)设定C语言程序设计题评分任务,如以某次全国计算机等级考核的C语言程序设计填空为问题的评分为实验对象;
(3)设定C语言程序设计题标准答案,并将标准答案通过语义标准化转换处理成程序系统依赖图。并由程序系统依赖图之间对比实现程序匹配目标,最后对考生答案准确性进行评估。
4 总结
总而言之,依据程序依赖关系匹配度对C语言程序设计题评分方式进行改革与创新的过程中,可利用静态语义理解与动态语义理解相结合的手段,更好的处理考生程序及答案模板程序中语义等价、规模及结构等问题,确保C语言程序设计题评分结果更加人性化,并在接近人工阅卷结果的基础上提升评分效率及质量。