基于编译原理理在C程序题自动评分系统中的应用

点赞:34649 浏览:157860 近期更新时间:2024-03-11 作者:网友分享原创网站原创

[摘 要]C语言作为国际上应用最广泛的高级程序设计语言之一,是我国高等院校计算机相关专业的必修基础课.在采用上级考试环境对C语言学习的综合能力进行考核时,大多会涉及到选择题、填空题以及程序题等,而程序题主要是采用结果评分法.这种方式一步错就会导致整个程序无法运行,当然也不会得到最终的结果,使学生丢失分数,这并不科学和公平.

[关 键 词 ]编译原理理论;C程序题;自动评分系统

中图分类号:TP391.7;TN702 文献标识码:A 文章编号:1009-914X(2014)35-0250-01

一、 引言

在对C语言进行考试评价中,其程序设计题的考核评分实现的难度较大,一些学校考试系统并没有设该类试题,即使设置了相关题目,但对该类试题的评分方法却并不完善,评分结果不尽人意.为提高C语言程序设计题评分的科学性和公平性,在比较结果评分方法的基础上,运用编译原理理论设计了自动化动态评分系统,进一步确保了系统评分结果的准确性和公正性,从而避免人工评阅因主观因素出现的偏差.

二、 编译原理的理论基础

(一)词法分析和语法分析

根据编译原理的理论知识,词法分析在编译原理的第一阶段需要将源程序进行一定的分解,并识别为一个个的单词,以便生成TOKEN文件.在语法分析过程中,其输入的数据主要以词法分析阶段生成的TOKEN文件为主,确定整个程序是否构成语法上正确的“程序”.该阶段作为程序编译原理的核心部分,基于这一理论本文提出了实现C程序题的自动评分系统.在程序语法分析阶段,应尽可能发现更多的语法错误,并准确的定位各个错误,积极采取相关措施对其进行处理.在语法分析过程中,对错误的处理原则包括:首先发现错误并校正错误,校正的目的是确保语法分析能顺利进行.其次使错误局部化,使语法分析程序跳过的语法成分最小.第三准确报错,避免信息的重复与株连.

(二) 正规表达式

正规表达式(Regular Expression)是用来匹配或者描述一系列符合某个句法规则的一个或者多个字符型文字或者元字符组成.在诸多文本编辑器或者其他工具中,正规表达式的主要功能是检索或者替换那些符合某个模式的文本内容,许多程序设计语言都支持利用正规表达式对字符串进行操作.在处理动态文本过程中,正规表达式具有较强的灵活性,能实现对程序的静态评阅.

比如在检查程序中for语句时,一般的形式为:for(express1;express2;express3),用正规表达式表示为:for\(([∧;]*)?;([∧;]*)?;([∧;]*)?;\)

输入和输出语句所对应的正规表达式分别为:

scanf\(“%d(,%d)?”,&\w+,(?(1)(,&\w+))\)

printf\(“%d(,%d)?”,\w+,(?(1)(,\w+))\)

在表达式中,问号标记的分组是可选的,能准确的表达出语句的原意.利用正规表达式对程序得分知识要点进行描述与分解,在自动评分系统中进行匹配的方法具有高度的灵活性和准确性.

三、 自动评分系统的实现

(一)程序评阅的流程

C语言程序设计题自动化评分系统评阅的基本思路为:在比较结果的评分方法上,在静态评阅方式结合动态评阅,更好的实现自动评分系统.其具体流程为:首先将学生上交的程序进行编译和运行,如果一次性运行成功则获得满分;相反根据算法进行动态评阅,并对其错误进行修改和记录,再次编译和运行,根据程序存在的具体错误适当扣分.如果动态分析后程序仍然不能编译和运行,采用静态分析法对程序代码进行直接分析,根据程序具体所答的知识点给出相应分数,最终获得学生程序设计题的评分结果.

(二) 实现评阅的核心内容

(1)动态评阅.如果学生所设计的程序不能一次性成功运行,说明该程序存在一定的语法错误,将自动评阅转换为动态评阅.实现动态评阅的主要依据是编译原理的词法与语法分析理论,具体操作是:对学生源程序进行词法分析,扫描源程序,生成TOKEN文件.再对TOKEN文件进行语法分析,确保不破坏学生程序的正常部分外,尽量把学生源程序中的错误修改过来,生成并保存新的TOKEN文件.然后调用TCC程序以命令行方式对新程序进行编译连接,编译成功后运行执行文件,为避免死锁造成系统崩溃,调用API函数控制程序运行.如果编译失败就退出动态评阅,由静态评阅代替其进行.


(2)静态评阅.对无法编译运行的程序,根据正规表达式描述的知识要点进行匹配,其主要操作为:在录入考试题目要求时,将考题答案以及所对应的知识要点一并输入,如果学生所设计的程序不能正常编译运行时,将知识要点与考生答案进行匹配,从而判断学生程序答案是否包含了考试所要求的知识要点信息,帮助老师更加科学、公正的评分.

基于编译原理理在C程序题自动评分系统中的应用参考属性评定
有关论文范文主题研究: 关于程序的论文范文检索 大学生适用: 高校毕业论文、学校学生论文
相关参考文献下载数量: 23 写作解决问题: 如何写
毕业论文开题报告: 文献综述、论文小结 职称论文适用: 期刊目录、高级职称
所属大学生专业类别: 如何写 论文题目推荐度: 优质选题

四、 总结

学习C语言,不仅需要加强其理论知识的学习,更需要强化学生的实践应用能力.在C语言程序设计题考试中,为提高评分结果的准确性和公正性,以编译原理理论为基础,将动态评阅和静态评阅方式相结合,实现了C程序题评分的自动化,避免了人为主观因素造成的评分偏差.