MultipleChoiceCheckbox3

From WeBWorK_wiki
Jump to navigation Jump to search
This article has been retained as a historical document. It is not up-to-date and the formatting may be lacking. Use the information herein with caution.

This problem has been replaced with a newer version of this problem


Multiple Choice with Checkboxes

Click to enlarge

This PG code shows how to write a multiple choice question with possibly more than one correct answer by using checkboxes.


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();  

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGchoicemacros.pl",
);

TEXT(beginproblem());

Initialization:

$mc = new_checkbox_multiple_choice();

$mc -> qa (
"Select all expressions that are equivalent to  
\( e^{x^2 + 1/x} \).  There may be more than
one correct answer.", 
"\( e^{x^2} e^{1/x} \) $BR",
"\( e^{x^2} e^{x^{-1}} \) $BR",                
);

$mc -> extra(
"\( \displaystyle \frac{ e^{x^2} }{ e^x } \) $BR",
);

$mc -> makeLast("None of the above");

Setup: Use the question and answer method qa( ) to store the question string and correct answer strings in $mc. For example, $mc->qa("question","correct answer 1","correct answer 2");. Note that unlike match lists and select lists, you cannot call the qa( ) method again. If you include math symbols you should switch to LaTeX mode \( \), and use \displaystyle with extra spacing $BR after each entry, if necessary. For example,

$mc->qa(
"Question text here.", 
"\( x^2 \) $BR", 
"\( \displaystyle \frac{x^2}{4-x} \) $BR" 
);

Incorrect answers are specified as a list of string arguments to the extra( ) method.

The arguments of the makeLast( ) method will appear at the end of the list and will not be shuffled, unlike the arguments of extra( ), which are shuffled. The arguments to makeLast( ) can either be a new extra answers or only the correct answer. For example, if the only correct answer is "None of the above", use

$mc->qa("question","None of the above");
$mc->extra("very wrong","distractor","red herring");
$mc->makeLast("None of the above");

To make answers appear in a certain order (e.g., Yes followed by No and Maybe), use $mc->qa("question","Yes"); $mc->makeLast("Yes","No","Maybe"); and do not use extra( ) at all.

Context()->texStrings;
BEGIN_TEXT
Additional instructions can be put here.
$BR
\{ $mc -> print_q() \}
$BR
\{ $mc -> print_a() \}
END_TEXT
Context()->normalStrings;

Main Text: Print the question and answers. Print the question text using $mc->print_q() and the list of all answers using $mc->print_a().

install_problem_grader(~~&std_problem_grader);

$showPartialCorrectAnswers = 0;

ANS( checkbox_cmp( $mc->correct_ans() ) );

Answer Evaluation:

Context()->texStrings;
BEGIN_SOLUTION
${PAR}SOLUTION:$PAR
The correct answer is \{ $mc->correct_ans() \}
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();

Solution:

Templates by Subject Area