# DisableFunctions1

Jump to: navigation, search

## Disabling Functions so Students Must Simplify Answers

This PG code shows how to disable all functions and restrict student answers to fractions.

PG problem file Explanation

Problem tagging:

DOCUMENT();

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"AnswerFormatHelp.pl",
"contextFraction.pl",
);

TEXT(beginproblem());


Initialization:

Context("Fraction-NoDecimals");

# Prevent pi from becoming 3.1415... and cos(pi) from
# becoming -1.
Context()->constants->set(pi => {keepName => 1});

$f1 = Formula("cos(pi)");$f2 = Formula("sin(pi/3)");

Context()->functions->disable("All");
Context()->functions->enable("sqrt");

$answer1 = Compute("-1");$answer2 = Compute("sqrt(3)/2");


Setup: We choose a context that requires fractions as answers and does not allow decimals. After constructing the formulas involving trig functions, we disable all functions and re-enable the sqrt() function. This means that students are allowed to type in fractions and square roots, but not much else (e.g., they'll get an error message if they type in a trig function).

Note that $f1 and $f2 are MathObject Formulas, which do not get reduced since pi is set to keep its name. If $f1 and $f2 used Compute instead, then the results would be -1 and 0.866... instead of cos(\pi) and sin(\pi/3) as desired.

Context()->texStrings;
BEGIN_TEXT
Enter your answers as simplified fractions.
$BR$BR
$$f1 =$$
\{ ans_rule(20) \}
\{ AnswerFormatHelp("fractions") \}
$BR$BR
$$f2 =$$
\{ ans_rule(20) \}
\{ AnswerFormatHelp("fractions") \}
END_TEXT
Context()->normalStrings;


Main Text:

$showPartialCorrectAnswers = 1; ANS($answer1->cmp() );

ANS( $answer2->cmp() );  Answer Evaluation: Context()->texStrings; BEGIN_SOLUTION${PAR}SOLUTION:\${PAR}
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();


Solution: