File:
[LON-CAPA] /
doc /
gutshtml /
SessionOn2.html
Revision
1.2:
download - view:
text,
annotated -
select for diffs
Tue Jul 22 14:47:00 2003 UTC (21 years, 4 months ago) by
bowersj2
Branches:
MAIN
CVS tags:
version_1_3_X,
version_1_3_3,
version_1_3_2,
version_1_3_1,
version_1_3_0,
version_1_2_X,
version_1_2_99_1,
version_1_2_99_0,
version_1_2_1,
version_1_2_0,
version_1_1_X,
version_1_1_99_5,
version_1_1_99_4,
version_1_1_99_3,
version_1_1_99_2,
version_1_1_99_1,
version_1_1_99_0,
version_1_1_3,
version_1_1_2,
version_1_1_1,
version_1_1_0,
version_1_0_99_3,
version_1_0_99_2,
version_1_0_99_1,
version_1_0_99,
version_1_0_3,
version_1_0_2,
version_1_0_1,
version_1_0_0,
version_0_99_5,
version_0_99_4,
HEAD
Convert GUTs HTML to PROPER line endings.
<html>
<head>
<meta name=Title
content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
<meta http-equiv=Content-Type content="text/html; charset=macintosh">
<link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
<title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
<style><!--
.MsoHeader
{tab-stops:center 3.0in right 6.0in;
font-size:10.0pt;
font-family:"Times New Roman";}
.H5
{font-size:10.0pt;
font-family:"Times New Roman";
layout-grid-mode:line;
font-weight:bold;}
.Section1
{page:Section1;}
.Section2
{page:Section2;}
-->
</style>
</head>
<body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
<div class=Section1>
<h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
<h3><a name="_Toc421867127">Tags</a></h3>
<ul type=disc>
<li><b>Response tags </b></li>
</ul>
<p>Arguments for all response tags </p>
<ul type=disc>
<ul type=circle>
<li><i>ID</i><span style='font-style:
normal'>, if this isn't set it will be set during the publication step.
It is used to assign parameters names in a way that can be tracked if
an instructor modifies things by hand. </span></li>
<li><i>name</i><span
style='font-style:normal'> optional, if set, it will be used by the resource
assembly tool when one is modifying parameters. </span></li>
</ul>
</ul>
<p>Implemented response tags </p>
<ul type=disc>
<ul type=circle>
<li><b><responseparam></b><span
style='font-weight:normal'> if it appears it should be inside of a <*response>
tag, defines an externally adjustable parameter for this question. Arguments:
</span></li>
<ul type=square>
<li><i>default</i><span
style='font-style:normal'> required, specifies a default value for the
parameter </span></li>
<li><i>name</i><span
style='font-style:normal'> required, specifies an internal name for the
parameter </span></li>
<li><i>type</i><span
style='font-style:normal'> required specifies the type of parameter, one
of "tolerance", "int", "float", "string",
"date" (configuration of paramters is handled by lonparmset.pm
and parameter.html) </span></li>
<li><i>description</i><span
style='font-style:normal'> a string describing the parameter, this is what
is used to talk about a parameter outside of a problem </span></li>
</ul>
<li><b><parameter></b><span
style='font-weight:normal'> exactly the same as <responseparam> currently,
but should not appear inside of a <*response> </span></li>
<li><b><numericalresponse></b><span
style='font-weight:normal'> implements a numerical answer, it needs an internal
</span><b><textline></b><span style='font-weight:normal'> for the
response to go in. It checks all styles of numerical supported in CAPA.
Possible args are: </span></li>
<ul type=square>
<li><i>answer</i><span
style='font-style:normal'> required, specifies the correct answer, may
be either a perl list or scalar</span></li>
<li><i>units</i><span
style='font-style:normal'> optional, specifies unit of correct answer,
CAPA style</span></li>
</ul>
<li><b><stringresponse></b><span
style='font-weight:normal'> implements a string answer, it needs an internal
</span><b><textline></b><span style='font-weight:normal'> for the
response to go in. It can check the string for either case or order. </span></li>
<ul type=square>
<li><i>answer</i><span
style='font-style:normal'> required, specifies the correct answer, may
be either a perl list or scalar</span></li>
<li><i>type</i><span
style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
<ul type=square>
<li>cs - case senesitive, order important</li>
<li>ci - case insenesitive, order important</li>
<li>mc - case insenesitive, order unimportant</li>
</ul>
</ul>
<li><b><essayresponse></b><span
style='font-weight:normal'> implements a ungraded large text response, it
need an internal </span><b><textarea></b><span style='font-weight:
normal'> for the response to go in. </span></li>
<li><b><imageresponse></b><span
style='font-weight:normal'> implements a image click style image submission,
uses the foil structure tags <a href="#foil">below</a>. Additional tags
that should appear in a <foil> are: </span></li>
<ul type=square>
<li><b><image></b><span
style='font-weight:normal'> required, the contained text specifies a published
graphical resource that is the image used, should only appear once per
foil</span></li>
<li><b><rectangle></b><span
style='font-weight:normal'> required, the contained text specifies a rectangular
area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
<li><b><text></b><span
style='font-weight:normal'> required, the contained text is printed on
top of the image.</span></li>
</ul>
<li><b><optionresponse></b><span
style='font-weight:normal'> implements a "select from these choices"
style question, the choices are specified by the instructor, it uses the
foil structure tags <a href="#foil">below</a> with this additional args:
</span></li>
<ul type=square>
<li><b><foilgroup></b><span
style='font-weight:normal'> is required to have <i>options</i></span> which
should be a perl list of possible options for the student. </li>
</ul>
<li><b><radiobuttonresponse></b><span
style='font-weight:normal'> implements a true / false style question with
1 correct answer.it uses the foil structure tags <a href="#foil">below</a>
but the <i>value</i></span> of a <foil>can only be "true"
or "false" or "unused" </li>
<li><b><dataresponse></b><span
style='font-weight:normal'> implements a straight data storage entry idea,
needs and interveing input tag like <textline> to work correctly.<br>
Arguments: </span></li>
<ul type=square>
<li><i>name</i><span
style='font-style:normal'> internal name for the value, it will have the
part id and respose id added on to it </span></li>
<li><i>type</i><span
style='font-style:normal'> type of data stored in this response field,
should be one of the types supported by parameter.html </span></li>
<li><i>display</i><span
style='font-style:normal'> a string that will be used to describe the field
when interfacing with humans </span></li>
</ul>
</ul>
</ul>
<p> <span style='font-size:10.0pt;
font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>
</span></span> <b><externalresponse></b><span style='font-weight:
normal'> implements the ability to have an external program grade a response,
expects either a <textline> or <textfield> inside the tag. </span></p>
<p>Arguments: </p>
<ul type=disc>
<ul type=circle>
<ul type=square>
<li><i>url</i><span
style='font-style:normal'> the url to submit the answer and form to, does
not need to be a LON-CAPA machine. </span></li>
<li><i>answer</i><span
style='font-style:normal'> a string or scalar variable that can encode
something that should encode the correct answer, in some cases this
may be nothing. </span></li>
<li><i>form</i><span
style='font-style:normal'> a hash variable name that will be submitted
to the remote site as a HTTP form. </span></li>
</ul>
</ul>
</ul>
<p>The response of the remote server needs to be in XML as follows. </p>
<pre> <loncapagrade> <awardetail> CORRECT </awardetail> <message> A message to be shown to the students </message> </loncapagrade> </pre>
<ul type=disc>
<ul type=circle>
<ul type=square>
<li><b><loncapagrade></b><span
style='font-weight:normal'> no arguments but must surround the response.
</span></li>
<li><b><awardetail></b><span
style='font-weight:normal'> required inner tag, the response inside must
be one of the detailed responses that appears in the data storage documentation
(CVS:loncapa/doce/homework/datastorage) </span></li>
<li><b><message></b><span
style='font-weight:normal'> optional message to have shown to the student
</span></li>
</ul>
</ul>
</ul>
<ul type=disc>
<li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
</ul>
<p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'>
that controls the maximum number of total foils to show. </span></p>
<ul type=disc>
<ul type=circle>
<li><b><foilgroup></b><span
style='font-weight:normal'> required, must be the tag that surrounds all
foil definitions </span></li>
<li><b><foil></b><span
style='font-weight:normal'> required, all data inside is a possible foil
</span></li>
<li><b><conceptgroup></b><span
style='font-weight:normal'> optional, surrounds a collection of <foil>,
when a problem is displayed only one of the contained <foil>is selected
for display. It receives one required argument <i>concept</i></span>.
</li>
</ul>
<li><b>Hint structure </b></li>
</ul>
<p>All of these tags must appear inside a <b><*response></b><span
style='font-weight:normal'> tag. </span></p>
<ul type=disc>
<ul type=circle>
<li><b><hintgroup></b><span
style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
<li><b><hintpart></b><span
style='font-weight:normal'> required, Tag to implement conditional hints.
It has a required argument <i>on</i></span>. When a <*hint> tag
named the same as the value the on attribute evaluates to be correct the
<hintpart> will show. If no other <hintpart> are to show then
all hintparts with a <i>on</i><span style='font-style:normal'> of "default"
will show </span></li>
<li><b><numericalhint></b><span
style='font-weight:normal'> has all the arguments that <numericalresponse>,
does and the required attribute <i>name</i></span> which should be set
to the value of which <hintpart> will be shown. </li>
</ul>
<li><b>Input Tags </b></li>
</ul>
<p>This group of tags implement a mechanism for getting data for students, they
will usually be used by a <*response>. </p>
<ul type=disc>
<ul type=circle>
<li><b><textarea></b><span
style='font-weight:normal'> creates a Large text input box, If data appears
between the start and end tags, the data will appear i the textarea if
the student has not yet made a submission. Additionally it takes two arguments
<i>rows</i></span> and <i>cols</i><span
style='font-style:normal'> which control the height and width of the area
respectively. It defaults to 10 and 80. </span></li>
<li><b><textline></b><span
style='font-weight:normal'> creates a single line of input element, it accepts
1 argument <i>size</i></span> which controls the width on the textline,
it defaults to 20. </li>
</ul>
<li><b>Output Tags </b></li>
</ul>
<p>This group of tags generate useful pieces of output. </p>
<ul type=disc>
<ul type=circle>
<li><b><standalone></b><span
style='font-weight:normal'> everything in between the start and end tag
is shown only on the web, and only if the resource is not part of a course.
</span></li>
<li><b><displayduedate></b><span
style='font-weight:normal'> this will insert the current duedate if one
is set into the document. It is generated to be inside a table of 1x1
elements </span></li>
<li><b><displaytitle></b><span
style='font-weight:normal'> this will insert the title of the problem from
the metadata of the problem </span></li>
<li><b><window></b><span
style='font-weight:normal'> the text in between is put in a popup javascript
window </span></li>
<li><b><m></b><span
style='font-weight:normal'> the inside text is LaTeX, and is converted to
HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set
to "on" the intervening text will have a perl var expansion
done to it before being converted. </li>
<li><b><randomlabel></b><span
style='font-weight:normal'> shows a specified image with images or text
labels randomly assigned to a set of specific locations, those locations
may also have values assigned to them. There is a hash generated conating
the mapping of labels to locations, labels to values, and locations to
values. Example: </span></li>
</ul>
</ul>
<pre> <randomlabel bgimg="URL" width="12" height="45" texwidth="50"> <labelgroup name="GroupOne" type="image"> <location x="123" y="456" value="10" /> <location x="321" y="654" value="20" /> <location x="213" y="546" value="13" /> <label description="TEXT-1">IMG-URL</label> <label description="TEXT-2">IMG-URL</label> <label description="TEXT-3">IMG-URL</label> </labelgroup> <labelgroup name="GroupTwo" type="text"> <location x="12" y="45" /> <location x="32" y="65" /> <location x="21" y="54" /> <label>TEXT-1</label> <label>TEXT-2</label> <label>TEXT-3</label> </labelgroup> </randomlabel> </pre>
<p>Arguments: </p>
<ul type=disc>
<ul type=circle>
<ul type=square>
<li><i>bgimg</i><span
style='font-style:normal'> either a fully qualified URL for an external
image, or a loncapa resource, it supports relative references (../images/apicture.gif),
the image must either be a GIF or JPEG </span></li>
<li><i>width</i><span
style='font-style:normal'> the width of the image in pixels </span></li>
<li><i>height</i><span
style='font-style:normal'> the height of the image in pixels </span></li>
<li><i>texwidth</i><span
style='font-style:normal'> the width of the image in millimeters </span></li>
</ul>
</ul>
</ul>
<p>Internal tags: </p>
<ul type=disc>
<ul type=circle>
<ul type=square>
<li><b><labelgroup></b><span
style='font-weight:normal'> 1 required, multiple allowed. Declares a group
of locations and labels associated with them. <br>
Arguments: </span></li>
<ul type=square>
<li><i>name</i><span
style='font-style:normal'> this is the name of the group, a hash with
this name will be generated holding the mappings for later use in
the problem. For each location a value will be set for which label
is there, (EX. $hash{'1'}="TEXT-2"). For locations with
values the hash will contain 2 items, a location to value mapping
($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10).
For all image style of labels there will also be a label description
to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations
will be set to the total number of locations that exist. (Note that
locations and labels start counting from 1.) </span></li>
<li><i>type</i><span
style='font-style:normal'> the type of labels in this group, either 'image'
or 'text' </span></li>
</ul>
<li><b><location></b><span
style='font-weight:normal'> declares a location on the image that a label
should appear at <br>
Arguments: </span></li>
<ul type=square>
<li><i>x</i><span
style='font-style:normal'> the x value of the location in pixels </span></li>
<li><i>y</i><span
style='font-style:normal'> the y value of the location in pixels </span></li>
<li><i>value</i><span
style='font-style:normal'> a scalar value to associate at this location
(optional) </span></li>
</ul>
<li><b><label></b><span
style='font-weight:normal'> declaration of a label, if this is a text type
labelgroup the internal text should be the text of the label (HTML is
not currently supported), if this is an image type of label the internal
text must be a LON-CAPA resource specification, and the description
filed must be set. <br>
Arguments: </span></li>
<ul type=square>
<li><i>description</i><span
style='font-style:normal'> a required field for image labels, it will
be used when setting values in the hash. </span></li>
</ul>
</ul>
</ul>
<li><b>Scripting </b></li>
</ul>
<p>These tags allow the document to behave programatically </p>
<ul type=disc>
<ul type=circle>
<li><b><display></b><span
style='font-weight:normal'> the intervening perl script is evaluated in
the safe space and the return value of the script replaces the entire
tag </span></li>
<li><b><import></b><span
style='font-weight:normal'> causes the parse to read in the file named in
the body of the tag and parse it as if the entire text of the file had
existed at location of the tag </span></li>
<li><b><parserlib></b><span
style='font-weight:normal'> the enclosed filename contains definitions for
new tags </span></li>
<li><b><script></b><span
style='font-weight:normal'> if the argument <i>type</i></span> is set to
"loncapa/perl" the enclosed data is a perl script which is evaluated
inside the perl Safe space. The return value of the script is ignored.
</li>
<li><b><scriptlib></b><span
style='font-weight:normal'> the enclosed filename contains perl code to
run in the safe space </span></li>
<li><b><block></b><span
style='font-weight:normal'> has a required argument <i>condition</i></span>
that is evaluated, it the condition is true everything inside the tag
is evaluated, if it is false everything inside the block tag is skipped
</li>
<li><b><notsolved></b><span
style='font-weight:normal'> everything inside the tag is skipped if the
problem is "solved" </span></li>
<li><b><postanswerdate></b><span
style='font-weight:normal'> everything inside the tag is skipped if the
problem is before the answer date </span></li>
<li><b><preduedate></b><span
style='font-weight:normal'> everything inside the tag is skipped if the
problem is after the due date </span></li>
<li><b><randomlist></b><span
style='font-weight:normal'> the enclosed tags are parsed in a stable random
order, optional argument <i>show</i></span> restricts the number of tags
indie that are actually parsed the no more than <i>show</i><span
style='font-style:normal'>. </span></li>
<li><b><solved></b><span
style='font-weight:normal'> everything inside the tag is skipped if the
problem is "not solved" </span></li>
<li><b><while></b><span
style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span>
is a perl scriptlet that when evaluated results in a true or false value,
on true the entirety of the text between the whiles is parsed. The condition
is tested again, etc. If false it goes to the next node in the parse.
</li>
</ul>
<li><b>Structure Tags </b></li>
</ul>
<p>These tags give the problem a structure and take care of the recording of
data and giving the student messages. </p>
<ul type=disc>
<ul type=circle>
<li><b><problem></b><span
style='font-weight:normal'> must be the first tag in the file, this tag
sets up the header of the webpage and generates the submit buttons, it
also handles due dates properly </span></li>
<li><b><part></b><span
style='font-weight:normal'> must be below <problem> if it is going
to be used. It does many of the same tasks as <problem> but allows
multiple separate problems to exist in a single file. </span></li>
<li><b><startouttext><endouttext></b><span
style='font-weight:normal'> these tags are somewhat special, they must have
no internal text and occur in pairs. Their use is to mark up the problem
so the web editor knows what sections should be edited in a plain text
block on the web. </span></li>
</ul>
</ul>
<h3><a name="_Toc421867128"><script> Functions</a></h3>
<p>A list of functions that have been written that are available in the Safe
space scripting environment inside a problem. </p>
<ul type=disc>
<li>sin(x), cos(x), tan(x)</li>
<li>asin(x), acos(x), atan(x), atan2(y,x)</li>
<li>log(x), log10(x)</li>
<li>exp(), pow(x,y), sqrt(x)</li>
<li>abs(x), sgn(x)</li>
<li>erf(x), erfc(x)</li>
<li>ceil(x), floor(x)</li>
<li>min(...), max(...)</li>
<li>factorial(n)</li>
<li>N%M</li>
<li>sinh(x), cosh(x), tanh(x)</li>
<li>asinh(x), acosh(x), atanh(x)</li>
<li>roundto(x,n)</li>
<li>web("a","b","c") or web(a,b,c)</li>
<li>html("a") or html(a)</li>
<li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
<li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
<li>random</li>
<li>choose</li>
<li>tex("a","b") or tex(a,b)</li>
<li>var_in_tex(a)</li>
<li>to_string(x), to_string(x,y)</li>
<li>class(), section()</li>
<li>name(), student_number()</li>
<li>open_date(), due_date(), answer_date()</li>
<li>sub_string()</li>
<li>array_moments(array)</li>
<li>format(x,y),prettyprint(x,y)</li>
<li>map(...)</li>
<li>caparesponse_check</li>
<li>caparesponse_check_list</li>
</ul>
<h3><a name="_Toc421867129">Detailed descriptions of each function and comparison
with CAPA</a></h3>
<table border=1 cellpadding=0>
<tr>
<td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
<td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
<td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
<td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&sin($x), &cos($x),
&tan($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Trigonometric functions where
x is in radians. $x can be a pure number, i.e., you can call &sin(3.1415)</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
<td width=134 valign=top class="Normal"> <p>&asin($x), &acos($x),
&atan($x), &atan2($y,$x)</p></td>
<td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions.
Return value is in radians. For asin and acos the value of x must be
between -1 and 1. The atan2 returns a value between -pi and pi the sign
of which is determined by y. $x and $y can be pure numbers</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&log($x), &log10($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm.
$x can be a pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&exp($x), &pow($x,$y),
&sqrt($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Exponential, power and square
root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure
numbers</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&abs($x), &sgn($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Abs takes the absolute value
of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For
x>0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x<0, sgn(x) = -1.
$x can be a pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&erf($x), &erfc($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Error function. erf =
2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'>
= 1.0 - </span><i>erf(x)</i><span
style='font-style:normal'>. $x can be a pure number</span></p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&ceil($x), &floor($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Ceil function returns an integer
rounded up whereas floor function returns and integer rounded down.
If x is an integer than it returns the value of the integer. $x can
be a pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
<td width=134 valign=top class="Normal"> <p>&min(...), &max(...)</p></td>
<td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum
value of a list of arguments if the arguments are numbers. If the arguments
are strings then it returns a string sorted according to the ASCII codes</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
<td width=134 valign=top class="Normal"> <p>&factorial($n)</p></td>
<td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer
else it will round down. The largest value for n is 170. $n can be a
pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>N%M</p></td>
<td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
<td width=147 valign=top class="Normal"> <p>N and M are integers and returns
the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&sinh($x), &cosh($x),
&tanh($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can
be a pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
<td width=134 valign=top class="Normal"> <p>&asinh($x), &acosh($x),
&atanh($x)</p></td>
<td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions.
$x can be a pure number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>/DIS($x,"nn")</p></td>
<td width=134 valign=top class="Normal"> <p>&format($x,"nn")</p></td>
<td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
nn is nF or nE and n is an integer.</p></td>
<td width=101 valign=top class="Normal"> <p> The difference is obvious.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>&prettyprint($x,"nn")</p></td>
<td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
nn is nF or nE and n is an integer. In E mode it will attempt to generate
a pretty x10^3 rather than a E3 following the number</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
<td width=134 valign=top class="Normal"> <p>&roundto($x,$n)</p></td>
<td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal
points. $x and $n can be pure numbers</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>web("a","b","c")
or web(a,b,c)</p></td>
<td width=134 valign=top class="Normal"> <p>&web("a","b","c")
or &web($a,$b,$c)</p></td>
<td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending
on the output medium. a is for plain ASCII, b for tex output and c for
html output</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>html("a") or html(a)</p></td>
<td width=134 valign=top class="Normal"> <p>&html("a") or
&html($a)</p></td>
<td width=147 valign=top class="Normal"> <p>Output only if the output mode
chosen is in html format</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
<td width=134 valign=top class="Normal"> <p>&j0($x), &j1($x), &jn($m,$x),
&jv($y,$x)</p></td>
<td width=147 valign=top class="Normal"> <p>Bessel functions of the first
kind with orders 0, 1 and m respectively. For jn(m,x), m must be an
integer whereas for jv(y,x), y is real. $x can be a pure number. $m
must be an integer and can be a pure integer number. $y can be a pure
real number</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained
in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x)
is new to LON-CAPA.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
<td width=134 valign=top class="Normal"> <p>&y0($x), &y1($x), &yn($m,$x),
&yv($y,$x)</p></td>
<td width=147 valign=top class="Normal"> <p>Bessel functions of the second
kind with orders 0, 1 and m respectively. For yn(m,x), m must be an
integer whereas for yv(y,x), y is real. $x can be a pure number. $m
must be an integer and can be a pure integer number. $y can be a pure
real number</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained
in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x)
is new to LON-CAPA.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
<td width=134 valign=top class="Normal"> <p>&random($l,$u,$d)</p></td>
<td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed
random number between the lower bound, l and upper bound, u in steps
of d. $l, $u and $d can be pure numbers</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments
must be of the same type. However, now you can mix the type</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
<td width=134 valign=top class="Normal"> <p>&choose($i,...)</p></td>
<td width=147 valign=top class="Normal"> <p>Choose the ith item from the
argument list. i must be an integer greater than 0 and the value of
i should not exceed the number of items. $i can be a pure integer</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
<td width=134 valign=top class="Normal"> <p>Option 1 - &map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
or <br>
Option 2 - &map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
Option 3 - @mappedArray = &map($seed,[$a,$b,$c,$d]) <br>
Option 4 - ($w,$x,$y,$z) = &map($seed,\@a) <br>
where $a='A'<br>
$b='B'<br>
$c='B'<br>
$d='B'<br>
$w, $x, $y, and $z are variables</p></td>
<td width=147 valign=top class="Normal"> <p>Assigns to the variables $w,
$x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The
precise value for $w .. depends on the seed. (Option 1 of calling map).
In option 2, the values of $a, $b .. are mapped into the array, @mappedArray.
The two options illustrate the different grouping. Options 3 and 4 give
a consistent way (with other functions) of mapping the items. For each
option, the group can be passed as an array, for example, [$a,$b,$c,$d]
=> \@a.</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
into three groups separated by a semicolon ;. In LON-CAPA, the separation
is done by using [] brackets or using an array @a. Note the backslash
(\) before the arguments in the second and third groups.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
<td width=134 valign=top class="Normal"> <p>Option 1 - &rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
or <br>
Option 2 - &rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
Option 3 - @rmapped_array = &rmap($seed,[$a,$b,$c,$d]) <br>
Option 4 - ($w,$x,$y,$z) = &rmap($seed,\@a) <br>
where $a='A'<br>
$b='B'<br>
$c='B'<br>
$d='B'<br>
$w, $x, $y, and $z are variables</p></td>
<td width=147 valign=top class="Normal"> <p>The rmap functions does the
reverse action of map if the same seed is used in calling map and rmap.
</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
into three groups separated by a semicolon ;. In LON-CAPA, the separation
is done by using [] brackets (with create an unamed vector reference)
or using an array @a. Note the backslash (\) before the arguments in
the second and third groups (Which cause Perl to send to variable locations
rather than the variable values, similar to a C pointer).</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>$a=&xmlparse($string) </p></td>
<td width=147 valign=top class="Normal"> <p>Runs the internal parser over
the argument parsing for display. <b>Warning</b><span style='font-weight:normal'>
This will result in different strings in different targets. Don't use
the results of this function as an answer.</span></p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>tex(a,b), tex("a","b")</p></td>
<td width=134 valign=top class="Normal"> <p>&tex($a,$b), &tex("a","b")</p></td>
<td width=147 valign=top class="Normal"> <p>Returns a if the output mode
is in tex otherwise returns b</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
<td width=134 valign=top class="Normal"> <p>&var_in_tex($a)</p></td>
<td width=147 valign=top class="Normal"> <p>Equivalent to tex("a","")</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
<td width=134 valign=top class="Normal"> <p>&to_string($x), &to_string($x,$y)</p></td>
<td width=147 valign=top class="Normal"> <p>If x is an integer, returns
a string. If x is real than the output is a string with format given
by y. For example, if x = 12.3456, &to_string(x,".3F")
= 12.345 and &to_string(x,".3E") = 1.234E+01.</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(),
set(), problem()</p></td>
<td width=134 valign=top class="Normal"> <p>&class(), &section()</p></td>
<td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive
name, section number, set number and null string.</p></td>
<td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem()
are no longer used. Currently, they return a null value.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
<td width=134 valign=top class="Normal"> <p>&name(), &student_number()</p></td>
<td width=147 valign=top class="Normal"> <p>Return the full name in the
following format: lastname, firstname initial. Student_number returns
the student 9-alphanumeric string. If undefined, the functions return
null.</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
<td width=134 valign=top class="Normal"> <p>&open_date(), &due_date(),
&answer_date()</p></td>
<td width=147 valign=top class="Normal"> <p>Problem open date, due date
and answer date. The time is also included in 24-hr format.</p></td>
<td width=101 valign=top class="Normal"> <p>Output format for time is changed
slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59
is displayed as 11:59 pm.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
<td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
<td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
<td width=101 valign=top class="Normal"> </td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
<td width=134 valign=top class="Normal"> <p>&sub_string($a,$b,$c) <br>
perl substr function. However, note the differences</p></td>
<td width=147 valign=top class="Normal"> <p>Retrieve a portion of string
a starting from b and length c. For example, $a = "Welcome
to LON-CAPA"; $result=&sub_string($a,4,4); then $result is
"come"</p></td>
<td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c)
starts counting from 0 (as opposed to 1). In the example to the left,
substr($a,4,4) returns "ome ".</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
<td width=134 valign=top class="Normal"> <p>@arrayname <br>
Array is intrinsic in perl. To access a specific element use $arrayname[$n]
where $n is the $n+1 element since the array count starts from 0</p></td>
<td width=147 valign=top class="Normal"> <p>"xx" can be a variable
or a calculation.</p></td>
<td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined
by @arrayname. It is not necessary to specify the dimension of the array. </p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
<td width=134 valign=top class="Normal"> <p>@B=&array_moments(@A)</p></td>
<td width=147 valign=top class="Normal"> <p>Evaluates the moments of an
array A and place the result in array B[i] where i = 0 to 4. The contents
of B are as follows: B[0] = number of elements, B[1] = mean, B[2] =
variance, B[3] = skewness and B[4] = kurtosis.</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed
as an array in the first argument whereas in LON-CAPA, the array containing
the moments are set equal to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
<td width=134 valign=top class="Normal"> <p>&min(@Name), &max(@Name)</p></td>
<td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum
value of an array, use &max(@arrayname) and to find the minimum
value of an array, use &min(@arrayname)</p></td>
<td width=101 valign=top class="Normal"> <p>Combined with the min and max
functions defined earlier.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
<td width=134 valign=top class="Normal"> <p>undef @name</p></td>
<td width=147 valign=top class="Normal"> <p>To destroy the contents of an
array, use</p></td>
<td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_normal
($item_cnt,$seed,$av,$std_dev)</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of normal distribution of average $av and standard deviation $std_dev.
The distribution is generated from seed $seed</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_beta
($item_cnt,$seed,$aa,$bb) <br>
NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1)
/B($aa,$bb) for 0<X<1.</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_gamma
($item_cnt,$seed,$a,$r) <br>
NOTE: Both $a and $r MUST be positive.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) *
X**($r-1) * exp(-$a*X).</p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_exponential
($item_cnt,$seed,$av) <br>
NOTE: $av MUST be non-negative.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of exponential distribution. </p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_poisson
($item_cnt,$seed,$mu) <br>
NOTE: $mu MUST be non-negative.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of poisson distribution. </p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_chi
($item_cnt,$seed,$df) <br>
NOTE: $df MUST be positive.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of chi_square distribution with $df degrees of freedom. </p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_chi
($item_cnt,$seed,$df,$nonc) <br>
NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of noncentral_chi_square distribution with $df degrees of freedom and
noncentrality parameter $nonc. </p></td>
<td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
as the first argument whereas in LON-CAPA the results are set equal
to the function.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_f
($item_cnt,$seed,$dfn,$dfd) <br>
NOTE: Both $dfn and $dfd MUST be positive.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of F (variance ratio) distribution with degrees of freedom $dfn (numerator)
and $dfd (denominator). </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_f
($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must
be non-negative.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of noncentral F (variance ratio) distribution with degrees of freedom
$dfn (numerator) and $dfd (denominator). $nonc is the noncentrality
parameter. </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_multivariate_normal
($item_cnt,$seed,\@mean,\@covar) <br>
NOTE: @mean should be of length p array of real numbers. @covar should
be a length p array of references to length p arrays of real numbers
(i.e. a p by p matrix.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
of multivariate_normal distribution with mean vector @mean and variance-covariance
matrix. </p></td>
<td width=101 valign=top class="Normal"> <p>Note the backslash before the
@mean and @covar arrays.</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_multinomial
($item_cnt,$seed,@p) <br>
NOTE: $item_cnt is rounded with int() and the result must be non-negative.
The number of elements in @p must be at least 2.</p></td>
<td width=147 valign=top class="Normal"> <p>Returns single observation from
multinomial distribution with $item_cnt events classified into as many
categories as the length of @p. The probability of an event being classified
into category i is given by ith element of @p. The observation is an
array with length equal to @p, so when called in a scalar context it
returns the length of @p. The sum of the elements of the obervation
is equal to $item_cnt.</p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_permutation
($item_cnt,@array) </p></td>
<td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform
($item_cnt,$seed,$low,$high) <br>
NOTE: $low must be less than or equal to $high.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
from a uniform distribution. </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform_integer
($item_cnt,$seed,$low,$high) <br>
NOTE: $low and $high are both passed through int(). $low must be less
than or equal to $high.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
from a uniform distribution in integers. </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_binomial
($item_cnt,$seed,$nt,$p) <br>
NOTE: $nt is rounded using int() and the result must be non-negative.
$p must be between 0 and 1 inclusive.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
from the binomial distribution with $nt trials and the probabilty of
an event in each trial is $p. </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
<tr>
<td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
<td width=134 valign=top class="Normal"> <p>@return_array=&random_negative_binomial
($item_cnt,$seed,$ne,$p) <br>
NOTE: $ne is rounded using int() and the result must be positive. $p
must be between 0 and 1 exclusive.</p></td>
<td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt
outcomes generated from negative binomial distribution with $ne events
and the probabilty of an event in each trial is $p. </p></td>
<td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
</tr>
</table>
<h3><a name="_Toc421867130"><script> Variables</a></h3>
<ul type=disc>
<li>$external::target - set to the current target the xml parser is parsing
for </li>
<li>$external::part - set to the <i>id</i><span style='font-style:normal'>
of the current problem <part>; zero if there are no <part> </span></li>
<li>$external::gradestatus - set to the value of the current resource.partid.solved
value </li>
<li>$external::datestatus - set to the current status of the clock either
CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
<li>$external::randomseed - set to the number that was used to seed the random
number generator </li>
<li>$pi - set to PI </li>
<li>$rad2deg - converts radians to degrees </li>
<li>$deg2rad - converts degrees to radians </li>
</ul>
<h3><a name="_Toc421867131">Form internals</a> </h3>
<p>Form elements used for homework editing/response </p>
<p>the form is named lonhomework </p>
<h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
<ul type=disc>
<li>grade_target, grade_username, grade_domain, grade_symb - the vaules take
precedence over the the normal ENV settings of these, use &Apache::lonxml::whichuser()
to get back the correct vaues of the items </li>
<li>HWVAL_response:number - the name of the input elements for each response.
The response is the response's ID, and the :number part exists only for
response with multiple foils, and is a unique number in order of the submission
</li>
<li>changerandseed - the 'Change' button, only exists right after the Change
button is clicked </li>
<li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze'
depending on the desired view </li>
<li>rndseed - the currently requested random seed </li>
<li>showallfoils - if it exists, and we are in CSTR space, the problem should
ignore <conceptgroup> and the response's max setting and show all
possible foils </li>
<li>submit - the name of the Submit button </li>
<li>submitted - a hidden form parameter that can be used to tell if the student
has submitted answers or not, if it is set, there should be answers to grade.
</li>
</ul>
<h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
<p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
<p>Note: the file edit.pm has many helper functions for creating the standard
elements for editing a tag and it's attributes, all of those functions follow
these conventions </p>
<ul type=disc>
<li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the
name of the parameter and it is for the third tag inside the first tag </li>
<li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside
of it </li>
<li>homework_edit_tagdepth - used by both &Apache::edit::editline and
&Apache::edit::editfield for the <textarea> and <input>
form elements they create </li>
<li>insert_tagdepth - used to request an tag insert, it is set to the id number
of the requested tag in the %Apache::lonxml::insertlist </li>
</ul>
<ul type=disc>
<li> </li>
</ul>
<h3><a name="_Toc421867134">Symbs</a></h3>
<p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó
These identifiers are built from the URL of the map, the resource number of
the resource in the map, and the URL of the resource itself. The latter is
somewhat redundant, but might help if maps change.</p>
<p>An example is</p>
<p class=MsoHeader><span style='font-family:"Courier New"'> msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
<p class=MsoHeader>The respective map entry is</p>
<p class=MsoHeader><span style='font-family:"Courier New"'> <resource
id="19" src="/res/msu/korte/tests/part12.problem"
</span></p>
<p class=MsoHeader><span style='font-family:"Courier New"'> title="Problem
2"></span></p>
<p class=MsoHeader><span style='font-family:"Courier New"'> </resource></span></p>
<p class=MsoHeader>Symbs are used by the random number generator, as well as
to store and restore data specific to a certain instance of for example a
problem.</p>
<h3><a name="_Toc421867135">Store / Restore</a></h3>
<p><span style='color:black'>2 important functions in lonnet.pm are </span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore()</span><span
style='color:black'> and </span><span style='font-family:"Courier New";
color:black'>&Apache::lonnet:restore()</span><span style='color:black'> (and
</span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::store()</span><span
style='color:black'>, which is is the non-critical message twin of </span><span
style='font-family:"Courier New";color:black'>cstore</span><span
style='color:black'>). These functions are for handlers to store a perl hash to
a userÕs permanent data space in an easy manner, and to retrieve it again
on another call. It is expected that a handler would use this once at the
beginning to retrieve data, and then again once at the end to send only the
new data back. </span></p>
<p><span style='color:black'>The data is stored in the userÕs data directory
on the userÕs homeserver under the ID of the course.</span></p>
<p><span style='color:black'>The hash that is returned by </span><span
style='font-family:"Courier New";color:black'>restore</span><span
style='color:black'> will have all of the previous value for all of the elements
of the hash. </span></p>
<p><span style='color:black'>Example: </span></p>
<p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
<p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
<p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
<p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
<p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
<p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
<p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
<p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
<p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
<p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
<p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
<p><span style='font-family:"Courier New";color:black'>my %history=&Apache::lonnet::restore();</span></p>
<p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
<p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history)))
{</span></p>
<p><span style='font-family:"Courier New";color:black'> print("\%history{$key}
= $history{$key}");</span></p>
<p><span style='font-family:"Courier New";color:black'>}</span></p>
<p><span style='color:black'>Will print out: </span></p>
<p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{1:timestamp}
= 990455579</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{2:timestamp}
= 990455580</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{timestamp} =
990455580</span></p>
<p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
<p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>,
<i>version</i></span><span
style='color:black'> and <i>timestamp</i></span><span style='color:black'> were
added to the hash. <i>version</i></span><span style='color:black'> will be
equal to the total number of versions of the data that have been stored. The
<i>timestamp</i></span><span
style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
style='color:black'> is available in every historical section to list which keys
were added or changed at a specific historical revision of a hash. </span></p>
<p><span style='color:black'><b>Warning</b></span><span
style='color:black'> do not store the hash that restore returns directly. This
will cause a mess since it will restore the historical keys as if the were
new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
style='color:black'> will become </span><span style='font-family:"Courier New";
color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
<p><span style='color:black'><b>Calling convention: </b></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New";
color:black'> my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New";
color:black'> &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
<p><span style='color:black'><b>Arguments (only %newrecord is required the rest
are somewhat optional, read the details): </b></span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>$symb</i></span><span
style='color:black'> - a string containing the internal name of the specific instance
of a resource. Usually this value can be gotten from </span><span
style='font-family:"Courier New";color:black'>&Apache::lonnet::symbread($filename)</span><span
style='color:black'>. If the argument is blank, it will attempt to use </span><span
style='font-family:"Courier New";color:black'>symbread()</span><span
style='color:black'> for it. If the result is ambiguous store/restore will fail.
</span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>$courseid</i></span><span
style='color:black'> - the internal name for a course, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'request.course.id'}</span><span
style='color:black'> which is what will be looked at if no value is passed to
the functions. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>$domain</i></span><span
style='color:black'> - the domain that the user belongs to, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.domain'}</span><span
style='color:black'> which is what will be looked at if no value is passed to
the functions. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>$uname</i></span><span
style='color:black'> - the login name for the user, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.name'}</span><span
style='color:black'> which is what will be looked at if no value is passed to
the functions. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>$home</i></span><span
style='color:black'> - the homeserver for the user, usually found in </span><span
style='font-family:"Courier New";color:black'>$ENV{'user.home'}</span><span
style='color:black'> but can be easily gotten from a domain and name through </span><span
style='font-family:"Courier New";color:black'>&Apache::lonnet::homeserver($uname,$domain)</span><span
style='color:black'>. If no value is passed to store/restore the value in %ENV
will be used. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>%newrecord</i></span><span
style='color:black'> - the hash to store being passed by reference </span></p>
<p><span style='color:black'><b>Return values: </b></span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>an empty string</i></span><span
style='color:black'> - the function was unable to determine exactly where to store
or restore from. At least one of the "optional" arguments was unable
to be determined. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>a hash</i></span><span
style='color:black'> - restore successfully read a old hash for this specific
user / resource instance. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>no_such_host</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied
desn't exist in the network. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>con_delayed</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
at this time. The store will be delayed until it is again available. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>con_failed</i></span><span
style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
at this time and store was unable to delay the store until a later time. The
store failed. </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>ok</i></span><span
style='color:black'> - the store completed succesfully </span></p>
<p> <span style='font-family:Symbol;
color:black'>á<span style='font:7.0pt "Times New Roman"'>
</span></span> <span style='color:black'><i>error:</i></span><span
style='color:black'> - remote server failied to store or restore the reason follows
the </span><span style='font-family:"Courier New";color:black'>:</span><span
style='color:black'> </span></p>
<h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
<pre> </pre>
<pre><span
style='font-size:9.0pt'><Provided by &EXT() and set external to the resource, required></span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.opendate #unix time of when the local machine should let the</span></pre>
<pre><span
style='font-size:9.0pt'> #student in</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.duedate #unix time of when the local machine should stop</span></pre>
<pre><span
style='font-size:9.0pt'> #accepting answers</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
<pre><span
style='font-size:9.0pt'> #provide the correct answer to the student</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.weight # points the problem is worth</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.maxtries # maximum number of attempts the student can have</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.type # type of problem homework can be:</span></pre>
<pre><span
style='font-size:9.0pt'> # homework - randomized, graded, stored with </span></pre>
<pre><span
style='font-size:9.0pt'> # requesting user, full feeback</span></pre>
<pre><span
style='font-size:9.0pt'> # exam - randomized, graded, stored with </span></pre>
<pre><span
style='font-size:9.0pt'> # requesting user, minimal feedback</span></pre>
<pre><span
style='font-size:9.0pt'> # form - unrandomized, ungraded, stored with </span></pre>
<pre><span
style='font-size:9.0pt'> # specified user, full feedback</span></pre>
<pre><span
style='font-size:9.0pt'> # survey - unrandomized, ungraded, stored with </span></pre>
<pre><span
style='font-size:9.0pt'> # requesting user, full feedback</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'><numerical/formula/response needed: (has a default if nonexistant)></span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.responseid.tol # lots of possibilities here</span></pre>
<pre><span
style='font-size:9.0pt'> # percentage, range (inclusive and exclusive),</span></pre>
<pre><span
style='font-size:9.0pt'> # variable name, etc</span></pre>
<pre><span
style='font-size:9.0pt'> # 3%</span></pre>
<pre><span
style='font-size:9.0pt'> # 0.5</span></pre>
<pre><span
style='font-size:9.0pt'> # .05+</span></pre>
<pre><span
style='font-size:9.0pt'> # 3%+</span></pre>
<pre><span
style='font-size:9.0pt'> # 0.5+,.005</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.responseid.sig # one or two comma sepearted integers, </span></pre>
<pre><span
style='font-size:9.0pt'> # specifying the number of significatn figures</span></pre>
<pre><span
style='font-size:9.0pt'> # a student must use</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'><Problem sets using cstore (required):></span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
<pre><span
style='font-size:9.0pt'> # incorrect_attempted == incorrect and attempted</span></pre>
<pre><span
style='font-size:9.0pt'> # correct_by_student == correct by student work</span></pre>
<pre><span
style='font-size:9.0pt'> # correct_by_override == correct, instructor override</span></pre>
<pre><span
style='font-size:9.0pt'> # incorrect_by_override == incorrect, instructor override</span></pre>
<pre><span
style='font-size:9.0pt'> # excused == excused, problem no longer counts for student</span></pre>
<pre><span
style='font-size:9.0pt'> # '' (empty) == not attempted</span></pre>
<pre><span
style='font-size:9.0pt'> # ungraded_attempted == an ungraded answer has been</span></pre>
<pre><span
style='font-size:9.0pt'> sumbitted and stored</span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.tries # positive integer of number of unsuccessful attempts</span></pre>
<pre><span
style='font-size:9.0pt'> # made, malformed answers don't count if feedback is</span></pre>
<pre><span
style='font-size:9.0pt'> # on</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
<pre><span
style='font-size:9.0pt'> # resource.weight that the stundent earned.</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
<pre><span
style='font-size:9.0pt'> # part of the question, check awarddetail below for</span></pre>
<pre><span
style='font-size:9.0pt'> # possibilities</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
<pre><span
style='font-size:9.0pt'> # the student submitted string for the part.response</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
<pre><span
style='font-size:9.0pt'> # list of all of the results of grading the submissions</span></pre>
<pre><span
style='font-size:9.0pt'> # in detailed form of the specific failure</span></pre>
<pre><span
style='font-size:9.0pt'> #Possible values:</span></pre>
<pre><span
style='font-size:9.0pt'> # EXACT_ANS, APPROX_ANS : student is correct</span></pre>
<pre><span
style='font-size:9.0pt'> # NO_RESPONSE : student submitted no response</span></pre>
<pre><span
style='font-size:9.0pt'> # MISSING_ANSWER : student submitted some but not</span></pre>
<pre><span
style='font-size:9.0pt'> # all parts of a response</span></pre>
<pre><span
style='font-size:9.0pt'> # WANTED_NUMERIC : expected a numeric answer and</span></pre>
<pre><span
style='font-size:9.0pt'> # didn't get one</span></pre>
<pre><span
style='font-size:9.0pt'> # SIG_FAIL : incorrect number of Significant Figures</span></pre>
<pre><span
style='font-size:9.0pt'> # UNIT_FAIL : incorrect unit</span></pre>
<pre><span
style='font-size:9.0pt'> # UNIT_NOTNEEDED : Submitted a unit when one shouldn't</span></pre>
<pre><span
style='font-size:9.0pt'> # NO_UNIT : needed a unit but none was submitted</span></pre>
<pre><span
style='font-size:9.0pt'> # BAD_FORMULA : syntax error in submitted formula</span></pre>
<pre><span
style='font-size:9.0pt'> # INCORRECT : answer was wrong</span></pre>
<pre><span
style='font-size:9.0pt'> # SUBMITTED : submission wasn't graded</span></pre>
<pre><span
style='font-size:9.0pt'> # ERROR : unable to get a grade</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
<pre><span
style='font-size:9.0pt'> # a message that should be shown to the student</span></pre>
<pre><span
style='font-size:9.0pt'> </span></pre>
<pre><span
style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
<pre><span
style='font-size:9.0pt'> # if set, added to the maxtries parameter for student </span></pre>
<pre><span
style='font-size:9.0pt'> # total number of tries overall</span></pre>
<pre> </pre>
<h3><a name="_Toc421867137">Sample Problems</a></h3>
<p class=H5><span style='layout-grid-mode:
both'>A Simple Problem</span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
<script type="loncapa/perl"></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&random(10,99,.1);</span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&random(1,10,.01);</span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
</script></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What
is the area of a box $length mm in length and </span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&format($width,"2E")
cm in width.</span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
<numericalresponse id="11" answer="@area" units="mm^2"></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
<textline></textline></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
<responseparam name="tol" type="tolerance" default="5%"></responseparam></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
</numericalresponse></span></p>
<p style='
line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
<p class=H5><span
style='layout-grid-mode:both'>A More Complex Problem</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><displayduedate
/></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><p><displaytitle
/></p></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><script type="loncapa/perl"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF="<b>
F<sub>1</sub> </b>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1="<b>
F<sub>1</sub> </b>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2="<b>
F<sub>2</sub> </b>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF="|<b>F</b>|";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag="|<b>F<sub>1</sub></b>|";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$F2mag="|<b>F<sub>2</sub></b>|";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag="|<b>
<font face=symbol>t</font><sub>1</sub></b>|";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag="|<b>
<font face=symbol>t</font><sub>2</sub></b>|";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1="Q<sub>1</sub>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2="Q<sub>2</sub>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau="<font
face=symbol>t</font>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1="<font
face=symbol><b>t</b></font><sub>1</sub>";</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'> $val=&random(1,4,1);</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'> $tp=&choose($val,"her","her","his","his");</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'> $sd=&choose($val,"daughter","niece","nephew","son");</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'></script></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><startouttext
/></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag
are the magnitudes of the torques produced repectively by </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2
with respect the pivot P. The magnitudes of $vF1 is </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of
$vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where
$vF1 and $vF2 act. </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><endouttext /></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'><optionresponse
max="600"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foilgroup options="('Correct','Incorrect','Can not tell')"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<conceptgroup concept="Effect of the moment-arm on the torque"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="1a" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="1b" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil
name="1c" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
For $F1mag larger than $F2mag , $trq1mag can be less than $trq2mag</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="1d" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
For $F1mag smaller than $F2mag , $trq1mag can be larger than $trq2mag</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</conceptgroup> </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<conceptgroup concept="For a given pivot, relation of force vector
to torque."></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="2a" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
The moment-arm of $vF is the shortest distance from P to the line along $vF
.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="2b" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="2c" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
The moment-arm of $vF is not the distance from P to Q<sub>1</sub>.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="2d" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
The moment-arm of $vF is the distance from P to Q<sub>1</sub>.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil> </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</conceptgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<conceptgroup concept="Torque is force x moment-arm."></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="3a" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="3b" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$trq1mag equals to $F1mag times the distance from Q<sub>1</sub>
to P.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="3c" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$trq1mag is not equal to the product of $F1mag and the distance from Q<sub>1</sub>
to P.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="3d" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</conceptgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<conceptgroup concept="Pivot point is required to calculate torque"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="4a" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$tau1 vector depends on the location of P.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="4b" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$tau1 vector does not depend on the location of P.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="4c" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$tau1 vector has no meaning unless a pivot is selected.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="4d" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
$tau1 vector can be determined without selecting P. </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</conceptgroup> </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<conceptgroup concept="torque from 2 forces acting along same line"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="5a" value="Correct"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
Two equal forces, acting on a body along the same line but at different positions,
produce equal torques with respect to a given pivot."</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="5b" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
Two equal forces, along the same line, produce equal torques with respect
to a given pivot only if they act at the same point on a body."</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="5c" value="Incorrect"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
Two equal forces acting on a body along the same line but at different positions,
produce equal torques for only one pivot."</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</conceptgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<foil name="6" value="unused"></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
This foil will never display since it is unused.</span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foil></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</foilgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<notsolved></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
<hintgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition
of the torque. The force and the moment-arm respect to the pivot. </span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</hintgroup></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'>
</notsolved></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'></optionresponse></span></p>
<p><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
<h3> </h3>
<p> <img border=0 width=432 height=370
src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
<p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
</div>
<br
clear=ALL style='page-break-before:always;'>
<div class=Section2> </div>
</body>
</html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>