程序设计语言编程题自动评分的方法技术

技术编号:2864631 阅读:229 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种用于C、Pascal、Fortran、Basic程序设计语言编程题自动评分的方法。步骤:输入学生编写的程序(S)及标准答案集;将程序(S)和标准答案(Ti)进行各自高级语言的词法、语法分析,生成系统依赖图(G↓[s])、(G↓[t,i]);对(G↓[s])、(G↓[t,i])进行规范化处理;将(G↓[s])、(G↓[t,i])中的表达式用语法树表示,消除(G↓[s])、(G↓[t,i])中的代码多样化表示形式;对(G↓[s])、(G↓[t,i])的处理结果从程序的规模、结构、深度及知识应用四个层次进行匹配;按照评分标准给出学生编写的程序一次匹配的得分(108),从(S)和(Ti)的所有匹配结果中选择一个最高分作为学生成绩最终得分(110)。本发明专利技术所述的自动评分方法对学生编写的程序中各种评分因素考虑的比较全面,因此,相对人工评分来说它的评分精度较高。

【技术实现步骤摘要】

本专利技术属于程序编写验证领域,它具体涉及一种用于C、Pascal、Fortran、Basic。
技术介绍
远程教育的发展以及计算机基础知识的普及使得程序设计语言考试中编程题的自动评分成为一种迫切的需要。目前程序设计语言考试中编程题的自动评分方法的切入点各不相同,但共同的缺点是处理的深度比较浅,主要使用编译技术对学生编写的程序进行语法分析,检测出学生编写的程序中的语法错误,根据语法错误进行评分,由于语法错误只能反映出学生编写程序中语法的正确性,而不能体现出学生编写的程序语义、知识及概念应用的正确性,因此,根据语法检测进行评分的评分结果不能如实反映学生编写的程序的正确性。
技术实现思路
本专利技术的目的是提供一种能够全面、综合分析、评判学生编写的计算机程序正确性的方法,以克服现有技术只能检测学生编写的程序中语法错误的局限性缺陷。本专利技术的技术方案如下一种,它通过以下步骤实现向计算机输入学生编写的程序S及这个题目的标准答案集T101;从标准答案集T中选择未匹配的标准答案Ti102;将程序S和标准答案Ti进行各自高级语言的词法、语法分析,利用分析结果分别生成系统依赖图Gs、系统依赖图Gt,i103;对系统依赖图Gs、系统依赖图Gt,i进行规范化处理104;进行系统依赖图Gs相应高级语言的语法检测,将系统依赖图Gs、系统依赖图Gt,i中的表达式用语法树表示105;标准化系统依赖图Gs、系统依赖图Gt,i的表达式,并消除系统依赖图Gs、系统依赖图Gt,i中的代码多样化表示形式106;对系统依赖图Gs、系统依赖图Gt,i的处理结果从程序的规模、结构、深度及知识应用四个层次进行匹配107;按照评分标准给出学生编写的程序一次匹配的得分108,判断是否标准答案集T中所有标准答案全都匹配并评分结束109;结果为否,则返回步骤102;判断结果为是,则从程序S和标准答案Ti的所有匹配结果中选择一个最高分作为学生成绩最终得分110;最后编程题自动评分结束111。本专利技术首先对中间表示后的学生编写的程序进行语法分析,从而获得学生编写的程序的语法错误信息,然后将学生编写的程序和标准答案进行标准化,从程序的规模、结构、深度及知识应用四个层次匹配学生编写的程序和标准答案,进而得到学生编写的程序在语义、知识概念应用方面的信息,本专利技术所述的自动评分方法对学生编写的程序中各种评分因素考虑的比较全面,因此,相对人工评分来说它的评分精度较高,而且进行编程题的自动评分,一方面可以推广具有实际意义的程序设计语言网络自动化考试,促进了计算机知识的普及,并且将教师从繁重的阅卷工作中解脱出来,另一方面,编程题自动评分的结果比较客观,消除了阅卷过程中人为因素的影响。附图说明图1是本专利技术编程题自动评分方法的流程图,图2是本专利技术实施方式二的流程图,图3是实施方式三中程序标准化处理流程图,图4是实施方式四的流程图。具体实施例方式具体实施方式一本具体实施方式描述的是编程题自动评分方法的步骤下面结合图1具体说明本实施方式。向计算机输入学生编写的程序S及这个题目的标准答案集T101,从标准答案集T中选择未匹配的标准答案Ti102;将程序S和标准答案Ti进行各自高级语言的词法、语法分析,利用分析结果分别生成系统依赖图Gs、系统依赖图Gt,i103;对系统依赖图Gs、系统依赖图Gt,i进行规范化处理104,进行系统依赖图Gs相应高级语言的语法检测,将系统依赖图Gs、系统依赖图Gt,i中的表达式用语法树表示105;标准化系统依赖图Gs、系统依赖图Gt,i的表达式,并消除系统依赖图Gs、系统依赖图Gt,i中的代码多样化表示形式106;对系统依赖图Gs、系统依赖图Gt,i的处理结果从程序的规模、结构、深度及知识应用四个层次进行匹配107(各个层次匹配的相似度分别为Dsize、Dstruct、Dprofound、Dnodes,根据各个层次匹配的相似度及语法进行信息检测);按照评分标准给出学生编写的程序一次匹配的得分108;判断是否标准答案集T中所有标准答案全都匹配并评分结束109,结果为否,则返回步骤102;结果为是,则从程序S和标准答案Ti的所有匹配结果中选择一个最高分作为学生成绩最终得分110;最后编程题自动评分结束111。(编程题自动评分的评分标准首先,按公式Di=λsize*Dsize-i+λstruct*Dstruct-i+λprofound*Dprofound-i+λnodes*Dnodes-i计算一次匹配的总体相似度,其中λ为四个不同层次匹配的权值,这几个权值的取值范围各自为0.05<λsize<0.20,0.15<λstruct<0.30,0.50<λprofound<0.85、0.05<λnodes<0.20,如果要想使评分结果整体高些,则应该使λsize和λstruct的值高些,反之则降低这两个值,升高λprofound的值,如果题目为编程填空题,则λsize=0,λnodes=0,并且将这两个权值按λstruct∶λprofound的比例分别加到λstruct和λprofound中;然后,按公式Vi=v*Di/1000-w计算学生编写的程序和一个标准答案匹配的最终得分Vi,其中v表示编程题的实际分值,w表示学生编写的程序中由于语法错误而减去的分值;最后,当所有的标准答案都匹配完时,按公式V=MAX(V1,...,Vi,...,Vn)求出学生编写的程序S的最终得分V,其中Vi表示每个标准答案匹配后计算出的得分,n是标准答案的个数,函数MAX是求最大值函数。)具体实施方式二下面结合图2具体说明本实施方式。本实施方式与实施方式一的不同点是,步骤104分为以下步骤(在源程序的词法、语法分析及系统依赖图表示后,首先将程序中包含两个或两个以上语义功能的复合表达式在程序的语义不变而语法形式发生变化的条件下),把系统依赖图Gs、系统依赖图Gt,i简化为只包含一个语义功能的表达式201(例如C程序语句“n=m++;”可简化为“n=m;m++;”;然后,规范化系统依赖图中的特殊语句、选择及循环结构),把系统依赖图Gs、系统依赖图Gt,i规范简化成只包含变量说明语句、赋值语句、函数调用语句、selection语句、iteration语句、return语句、break语句、continue语句的形式202(系统依赖图出现其它类型的语句,要求在程序的语义不变而语法形式发生变化的条件下,等价地将这些语句转化到上述8种语句,例如C程序语句“m++;”可转化为“m=m+1;”,其中selection语句由一个父节点及一组选择分支组成,每个选择分支包含各自的选择条件,各个选择条件要求具有唯一性,即当一个选择条件为“真”时,其它选择条件都为“假”,C、Pascal、Fortran、Basic四种语言中所有的选择语句必须等价转化到selection语句,iteration语句由一个父节点及两个分支组成,一个分支称为“循环主体分支”,包含循环体的所有语句,另一个称为“循环初始化分支”,如果编程语言中的循环语句在检测循环控制条件之前需要执行循环体中的语句,则“循环初始化分支”包含这些语句,否则“循环初始化分支”为空,C、Pascal、Fortran、Basic四种语言中所有的循环语句必须等价转化到i本文档来自技高网...

【技术保护点】
一种程序设计语言编程题自动评分的方法,其特征是它通过以下步骤实现:向计算机输入学生编写的程序(S)及这个题目的标准答案集(T)(101);从标准答案集(T)中选择未匹配的标准答案(Ti)(102);将程序(S)和标准答案(Ti)进行各自高级语言的词法、语法分析,利用分析结果分别生成系统依赖图(G↓[s])、系统依赖图(G↓[t,i])(103);对系统依赖图(G↓[s])、系统依赖图(G↓[t,i])进行规范化处理(104);进行系统依赖图(G↓[s])相应高级语言的语法检测,将系统依赖图(G↓[s])、系统依赖图(G↓[t,i])中的表达式用语法树表示(105);标准化系统依赖图(G↓[s])、系统依赖图(G↓[t,i])的表达式,并消除系统依赖图(G↓[s])、系统依赖图(G↓[t,i])中的代码多样化表示形式(106);对系统依赖图(G↓[s])、系统依赖图(G↓[t,i])的处理结果从程序的规模、结构、深度及知识应用四个层次进行匹配(107);按照评分标准给出学生编写的程序一次匹配的得分(108),判断是否标准答案集(T)中所有标准答案全都匹配并评分结束(109),结果为否,则返回步骤(102);结果为是,则从程序(S)和标准答案(Ti)的所有匹配结果中选择一个最高分作为学生成绩最终得分(110);最后编程题自动评分结束(111)。...

【技术特征摘要】

【专利技术属性】
技术研发人员:王宇颖李永浩孙志岗苏小红李希然朱鲲鹏付忠传
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:93[中国|哈尔滨]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1