Difference between revisions of "AnswerHints"
m |
|||
Line 111: | Line 111: | ||
<b>Answer Evaluation:</b> |
<b>Answer Evaluation:</b> |
||
To generate specific, customized answer hints for particular answers, we use the <code>AnswerHints</code> postfilter provided by <code>answerHints.pl</code>. The answer hints should be provided by a particular answer, followed by the hash table association operator <code>=></code>, followed by a string that will show up in the messages portion of the answer preview and feedback box when students submit their answers. You may include as many answer and hint pairs as you like, and even use subroutines in them (see [http://webwork.maa.org/doc/cvs/pg_CURRENT/macros/answerHints.pl answerHints.pl] for more on this). |
To generate specific, customized answer hints for particular answers, we use the <code>AnswerHints</code> postfilter provided by <code>answerHints.pl</code>. The answer hints should be provided by a particular answer, followed by the hash table association operator <code>=></code>, followed by a string that will show up in the messages portion of the answer preview and feedback box when students submit their answers. You may include as many answer and hint pairs as you like, and even use subroutines in them (see [http://webwork.maa.org/doc/cvs/pg_CURRENT/macros/answerHints.pl answerHints.pl] for more on this). |
||
+ | </p> |
||
+ | <p> |
||
+ | If the MathObjects answer evaluator normally generates a message, the default is not to change a message that is already in place. To override a message generated by a MathObjects answer evaluator, you should set <code>replaceMessage=>1</code> as below. |
||
+ | <pre> |
||
+ | ANS($answer->cmp() |
||
+ | ->withPostFilter(AnswerHints( |
||
+ | Compute("6 u") => ["Good work!",replaceMessage=>1], |
||
+ | )) |
||
+ | ); |
||
+ | </pre> |
||
+ | <p> |
||
+ | If the same error message should be given for several different answers, you should make a square bracketed list of those answers. for example, if the variables x, t, and u were all in the context, we could use |
||
+ | <pre> |
||
+ | ANS($answer->cmp() |
||
+ | ->withPostFilter(AnswerHints( |
||
+ | [Compute("6 t"),Compute("6 x")] => |
||
+ | "Are you using the correct variable?", |
||
+ | )) |
||
+ | ); |
||
+ | </pre> |
||
+ | |||
</p> |
</p> |
||
</td> |
</td> |
Revision as of 16:25, 11 February 2010
Answer Hints
This PG code shows how to include two different kinds of answer hints:
- General answer hints that help students get started on a problem and are made available after a student has submitted an answer at least once (a "Show hints" checkbox appears near the "Submit Answers" button).
- Specific, customized answer hints that appear in the answer feedback messages box after a student submits a particular answer that activates a pre-programmed hint.
You may also be interested in ErrorMessageCustomization
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "answerHints.pl", ); TEXT(beginproblem()); |
Initialization:
We need to include the macros file |
Context("Numeric"); Context()->variables->are(t=>"Real",u=>"Real"); $f = Formula("2 t"); $answer = Formula("6 u"); |
Setup:
We restrict the variables to |
Context()->texStrings; BEGIN_TEXT If \( f(t) = $f \), then \( f(3u) \) = \{ ans_rule(10) \} END_TEXT Context()->normalStrings; Context()->texStrings; HINT(EV3(<<'END_HINT')); Substitute \( 3u \) wherever you see \( t \) in the formula for \( f(t) = $f \). END_HINT Context()->normalStrings; |
Main Text:
We include a general answer hint in the block of text between the commands |
$showPartialCorrectAnswers = 1; ANS($answer->cmp() ->withPostFilter(AnswerHints( Formula("6 t") => "Are you using the correct variable?", Formula("6 u") => "Good work!", )) ); |
Answer Evaluation:
To generate specific, customized answer hints for particular answers, we use the
If the MathObjects answer evaluator normally generates a message, the default is not to change a message that is already in place. To override a message generated by a MathObjects answer evaluator, you should set ANS($answer->cmp() ->withPostFilter(AnswerHints( Compute("6 u") => ["Good work!",replaceMessage=>1], )) ); If the same error message should be given for several different answers, you should make a square bracketed list of those answers. for example, if the variables x, t, and u were all in the context, we could use ANS($answer->cmp() ->withPostFilter(AnswerHints( [Compute("6 t"),Compute("6 x")] => "Are you using the correct variable?", )) ); |
- POD documentation: answerHints.pl
- PG macro code: answerHints.pl