version 1.2, 2001/05/19 03:40:19
|
version 1.18, 2002/07/17 17:51:46
|
Line 4
|
Line 4
|
<title>LON-CAPA Homework System</title> |
<title>LON-CAPA Homework System</title> |
</head> |
</head> |
|
|
<body> |
<body bgcolor="white"> |
<h1>LON-CAPA Homework System</h1> |
<h1>LON-CAPA Homework System</h1> |
|
|
<h2>Tags</h2> |
<h2>Tags</h2> |
Line 57
|
Line 57
|
</ul> |
</ul> |
</li> |
</li> |
<li> |
<li> |
|
<b><parameter></b> exactly the same as |
|
<responseparam> currently, but should not appear |
|
inside of a <*response> |
|
</li> |
|
<li> |
<b><numericalresponse></b> implements a numerical |
<b><numericalresponse></b> implements a numerical |
answer, it needs an internal <b><textline></b> for |
answer, it needs an internal <b><textline></b> for |
the response to go in. It checks all styles of numerical |
the response to go in. It checks all styles of numerical |
supported in CAPA. Possible args are: |
supported in CAPA. Possible args are: |
<ul> |
<ul> |
<li><i>answer</i> required, specifies the correct answer, must be a perl list</li> |
<li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li> |
<li><i>type</i> optional, CAPA style str args, cs/ci/mc</li> |
|
<li><i>units</i> optional, specifies unit of correct answer, CAPA style</li> |
<li><i>units</i> optional, specifies unit of correct answer, CAPA style</li> |
</ul> |
</ul> |
</li> |
</li> |
<li> |
<li> |
|
<b><stringresponse></b> implements a string answer, |
|
it needs an internal <b><textline></b> for the |
|
response to go in. It can check the string for either case |
|
or order. |
|
<ul> |
|
<li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li> |
|
<li><i>type</i> optional, CAPA style str args, cs/ci/mc |
|
<ul> |
|
<li>cs - case senesitive, order important</li> |
|
<li>ci - case insenesitive, order important</li> |
|
<li>mc - case insenesitive, order unimportant</li> |
|
</ul> |
|
</li> |
|
</ul> |
|
<li> |
<b><essayresponse></b> implements a ungraded large |
<b><essayresponse></b> implements a ungraded large |
text response, it need an internal <b><textarea></b> |
text response, it need an internal <b><textfield></b> |
for the response to go in. |
for the response to go in. |
</li> |
</li> |
<li> |
<li> |
Line 108
|
Line 127
|
<i>value</i> of a <foil>can only be "true" or |
<i>value</i> of a <foil>can only be "true" or |
"false" or "unused" |
"false" or "unused" |
</li> |
</li> |
|
<li> |
|
<b><dataresponse></b> implements a straight data |
|
storage entry idea, needs and interveing input tag like |
|
<textline> to work correctly.<br> |
|
Arguments: |
|
<ul> |
|
<li> |
|
<i>name</i> internal name for the value, it will have |
|
the part id and respose id added on to it |
|
</li> |
|
<li> |
|
<i>type</i> type of data stored in this response |
|
field, should be one of the types supported by |
|
parameter.html |
|
</li> |
|
<li> |
|
<i>display</i> a string that will be used to describe |
|
the field when interfacing with humans |
|
</li> |
|
</ul> |
|
</li> |
|
<li> |
|
<p> |
|
<b><externalresponse></b> implements the ability to have |
|
an external program grade a response, expects either a |
|
<textline> or <textfield> inside the tag. <br /> |
|
</p> |
|
Arguments: |
|
<ul> |
|
<li> |
|
<i>url</i> the url to submit the answer and form to, |
|
does not need to be a LON-CAPA machine. |
|
</li> |
|
<li> |
|
<i>answer</i> a string or scalar variable that can |
|
encode something that should encode the correct |
|
answer, in some cases this may be nothing. |
|
</li> |
|
<li> |
|
<i>form</i> a hash variable name that will be |
|
submitted to the remote site as a HTTP form. |
|
</li> |
|
</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> |
|
<li> |
|
<b><loncapagrade></b> no arguments but must |
|
surround the response. |
|
</li> |
|
<li> |
|
<b><awardetail></b> 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) |
|
</li> |
|
<li> |
|
<b><message></b> optional message to have shown |
|
to the student |
|
</li> |
|
</ul> |
|
</li> |
</ul> |
</ul> |
<li> |
<li> |
<a name="foil">Foil Structure Tags</a> |
<a name="foil">Foil Structure Tags</a> |
Line 168
|
Line 260
|
</p> |
</p> |
<ul> |
<ul> |
<li> |
<li> |
<b><textarea></b> creates a Large text input box, If |
<b><textfield></b> creates a Large text input box, If |
data appears between the start and end tags, the data will |
data appears between the start and end tags, the data will |
appear i the textarea if the student has not yet made a |
appear in the textfield if the student has not yet made a |
submission. Additionally it takes two arguments <i>rows</i> |
submission. Additionally it takes two arguments <i>rows</i> |
and <i>cols</i> which control the height and width of the |
and <i>cols</i> which control the height and width of the |
area respectively. It defaults to 10 and 80. |
area respectively. It defaults to 10 and 80. |
Line 189
|
Line 281
|
</p> |
</p> |
<ul> |
<ul> |
<li> |
<li> |
|
<b><standalone></b> 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. |
|
</li> |
|
<li> |
<b><displayduedate></b> this will insert the current |
<b><displayduedate></b> this will insert the current |
duedate if one is set into the document. It is generated |
duedate if one is set into the document. It is generated |
to be inside a table of 1x1 elements |
to be inside a table of 1x1 elements |
Line 201
|
Line 298
|
<b><window></b> the text in between is put in a |
<b><window></b> the text in between is put in a |
popup javascript window |
popup javascript window |
</li> |
</li> |
|
<li> |
|
<b><m></b> the inside text is LaTeX, and is |
|
converted to HTML (or MathML) on the fly, if the argument |
|
<i>eval</i> is set to "on" the intervening text will have |
|
a perl var expansion done to it before being converted. |
|
</li> |
|
<li> |
|
<b><randomlabel></b> 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: |
|
<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> |
|
Arguments: |
|
<ul> |
|
<li> |
|
<i>bgimg</i> 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 |
|
</li> |
|
<li> |
|
<i>width</i> the width of the image in pixels |
|
</li> |
|
<li> |
|
<i>height</i> the height of the image in pixels |
|
</li> |
|
<li> |
|
<i>texwidth</i> the width of the image in millimeters |
|
</li> |
|
</ul> |
|
Internal tags: |
|
<ul> |
|
<li> |
|
<b><labelgroup></b> 1 required, multiple |
|
allowed. Declares a group of locations and labels |
|
associated with them. <br />Arguments: |
|
<ul> |
|
<li> |
|
<i>name</i> 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.) |
|
</li> |
|
<li> |
|
<i>type</i> the type of labels in this group, |
|
either 'image' or 'text' |
|
</li> |
|
</ul> |
|
</li> |
|
<li> |
|
<b><location></b> declares a location on the |
|
image that a label should appear at <br />Arguments: |
|
<ul> |
|
<li> |
|
<i>x</i> the x value of the location in pixels |
|
</li> |
|
<li> |
|
<i>y</i> the y value of the location in pixels |
|
</li> |
|
<li> |
|
<i>value</i> a scalar value to associate at this |
|
location (optional) |
|
</li> |
|
</ul> |
|
</li> |
|
<li> |
|
<b><label></b> 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: |
|
<ul> |
|
<li> |
|
<i>description</i> a required field for image |
|
labels, it will be used when setting values in the |
|
hash. |
|
</li> |
|
</ul> |
|
</li> |
|
</ul> |
|
</li> |
</ul> |
</ul> |
</li> |
</li> |
<li> |
<li> |
Scripting |
Scripting |
<p> |
<p> |
These tags allow the document to behave programatically |
These tags allow the document to behave programatically |
</p> |
</p> |
<ul> |
<ul> |
<li> |
<li> |
<b><display></b> the intervening perl script is |
<b><display></b> the intervening perl script is |
evaluated in the safe space and the return value of the |
evaluated in the safe space and the return value of the |
script replaces the entire tag |
script replaces the entire tag |
Line 253
|
Line 464
|
</li> |
</li> |
<li> |
<li> |
<b><randomlist></b> the enclosed tags are parsed in |
<b><randomlist></b> the enclosed tags are parsed in |
a stable random order |
a stable random order, optional argument <i>show</i> |
|
restricts the number of tags indie that are actually |
|
parsed the no more than <i>show</i>. |
</li> |
</li> |
<li> |
<li> |
<b><solved></b> everything inside the tag is |
<b><solved></b> everything inside the tag is |
Line 294
|
Line 507
|
the web editor knows what sections should be edited in a |
the web editor knows what sections should be edited in a |
plain text block on the web. |
plain text block on the web. |
</li> |
</li> |
|
<li> |
|
<b><comment></b> Allows one to comment out sections |
|
of code in a balanced manner, or to provide a comment |
|
description of how a problem works. Only shows up for the |
|
edit target, stripped out for all other targets. |
|
</li> |
</ul> |
</ul> |
</li> |
</li> |
</ul> |
</ul> |
<h2><script> Functions</h2> |
<h2><script> Functions</h2> |
<p> |
<p> |
A list of functions that have been written that are available in |
A list of functions that have been written that are available in |
the Safe space scripting environment inside a problem. The eventual |
the Safe space scripting environment inside a problem. |
goal is to provide all of the functions available in CAPA |
|
</p> |
</p> |
<ul> |
<ul> |
|
<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>random</li> |
<li>tan</li> |
|
<li>atan</li> |
|
<li>acos</li> |
|
<li>asin</li> |
|
<li>log10</li> |
|
<li>pow</li> |
|
<li>ceil</li> |
|
<li>floor</li> |
|
<li>format</li> |
|
<li>map</li> |
|
<li>choose</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</li> |
<li>caparesponse_check_list</li> |
<li>caparesponse_check_list</li> |
</ul> |
</ul> |
|
<!-- Table inserted by H. K. Ng |
|
06/01/2001 |
|
06/12/2001 |
|
--> |
|
<p> |
|
Detailed descriptions of each function and comparison with CAPA. |
|
</p> |
|
|
|
<table border=1> |
|
<tr> |
|
<td valign="top"><b>CAPA Functions</b</td> |
|
<td valign="top"><b>LON-CAPA</b</td> |
|
<td valign="top"><b>Descriptions</b</td> |
|
<td valign="top"><b>Differences (if any)</b</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sin(x), cos(x), tan(x)</td> |
|
<td valign="top">&sin($x), &cos($x), &tan($x)</td> |
|
<td valign="top">Trigonometric functions where x is in radians. $x |
|
can be a pure number, i.e., you can call &sin(3.1415)</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">asin(x), acos(x), atan(x), atan2(y,x)</td> |
|
<td valign="top">&asin($x), &acos($x), &atan($x), &atan2($y,$x)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">log(x), log10(x)</td> |
|
<td valign="top">&log($x), &log10($x)</td> |
|
<td valign="top">Natural and base-10 logarithm. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">exp(x), pow(x,y), sqrt(x)</td> |
|
<td valign="top">&exp($x), &pow($x,$y), &sqrt($x)</td> |
|
<td valign="top">Exponential, power and square root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure numbers</td> |
|
|
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">abs(x), sgn(x)</td> |
|
<td valign="top">&abs($x), &sgn($x)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">erf(x), erfc(x)</td> |
|
<td valign="top">&erf($x), &erfc($x)</td> |
|
<td valign="top">Error function. erf = 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i> erfx(x)</i> = 1.0 - <i>erf(x)</i>. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">ceil(x), floor(x)</td> |
|
<td valign="top">&ceil($x), &floor($x)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">min(...), max(...)</td> |
|
<td valign="top">&min(...), &max(...)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">factorial(n)</td> |
|
<td valign="top">&factorial($n)</td> |
|
<td valign="top">Argument (n) must be an integer else it will round |
|
down. The largest value for n is 170. $n can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">N%M</td> |
|
<td valign="top">$N%$M</td> |
|
|
|
<td valign="top">N and M are integers and returns the remainder (in |
|
integer) of N/M. $N and $M can be pure numbers</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sinh(x), cosh(x), tanh(x)</td> |
|
<td valign="top">&sinh($x), &cosh($x), &tanh($x)</td> |
|
<td valign="top">Hyperbolic functions. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">asinh(x), acosh(x), atanh(x)</td> |
|
<td valign="top">&asinh($x), &acosh($x), &atanh($x)</td> |
|
<td valign="top">Inverse hyperbolic functions. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">/DIS($x,"nn")</td> |
|
<td valign="top">&format($x,"nn")</td> |
|
<td valign="top">Display or format $x as nn where nn is nF or nE and n is an integer.</td> |
|
<td valign="top"> The difference is obvious.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">Not in CAPA</td> |
|
<td valign="top">&prettyprint($x,"nn")</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">roundto(x,n)</td> |
|
<td valign="top">&roundto($x,$n)</td> |
|
<td valign="top">Rounds a real number to n decimal points. $x and |
|
$n can be pure numbers</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">web("a","b","c") or web(a,b,c)</td> |
|
<td valign="top">&web("a","b","c") or &web($a,$b,$c)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">html("a") or html(a)</td> |
|
<td valign="top">&html("a") or &html($a)</td> |
|
<td valign="top">Output only if the output mode chosen is in html |
|
format</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">jn(m,x)</td> |
|
<td valign="top">&j0($x), &j1($x), &jn($m,$x), &jv($y,$x)</td> |
|
<td valign="top">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</td> |
|
<td valign="top">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.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">yn(m,x)</td> |
|
<td valign="top">&y0($x), &y1($x), &yn($m,$x), &yv($y,$x)</td> |
|
<td valign="top">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</td> |
|
<td valign="top">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.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">random(l,u,d)</td> |
|
<td valign="top">&random($l,$u,$d)</td> |
|
<td valign="top">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</td> |
|
<td valign="top">In CAPA, all the 3 arguments must be of the same |
|
type. However, now you can mix the type</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">choose(i,...)</td> |
|
<td valign="top">&choose($i,...)</td> |
|
<td valign="top">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</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">/MAP(seed;w,x,y,z;a,b,c,d)</td> |
|
<td valign="top">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</td> |
|
<td valign="top">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.</td> |
|
<td valign="top">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.</td> |
|
</tr> |
|
|
|
|
|
<tr> |
|
<td valign="top">rmap(seed;a,b,c,d;w,x,y,z)</td> |
|
<td valign="top">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</td> |
|
<td valign="top">The rmap functions does the reverse action of map if the same seed |
|
is used in calling map and rmap. </td> |
|
<td valign="top">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).</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">$a=&xmlparse($string) </td> |
|
<td valign="top">Runs the internal parser over the |
|
argument parsing for display. <b>Warning</b> This will |
|
result in different strings in different targets. Don't use |
|
the results of this function as an answer.</td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">tex(a,b), tex("a","b")</td> |
|
<td valign="top">&tex($a,$b), &tex("a","b")</td> |
|
<td valign="top">Returns a if the output mode is in tex otherwise |
|
returns b</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">var_in_tex(a)</td> |
|
<td valign="top">&var_in_tex($a)</td> |
|
<td valign="top">Equivalent to tex("a","")</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">to_string(x), to_string(x,y)</td> |
|
<td valign="top">&to_string($x), &to_string($x,$y)</td> |
|
<td valign="top">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.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">capa_id(), class(), section(), set(), problem()</td> |
|
<td valign="top">&class(), &section()</td> |
|
<td valign="top">Returns null string, class descriptive name, section |
|
number, set number and null string.</td> |
|
<td valign="top">capa_id(), set() and problem() are no longer used. |
|
Currently, they return a null value.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">name(), student_number()</td> |
|
<td valign="top">&name(), &student_number()</td> |
|
<td valign="top">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.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">open_date(), due_date(), answer_date()</td> |
|
<td valign="top">&open_date(), &due_date(), &answer_date()</td> |
|
<td valign="top">Problem open date, due date and answer date. The |
|
time is also included in 24-hr format.</td> |
|
<td valign="top">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.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">get_seed(), set_seed()</td> |
|
<td valign="top">Not implemented</td> |
|
<td valign="top">Get and set the random seed.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sub_string(a,b,c)</td> |
|
<td valign="top">&sub_string($a,$b,$c) <br>perl substr function. |
|
However, note the differences</td> |
|
<td valign="top">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"</td> |
|
<td valign="top">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 ".</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array[xx]</td> |
|
<td valign="top">@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</td> |
|
<td valign="top">"xx" can be a variable or a calculation.</td> |
|
<td valign="top">In LON-CAPA, an array is defined by @arrayname. |
|
It is not necessary to specify the dimension of the array. </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array_moments(B,A)</td> |
|
<td valign="top">@B=&array_moments(@A)</td> |
|
<td valign="top">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.</td> |
|
<td valign="top">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.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array_max(Name), array_min(Name)</td> |
|
<td valign="top">&min(@Name), &max(@Name)</td> |
|
<td valign="top">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)</td> |
|
<td valign="top">Combined with the min and max functions defined |
|
earlier.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">init_array(Name)</td> |
|
<td valign="top">undef @name</td> |
|
<td valign="top">To destroy the contents of an array, use</td> |
|
<td valign="top">Use perl intrinsic undef function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_normal (return_array,item_cnt,seed,av,std_dev)</td> |
|
<td valign="top">@return_array=&random_normal ($item_cnt,$seed,$av,$std_dev)</td> |
|
<td valign="top">Generate $item_cnt deviates of normal distribution of average $av and |
|
standard deviation $std_dev. The distribution is generated from seed $seed</td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_beta (return_array,item_cnt,seed,aa,bb)</td> |
|
<td valign="top">@return_array=&random_beta ($item_cnt,$seed,$aa,$bb) <br> |
|
NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</td> |
|
<td valign="top">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.</td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_gamma (return_array,item_cnt,seed,a,r)</td> |
|
<td valign="top">@return_array=&random_gamma ($item_cnt,$seed,$a,$r) <br> |
|
NOTE: Both $a and $r MUST be positive.</td> |
|
<td valign="top">Generate $item_cnt deviates of gamma distribution. |
|
The density of gamma is: |
|
($a**$r)/gamma($r) * X**($r-1) * exp(-$a*X).</td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_exponential (return_array,item_cnt,seed,av)</td> |
|
<td valign="top">@return_array=&random_exponential ($item_cnt,$seed,$av) <br> |
|
NOTE: $av MUST be non-negative.</td> |
|
<td valign="top">Generate $item_cnt deviates of exponential distribution. </td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_poisson (return_array,item_cnt,seed,mu)</td> |
|
<td valign="top">@return_array=&random_poisson ($item_cnt,$seed,$mu) <br> |
|
NOTE: $mu MUST be non-negative.</td> |
|
<td valign="top">Generate $item_cnt deviates of poisson distribution. </td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_chi (return_array,item_cnt,seed,df)</td> |
|
<td valign="top">@return_array=&random_chi ($item_cnt,$seed,$df) <br> |
|
NOTE: $df MUST be positive.</td> |
|
<td valign="top">Generate $item_cnt deviates of chi_square distribution with $df |
|
degrees of freedom. </td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</td> |
|
<td valign="top">@return_array=&random_noncentral_chi ($item_cnt,$seed,$df,$nonc) <br> |
|
NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</td> |
|
<td valign="top">Generate $item_cnt deviates of noncentral_chi_square |
|
distribution with $df |
|
degrees of freedom and noncentrality parameter $nonc. </td> |
|
<td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA |
|
the results are set equal to the function.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@return_array=&random_f ($item_cnt,$seed,$dfn,$dfd) <br> |
|
NOTE: Both $dfn and $dfd MUST be positive.</td> |
|
<td valign="top">Generate $item_cnt deviates of F (variance ratio) distribution with |
|
degrees of freedom $dfn (numerator) and $dfd (denominator). </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">Generate $item_cnt deviates of noncentral F (variance ratio) |
|
distribution with degrees of freedom $dfn (numerator) and $dfd (denominator). |
|
$nonc is the noncentrality parameter. </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT DOCUMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">Generate $item_cnt deviates of multivariate_normal distribution with |
|
mean vector @mean and variance-covariance matrix. </td> |
|
<td valign="top">Note the backslash before the @mean and @covar arrays.</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">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.</td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@return_array=&random_permutation ($item_cnt,@array) </td> |
|
<td valign="top">Returns @array randomly permuted.</td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@return_array=&random_uniform ($item_cnt,$seed,$low,$high) <br> |
|
NOTE: $low must be less than or equal to $high.</td> |
|
<td valign="top">Generate $item_cnt deviates from a uniform distribution. </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">Generate $item_cnt deviates from a uniform distribution in integers. </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">Generate $item_cnt deviates from the binomial distribution with |
|
$nt trials and the probabilty of an event in each trial is $p. </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
<tr> |
|
<td valign="top">NOT IMPLEMENTED IN CAPA</td> |
|
<td valign="top">@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.</td> |
|
<td valign="top">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. </td> |
|
<td valign="top">New to LON-CAPA</td> |
|
</tr> |
|
</table> |
|
<!-- insertion ends --> |
|
|
<h2><script> Variables</h2> |
<h2><script> Variables</h2> |
<ul> |
<ul> |
<li> |
<li> |
Line 327
|
Line 1068
|
</li> |
</li> |
<li> |
<li> |
$external::part - set to the <i>id</i> of the current problem |
$external::part - set to the <i>id</i> of the current problem |
<part>; zero if there are now <part> |
<part>; zero if there are no <part> |
</li> |
</li> |
<li> |
<li> |
$external::gradestatus - set to the value of the current |
$external::gradestatus - set to the value of the current |
Line 335
|
Line 1076
|
</li> |
</li> |
<li> |
<li> |
$external::datestatus - set to the current status of the clock |
$external::datestatus - set to the current status of the clock |
either CLOSED, CAN_ANSWER, CANNOT_ANSWER, or SHOW_ANSWER |
either CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT |
</li> |
</li> |
<li> |
<li> |
$external::randomseed - set to the number that was used to |
$external::randomseed - set to the number that was used to |
seed the random number generator |
seed the random number generator |
</li> |
</li> |
<li>$pi - set to PI </li> |
<li>$pi - set to PI </li> |
|
<li>$rad2deg - converts radians to degrees </li> |
|
<li>$deg2rad - converts degrees to radians </li> |
|
</ul> |
|
|
|
<h2> Form internals </h2> |
|
<p> Form elements used for homework editing/response </p> |
|
<p> the form is named lonhomework </p> |
|
<h3> Viewing a problem (either CSTR or RES space)</h3> |
|
<ul> |
|
<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> Editing a problem (Edit mode)</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> |
|
<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 |
</ul> |
</ul> |
|
|
<hr> |
<hr> |
<address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address> |
<address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address> |
<!-- Created: Thu May 17 15:05:35 EDT 2001 --> |
<!-- Created: Thu May 17 15:05:35 EDT 2001 --> |
<!-- hhmts start --> |
<!-- hhmts start --> |
Last modified: Fri May 18 21:29:39 EDT 2001 |
Last modified: Fri Jul 12 18:59:29 EDT 2002 |
<!-- hhmts end --> |
<!-- hhmts end --> |
</body> |
</body> |
</html> |
</html> |