为基于函数的学生答案编写评判
对于基于函数的答案,您可以使用检查变量等式和关键字或函数是否存在的内置函数来编写 MATLAB® 代码:
assessVariableEqual
- 检查学生答案中的变量是否等于容差范围内的指定值。assessFunctionPresence
- 检查学生答案中是否存在特定函数或关键字。assessFunctionAbsence
- 检查学生答案中是否未包含某些函数或关键字。
执行模型
您为基于函数的答案编写的每个评判项目通常都包含对学生答案的调用。您可以为函数提供输入并计算任何返回值。您还可以调用参考答案,将其输出与学生答案输出进行比较。
每个评判依次独立于其他评判运行。如果一个评判未通过,后续评判仍会运行。
在一个评判项目中创建的变量在下一个评判项目中不可用。应在每个评判项目中定义所有必需的变量。
如果代码终止运行且没有报错,则评判结果将显示为通过状态。否则,评判结果显示为未通过状态。
如果评判项目是自测,则无论答案通过与否,学生都可以通过点击测试名称左侧的箭头查看有关评判的信息。
当您将
assessVariableEqual
用于基于函数的习题时,则对于调用学生函数时创建的任何输出变量,应使用与学生函数声明中相同的名称。默认反馈消息会引用在评判项目中创建的输出变量名称,如果输出变量与声明不匹配,则学生可能无法识别该变量。
在评判项目中调用学生答案
为了评估学生作为答案提交的函数,每个评判项目都会调用学生答案。
以下是 triangleArea
函数的一个评判项目示例:
b = 5;
h = 3;
area = triangleArea(b,h);
areaCorrect = 7.5;
assessVariableEqual('area',areaCorrect)
当学生点击提交时,此评判项目将调用学生版的 triangleArea
。
使用参考答案评判学生答案
要将学生答案与参考答案进行比较,请同时调用下面的两个函数。
要调用学生答案,请使用语法
myFunction
。要调用参考答案,请使用语法
reference.
myFunction
。
在这两种情况下,都需要将 myFunction
替换为您在答案模板中使用的函数的名称。
以下是 triangleArea
函数的一个评判项目示例:
b = 5;
h = 3;
area = triangleArea(b,h);
areaCorrect = reference.triangleArea(b,h);
assessVariableEqual('area',areaCorrect)
示例
翻转向量
学生必须编写一个名为 flipIt
的函数来翻转输入向量,以反转此向量中值的顺序。学生不应使用 flip
函数。
参考答案
function w = flipIt(v) w = v(end:-1:1); end
评判项目. 使用输入向量 [1 2 3 4] 调用学生答案。测试学生答案是否与参考答案相匹配,避免使用 flip
:
v = [1 2 3 4]; w = flipIt(v) w_correct = reference.flipIt(v); assessVariableEqual('w',w_correct); assessFunctionAbsence('flip','FileName','flipIt.m')
再次调用学生答案,这次使用输入向量 [4]:
v = [4]; w = flipIt(v); assessVariableEqual('w',w_correct); assessFunctionAbsence('flip','FileName','flipIt.m')