李今花
摘 要:C语言课程考试系统中的题型分为单项选择、填空、程序设计、程序改错和程序填空,根据每种题型的特点,其评分方法是不相同的。应根据题型特点提出不同的评分策略与约束。
关键词:考试系统; 题型策略
中图分类号:TP311.52 文献标识码:A 文章编号:1006-3315(2019)06-177-001
C语言具有功能丰富、表达能力强,可移植性好的特点,该课程特点是注重操作、注重实践,但传统的卷面笔试无法体现出课程的特点。这就需要《C语言程序设计基础》课程的出题、组卷、考试、阅卷、评价等一系列体制打破传统,进行改革。
C语言课程考试系统中的题型分为单项选择、填空、程序设计、程序改错和程序填空,根据每种题型的特点,其评分方法是不相同的。
一、选择题的评分策略
单项选择题由于其每题答案的唯一性,所以单项选择题的评分策略相对其他题型最简单。单项选择题的评分策略是:采用字符串的截取与比较的方法,将考生答案与标准答案进行匹配,如果完全相同,则匹配成功获得分数,否则不得分[19]。
二、填空题的评分策略
填空题考查目标集中,答案简短,同一个答案也可以有多个表示方法,不是唯一。为了实现客观公正的对填空题进行评分,在系统的标准答案中作如下约束[18]:
当填空题有多个空且顺序不可变时,在系统中使用“,”作为分隔符将每个空的评分关键字连接在一起。例如“C语言中,一条复合语句是分别以()字符和()字符作为开始符和结束符的。答案为“{”“}”,则标准答案为“{,}字”;
当填空题答案的位置固定但内容不唯一时,对系统内多个标准答案使用“|”作为分隔符,表示考试只要和多个标准答案中的一个匹配即可,如题“C语言中,任何程序有且只有一个函数”,答案为:主或者main,则标准答案为“主|main”;
当填空题答案有多个且位置不固定、顺序可变时,使用“#”和“|”作为分割符,表示多个答案的顺序可改变。例如“C語言中,()和()两类变量属于实型变量。”答案为:“单精度和双精度”,则标准答案为“#单精度|双精度”。
基于以上约束,设计填空题的评分步骤为:
第一步,提取考生答案中的关键字;
第二步,对比考生关键字与答案关键字,如果标准答案关键字中包含“,”,则表示有多个答案且顺序不可变;如果标准答案关键字中包含“|”,则表示只要考生关键字与标准答案关键字中的一个对比成功即可;若标准答案关键字中包含“#”,则表示有多个答案且顺序可变,因此需要对多个关键字进行循环对比,对比成功一个获得对应分数并标记此标准答案已对比过不再进行对比,以防考生在不同位置填写同一个答案。
三、程序改错题的评分策略
改错题的评分主要包括两个方面:
1.查看考生是否找出了错误代码所处的行;
2.判断是否对错误行代码进行了正确的修正。
改错题的评分策略是首先读取考生改过的程序,将它与正确答案进行逐字比对,不一致处对应的行号即是错误行。确定错误代码所处的行之后,记录下行号,再根据行号将考生答案与标准答案一个字符、一个字符比对,如果对比成功即考生进行了正确的修改,判满分;否则不得分。
四、程序填空题的评分策略
程序填空题的评分策略和程序改错题的评分策略类似,首先找到填空所在行,然后提取学生答案放入变量中,与标准答案进行字符逻辑判断,如果对比成功时那么取该记录的权重值然后乘以该答题点分值。将此逻辑判断作为WHILE循环的循环体,对所程序源代码答案全部进行了逻辑匹配运算,同时要将考生的得分累加求和,这个和值就是该考生程序填空题成绩。
五、程序设计题的评分策略
对程序设计题进行评分时,首先检查程序的运行结果是否正确,如果正确则得满分;如果运行结果不正确或无法运行,则检查程序代码是否存在语法或语义方面的错误。
考虑到考生在编写程序设计题时代码存在多样性且程序设计的正确率较低两个特点,因此在题库中设计程序设计题时一般选择算法相对简单的试题,且题目中严格限制编程中使用到的结构和类型。
参考文献:
[1]杜利峰,牛永洁.字符串相似度在自动评分系统中的应用[J]电子设计工程,2011,19(7):42—44
[2]王颖,C语言上机考试系统中自动评分方法的探讨[J]当代教育理论与实践,2014年1月第6卷第1期
[3]李琦,C语言程序设计题自动评分算法的研究,电脑知识与技术,2011年3月1585-1