基于编译原理理论在C程序题自动评分系统中应用研究.docVIP

基于编译原理理论在C程序题自动评分系统中应用研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于编译原理理论在C程序题自动评分系统中应用研究

基于编译原理理论在C程序题自动评分系统中应用研究   [摘 要]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)静态评阅。对无法编译运行的程序,根据正规表达式描述的知识要点进行匹配,其主要操作为:在录入考试题目要求时,将考题答案以及所对应的知识要点一并输入,如果学生所设计的程序不能正常编译运行时,将知识要点与考生答案进行匹配,从而判断学生程序答案是否包含了考试所要求的知识要点信息,

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档