论文部分内容阅读
近年来,在线评测系统被广泛的应用到程序教学中。对程序正确性严格、精确的评测以及快速的结果反馈让程序教学变得更加高效、便捷,学生和老师从中受益匪浅。但对于一些初学者而言,虽然可以很快就知道自己程序的正确性结果,但是如果当其真正面对评测系统反馈答案错误时,他们往往不知道该如何处理。 这个问题在已经拥有近10年教学经验的POJ上同样无可避免。计算概论或者程序设计实习课程的学生在POJ上做作业或者练习时,当其得到Wrong Answer的反馈之后,往往不知所措。他们希望系统能够给出错误的原因或者进一步改正的提示。为了实现这一功能,POJ系统需要对用户的程序有更深层次的理解,也就是“以指导为目的的程序理解”。 本文重点关注的问题是如何分析得到用户的Wrong Answer代码的具体出错原因。这项问题的研究目标是当用户的代码遇到Wrong Answer的时候,系统能够给出这份代码的错误原因,但由于这个目标的难度很大,本文尚且达不到这个目标。本文的目标是针对已有错误代码和正确代码的用户,给出其错误原因,统计分析同一题目的错误分布,给后续用户在遇到Wrong Answer时一个整体的错误原因分析的参考。 这一问题的难点在于代码出错的原因多种多样,即使同一种错误也有不同的表现形式。 本文提出了一种代码错误的分类,形式化描述和检测的方法。该方法首先通过人工观察分析,将常见的错误分为了7大类,18小类,然后在此基础上提出了一套规则将错误分类进行形式化的描述,最后通过语法树分析等方法将描述一一实现,完成代码错误的自动检测。 本文工作的完成将有助于POJ系统在“以指导为目的的程序理解”问题上进一步深入研究。同时在计算概论和程序设计实习等课程的教学中,也有助于对学生进行纠错式指导,对老师提供题目错误类型统计指导,从而更好的促进课程的教学。