Difference between revisions of "ConstantsInProblems"

From WeBWorK_wiki
Jump to navigation Jump to search
m
Line 29: Line 29:
 
<td style="background-color:#ffffcc;padding:7px;">
 
<td style="background-color:#ffffcc;padding:7px;">
 
<p>
 
<p>
No changes are needed in the tagging and description or initialization sections of the problem file. In the problem set-up section, we add to the Context the constants we're going to use. Here we define a constant k, and assign it a value that will be used when expressions involving k are evaluated.
+
No changes are needed in the tagging and description or initialization sections of the problem file. In the problem set-up section, we add to the Context the constants we're going to use. Here we define a constant k, and assign it a value that will be used when expressions involving k are evaluated. Do not set k=1, because if you do, then kx and x/k are equivalent, for example. Obviously, do not set k=0.
 
</p>
 
</p>
 
<p>
 
<p>

Revision as of 18:36, 13 February 2010

Named Constants in Problems: PG Code Snippet

This code snippet shows the essential PG code to include named constants in a WeBWorK problem. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.

Problem Techniques Index

PG problem file Explanation
  Context("Numeric");
  Context()->constants->add(k=>0.01);

  # this means that student answers are
  #    not reduced to the numerical value
  #    specified in the Context
  Context()->flags->set(
      formatStudentAnswer=>'parsed'
  );

No changes are needed in the tagging and description or initialization sections of the problem file. In the problem set-up section, we add to the Context the constants we're going to use. Here we define a constant k, and assign it a value that will be used when expressions involving k are evaluated. Do not set k=1, because if you do, then kx and x/k are equivalent, for example. Obviously, do not set k=0.

In this case we specified constants->add(), so that the constant k is added to existing constants in the problem. If we had used constants->are(), we would also remove all predefined constants from the Context (in a manner similar to the use of variables->add() and variables->are() when defining variables in a problem.

One other tweak that we might want to put in here is to reset a Context flag so that students' answers are not reduced to numerical values when they are previewed or submitted. This is done by setting the formatStudentAnswer flag, as shown.

  BEGIN_TEXT
  \(f(x) = x-k\) (where \(k>0\) is constant)
  is zero when $BR
  \(x = \)\{ ans_rule(15) \}
  END_TEXT

In the text section of the problem we then ask a question involving the constant.

  ANS( Compute("k")->cmp() );

And in the answer and solution section of the file we can refer to the constant in the solution to the problem.

Problem Techniques Index