Annotation of doc/gutshtml/SessionOn2.html, revision 1.1
1.1 ! www 1: <html>
! 2: <head>
! 3: <meta name=Title
! 4: content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
! 5: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
! 6: <link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
! 7: <title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
! 8: <style><!--
! 9: .MsoHeader
! 10: {tab-stops:center 3.0in right 6.0in;
! 11: font-size:10.0pt;
! 12: font-family:"Times New Roman";}
! 13: .H5
! 14: {font-size:10.0pt;
! 15: font-family:"Times New Roman";
! 16: layout-grid-mode:line;
! 17: font-weight:bold;}
! 18: .Section1
! 19: {page:Section1;}
! 20: .Section2
! 21: {page:Section2;}
! 22: -->
! 23: </style>
! 24: </head>
! 25: <body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
! 26: <div class=Section1>
! 27: <h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
! 28: <h3><a name="_Toc421867127">Tags</a></h3>
! 29: <ul type=disc>
! 30: <li><b>Response tags </b></li>
! 31: </ul>
! 32: <p>Arguments for all response tags </p>
! 33: <ul type=disc>
! 34: <ul type=circle>
! 35: <li><i>ID</i><span style='font-style:
! 36: normal'>, if this isn't set it will be set during the publication step.
! 37: It is used to assign parameters names in a way that can be tracked if
! 38: an instructor modifies things by hand. </span></li>
! 39: <li><i>name</i><span
! 40: style='font-style:normal'> optional, if set, it will be used by the resource
! 41: assembly tool when one is modifying parameters. </span></li>
! 42: </ul>
! 43: </ul>
! 44: <p>Implemented response tags </p>
! 45: <ul type=disc>
! 46: <ul type=circle>
! 47: <li><b><responseparam></b><span
! 48: style='font-weight:normal'> if it appears it should be inside of a <*response>
! 49: tag, defines an externally adjustable parameter for this question. Arguments:
! 50: </span></li>
! 51: <ul type=square>
! 52: <li><i>default</i><span
! 53: style='font-style:normal'> required, specifies a default value for the
! 54: parameter </span></li>
! 55: <li><i>name</i><span
! 56: style='font-style:normal'> required, specifies an internal name for the
! 57: parameter </span></li>
! 58: <li><i>type</i><span
! 59: style='font-style:normal'> required specifies the type of parameter, one
! 60: of "tolerance", "int", "float", "string",
! 61: "date" (configuration of paramters is handled by lonparmset.pm
! 62: and parameter.html) </span></li>
! 63: <li><i>description</i><span
! 64: style='font-style:normal'> a string describing the parameter, this is what
! 65: is used to talk about a parameter outside of a problem </span></li>
! 66: </ul>
! 67: <li><b><parameter></b><span
! 68: style='font-weight:normal'> exactly the same as <responseparam> currently,
! 69: but should not appear inside of a <*response> </span></li>
! 70: <li><b><numericalresponse></b><span
! 71: style='font-weight:normal'> implements a numerical answer, it needs an internal
! 72: </span><b><textline></b><span style='font-weight:normal'> for the
! 73: response to go in. It checks all styles of numerical supported in CAPA.
! 74: Possible args are: </span></li>
! 75: <ul type=square>
! 76: <li><i>answer</i><span
! 77: style='font-style:normal'> required, specifies the correct answer, may
! 78: be either a perl list or scalar</span></li>
! 79: <li><i>units</i><span
! 80: style='font-style:normal'> optional, specifies unit of correct answer,
! 81: CAPA style</span></li>
! 82: </ul>
! 83: <li><b><stringresponse></b><span
! 84: style='font-weight:normal'> implements a string answer, it needs an internal
! 85: </span><b><textline></b><span style='font-weight:normal'> for the
! 86: response to go in. It can check the string for either case or order. </span></li>
! 87: <ul type=square>
! 88: <li><i>answer</i><span
! 89: style='font-style:normal'> required, specifies the correct answer, may
! 90: be either a perl list or scalar</span></li>
! 91: <li><i>type</i><span
! 92: style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
! 93: <ul type=square>
! 94: <li>cs - case senesitive, order important</li>
! 95: <li>ci - case insenesitive, order important</li>
! 96: <li>mc - case insenesitive, order unimportant</li>
! 97: </ul>
! 98: </ul>
! 99: <li><b><essayresponse></b><span
! 100: style='font-weight:normal'> implements a ungraded large text response, it
! 101: need an internal </span><b><textarea></b><span style='font-weight:
! 102: normal'> for the response to go in. </span></li>
! 103: <li><b><imageresponse></b><span
! 104: style='font-weight:normal'> implements a image click style image submission,
! 105: uses the foil structure tags <a href="#foil">below</a>. Additional tags
! 106: that should appear in a <foil> are: </span></li>
! 107: <ul type=square>
! 108: <li><b><image></b><span
! 109: style='font-weight:normal'> required, the contained text specifies a published
! 110: graphical resource that is the image used, should only appear once per
! 111: foil</span></li>
! 112: <li><b><rectangle></b><span
! 113: style='font-weight:normal'> required, the contained text specifies a rectangular
! 114: area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
! 115: <li><b><text></b><span
! 116: style='font-weight:normal'> required, the contained text is printed on
! 117: top of the image.</span></li>
! 118: </ul>
! 119: <li><b><optionresponse></b><span
! 120: style='font-weight:normal'> implements a "select from these choices"
! 121: style question, the choices are specified by the instructor, it uses the
! 122: foil structure tags <a href="#foil">below</a> with this additional args:
! 123: </span></li>
! 124: <ul type=square>
! 125: <li><b><foilgroup></b><span
! 126: style='font-weight:normal'> is required to have <i>options</i></span> which
! 127: should be a perl list of possible options for the student. </li>
! 128: </ul>
! 129: <li><b><radiobuttonresponse></b><span
! 130: style='font-weight:normal'> implements a true / false style question with
! 131: 1 correct answer.it uses the foil structure tags <a href="#foil">below</a>
! 132: but the <i>value</i></span> of a <foil>can only be "true"
! 133: or "false" or "unused" </li>
! 134: <li><b><dataresponse></b><span
! 135: style='font-weight:normal'> implements a straight data storage entry idea,
! 136: needs and interveing input tag like <textline> to work correctly.<br>
! 137: Arguments: </span></li>
! 138: <ul type=square>
! 139: <li><i>name</i><span
! 140: style='font-style:normal'> internal name for the value, it will have the
! 141: part id and respose id added on to it </span></li>
! 142: <li><i>type</i><span
! 143: style='font-style:normal'> type of data stored in this response field,
! 144: should be one of the types supported by parameter.html </span></li>
! 145: <li><i>display</i><span
! 146: style='font-style:normal'> a string that will be used to describe the field
! 147: when interfacing with humans </span></li>
! 148: </ul>
! 149: </ul>
! 150: </ul>
! 151: <p> <span style='font-size:10.0pt;
! 152: font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>
! 153: </span></span> <b><externalresponse></b><span style='font-weight:
! 154: normal'> implements the ability to have an external program grade a response,
! 155: expects either a <textline> or <textfield> inside the tag. </span></p>
! 156: <p>Arguments: </p>
! 157: <ul type=disc>
! 158: <ul type=circle>
! 159: <ul type=square>
! 160: <li><i>url</i><span
! 161: style='font-style:normal'> the url to submit the answer and form to, does
! 162: not need to be a LON-CAPA machine. </span></li>
! 163: <li><i>answer</i><span
! 164: style='font-style:normal'> a string or scalar variable that can encode
! 165: something that should encode the correct answer, in some cases this
! 166: may be nothing. </span></li>
! 167: <li><i>form</i><span
! 168: style='font-style:normal'> a hash variable name that will be submitted
! 169: to the remote site as a HTTP form. </span></li>
! 170: </ul>
! 171: </ul>
! 172: </ul>
! 173: <p>The response of the remote server needs to be in XML as follows. </p>
! 174: <pre> <loncapagrade> <awardetail> CORRECT </awardetail> <message> A message to be shown to the students </message> </loncapagrade> </pre>
! 175: <ul type=disc>
! 176: <ul type=circle>
! 177: <ul type=square>
! 178: <li><b><loncapagrade></b><span
! 179: style='font-weight:normal'> no arguments but must surround the response.
! 180: </span></li>
! 181: <li><b><awardetail></b><span
! 182: style='font-weight:normal'> required inner tag, the response inside must
! 183: be one of the detailed responses that appears in the data storage documentation
! 184: (CVS:loncapa/doce/homework/datastorage) </span></li>
! 185: <li><b><message></b><span
! 186: style='font-weight:normal'> optional message to have shown to the student
! 187: </span></li>
! 188: </ul>
! 189: </ul>
! 190: </ul>
! 191: <ul type=disc>
! 192: <li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
! 193: </ul>
! 194: <p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'>
! 195: that controls the maximum number of total foils to show. </span></p>
! 196: <ul type=disc>
! 197: <ul type=circle>
! 198: <li><b><foilgroup></b><span
! 199: style='font-weight:normal'> required, must be the tag that surrounds all
! 200: foil definitions </span></li>
! 201: <li><b><foil></b><span
! 202: style='font-weight:normal'> required, all data inside is a possible foil
! 203: </span></li>
! 204: <li><b><conceptgroup></b><span
! 205: style='font-weight:normal'> optional, surrounds a collection of <foil>,
! 206: when a problem is displayed only one of the contained <foil>is selected
! 207: for display. It receives one required argument <i>concept</i></span>.
! 208: </li>
! 209: </ul>
! 210: <li><b>Hint structure </b></li>
! 211: </ul>
! 212: <p>All of these tags must appear inside a <b><*response></b><span
! 213: style='font-weight:normal'> tag. </span></p>
! 214: <ul type=disc>
! 215: <ul type=circle>
! 216: <li><b><hintgroup></b><span
! 217: style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
! 218: <li><b><hintpart></b><span
! 219: style='font-weight:normal'> required, Tag to implement conditional hints.
! 220: It has a required argument <i>on</i></span>. When a <*hint> tag
! 221: named the same as the value the on attribute evaluates to be correct the
! 222: <hintpart> will show. If no other <hintpart> are to show then
! 223: all hintparts with a <i>on</i><span style='font-style:normal'> of "default"
! 224: will show </span></li>
! 225: <li><b><numericalhint></b><span
! 226: style='font-weight:normal'> has all the arguments that <numericalresponse>,
! 227: does and the required attribute <i>name</i></span> which should be set
! 228: to the value of which <hintpart> will be shown. </li>
! 229: </ul>
! 230: <li><b>Input Tags </b></li>
! 231: </ul>
! 232: <p>This group of tags implement a mechanism for getting data for students, they
! 233: will usually be used by a <*response>. </p>
! 234: <ul type=disc>
! 235: <ul type=circle>
! 236: <li><b><textarea></b><span
! 237: style='font-weight:normal'> creates a Large text input box, If data appears
! 238: between the start and end tags, the data will appear i the textarea if
! 239: the student has not yet made a submission. Additionally it takes two arguments
! 240: <i>rows</i></span> and <i>cols</i><span
! 241: style='font-style:normal'> which control the height and width of the area
! 242: respectively. It defaults to 10 and 80. </span></li>
! 243: <li><b><textline></b><span
! 244: style='font-weight:normal'> creates a single line of input element, it accepts
! 245: 1 argument <i>size</i></span> which controls the width on the textline,
! 246: it defaults to 20. </li>
! 247: </ul>
! 248: <li><b>Output Tags </b></li>
! 249: </ul>
! 250: <p>This group of tags generate useful pieces of output. </p>
! 251: <ul type=disc>
! 252: <ul type=circle>
! 253: <li><b><standalone></b><span
! 254: style='font-weight:normal'> everything in between the start and end tag
! 255: is shown only on the web, and only if the resource is not part of a course.
! 256: </span></li>
! 257: <li><b><displayduedate></b><span
! 258: style='font-weight:normal'> this will insert the current duedate if one
! 259: is set into the document. It is generated to be inside a table of 1x1
! 260: elements </span></li>
! 261: <li><b><displaytitle></b><span
! 262: style='font-weight:normal'> this will insert the title of the problem from
! 263: the metadata of the problem </span></li>
! 264: <li><b><window></b><span
! 265: style='font-weight:normal'> the text in between is put in a popup javascript
! 266: window </span></li>
! 267: <li><b><m></b><span
! 268: style='font-weight:normal'> the inside text is LaTeX, and is converted to
! 269: HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set
! 270: to "on" the intervening text will have a perl var expansion
! 271: done to it before being converted. </li>
! 272: <li><b><randomlabel></b><span
! 273: style='font-weight:normal'> shows a specified image with images or text
! 274: labels randomly assigned to a set of specific locations, those locations
! 275: may also have values assigned to them. There is a hash generated conating
! 276: the mapping of labels to locations, labels to values, and locations to
! 277: values. Example: </span></li>
! 278: </ul>
! 279: </ul>
! 280: <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>
! 281: <p>Arguments: </p>
! 282: <ul type=disc>
! 283: <ul type=circle>
! 284: <ul type=square>
! 285: <li><i>bgimg</i><span
! 286: style='font-style:normal'> either a fully qualified URL for an external
! 287: image, or a loncapa resource, it supports relative references (../images/apicture.gif),
! 288: the image must either be a GIF or JPEG </span></li>
! 289: <li><i>width</i><span
! 290: style='font-style:normal'> the width of the image in pixels </span></li>
! 291: <li><i>height</i><span
! 292: style='font-style:normal'> the height of the image in pixels </span></li>
! 293: <li><i>texwidth</i><span
! 294: style='font-style:normal'> the width of the image in millimeters </span></li>
! 295: </ul>
! 296: </ul>
! 297: </ul>
! 298: <p>Internal tags: </p>
! 299: <ul type=disc>
! 300: <ul type=circle>
! 301: <ul type=square>
! 302: <li><b><labelgroup></b><span
! 303: style='font-weight:normal'> 1 required, multiple allowed. Declares a group
! 304: of locations and labels associated with them. <br>
! 305: Arguments: </span></li>
! 306: <ul type=square>
! 307: <li><i>name</i><span
! 308: style='font-style:normal'> this is the name of the group, a hash with
! 309: this name will be generated holding the mappings for later use in
! 310: the problem. For each location a value will be set for which label
! 311: is there, (EX. $hash{'1'}="TEXT-2"). For locations with
! 312: values the hash will contain 2 items, a location to value mapping
! 313: ($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10).
! 314: For all image style of labels there will also be a label description
! 315: to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations
! 316: will be set to the total number of locations that exist. (Note that
! 317: locations and labels start counting from 1.) </span></li>
! 318: <li><i>type</i><span
! 319: style='font-style:normal'> the type of labels in this group, either 'image'
! 320: or 'text' </span></li>
! 321: </ul>
! 322: <li><b><location></b><span
! 323: style='font-weight:normal'> declares a location on the image that a label
! 324: should appear at <br>
! 325: Arguments: </span></li>
! 326: <ul type=square>
! 327: <li><i>x</i><span
! 328: style='font-style:normal'> the x value of the location in pixels </span></li>
! 329: <li><i>y</i><span
! 330: style='font-style:normal'> the y value of the location in pixels </span></li>
! 331: <li><i>value</i><span
! 332: style='font-style:normal'> a scalar value to associate at this location
! 333: (optional) </span></li>
! 334: </ul>
! 335: <li><b><label></b><span
! 336: style='font-weight:normal'> declaration of a label, if this is a text type
! 337: labelgroup the internal text should be the text of the label (HTML is
! 338: not currently supported), if this is an image type of label the internal
! 339: text must be a LON-CAPA resource specification, and the description
! 340: filed must be set. <br>
! 341: Arguments: </span></li>
! 342: <ul type=square>
! 343: <li><i>description</i><span
! 344: style='font-style:normal'> a required field for image labels, it will
! 345: be used when setting values in the hash. </span></li>
! 346: </ul>
! 347: </ul>
! 348: </ul>
! 349: <li><b>Scripting </b></li>
! 350: </ul>
! 351: <p>These tags allow the document to behave programatically </p>
! 352: <ul type=disc>
! 353: <ul type=circle>
! 354: <li><b><display></b><span
! 355: style='font-weight:normal'> the intervening perl script is evaluated in
! 356: the safe space and the return value of the script replaces the entire
! 357: tag </span></li>
! 358: <li><b><import></b><span
! 359: style='font-weight:normal'> causes the parse to read in the file named in
! 360: the body of the tag and parse it as if the entire text of the file had
! 361: existed at location of the tag </span></li>
! 362: <li><b><parserlib></b><span
! 363: style='font-weight:normal'> the enclosed filename contains definitions for
! 364: new tags </span></li>
! 365: <li><b><script></b><span
! 366: style='font-weight:normal'> if the argument <i>type</i></span> is set to
! 367: "loncapa/perl" the enclosed data is a perl script which is evaluated
! 368: inside the perl Safe space. The return value of the script is ignored.
! 369: </li>
! 370: <li><b><scriptlib></b><span
! 371: style='font-weight:normal'> the enclosed filename contains perl code to
! 372: run in the safe space </span></li>
! 373: <li><b><block></b><span
! 374: style='font-weight:normal'> has a required argument <i>condition</i></span>
! 375: that is evaluated, it the condition is true everything inside the tag
! 376: is evaluated, if it is false everything inside the block tag is skipped
! 377: </li>
! 378: <li><b><notsolved></b><span
! 379: style='font-weight:normal'> everything inside the tag is skipped if the
! 380: problem is "solved" </span></li>
! 381: <li><b><postanswerdate></b><span
! 382: style='font-weight:normal'> everything inside the tag is skipped if the
! 383: problem is before the answer date </span></li>
! 384: <li><b><preduedate></b><span
! 385: style='font-weight:normal'> everything inside the tag is skipped if the
! 386: problem is after the due date </span></li>
! 387: <li><b><randomlist></b><span
! 388: style='font-weight:normal'> the enclosed tags are parsed in a stable random
! 389: order, optional argument <i>show</i></span> restricts the number of tags
! 390: indie that are actually parsed the no more than <i>show</i><span
! 391: style='font-style:normal'>. </span></li>
! 392: <li><b><solved></b><span
! 393: style='font-weight:normal'> everything inside the tag is skipped if the
! 394: problem is "not solved" </span></li>
! 395: <li><b><while></b><span
! 396: style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span>
! 397: is a perl scriptlet that when evaluated results in a true or false value,
! 398: on true the entirety of the text between the whiles is parsed. The condition
! 399: is tested again, etc. If false it goes to the next node in the parse.
! 400: </li>
! 401: </ul>
! 402: <li><b>Structure Tags </b></li>
! 403: </ul>
! 404: <p>These tags give the problem a structure and take care of the recording of
! 405: data and giving the student messages. </p>
! 406: <ul type=disc>
! 407: <ul type=circle>
! 408: <li><b><problem></b><span
! 409: style='font-weight:normal'> must be the first tag in the file, this tag
! 410: sets up the header of the webpage and generates the submit buttons, it
! 411: also handles due dates properly </span></li>
! 412: <li><b><part></b><span
! 413: style='font-weight:normal'> must be below <problem> if it is going
! 414: to be used. It does many of the same tasks as <problem> but allows
! 415: multiple separate problems to exist in a single file. </span></li>
! 416: <li><b><startouttext><endouttext></b><span
! 417: style='font-weight:normal'> these tags are somewhat special, they must have
! 418: no internal text and occur in pairs. Their use is to mark up the problem
! 419: so the web editor knows what sections should be edited in a plain text
! 420: block on the web. </span></li>
! 421: </ul>
! 422: </ul>
! 423: <h3><a name="_Toc421867128"><script> Functions</a></h3>
! 424: <p>A list of functions that have been written that are available in the Safe
! 425: space scripting environment inside a problem. </p>
! 426: <ul type=disc>
! 427: <li>sin(x), cos(x), tan(x)</li>
! 428: <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
! 429: <li>log(x), log10(x)</li>
! 430: <li>exp(), pow(x,y), sqrt(x)</li>
! 431: <li>abs(x), sgn(x)</li>
! 432: <li>erf(x), erfc(x)</li>
! 433: <li>ceil(x), floor(x)</li>
! 434: <li>min(...), max(...)</li>
! 435: <li>factorial(n)</li>
! 436: <li>N%M</li>
! 437: <li>sinh(x), cosh(x), tanh(x)</li>
! 438: <li>asinh(x), acosh(x), atanh(x)</li>
! 439: <li>roundto(x,n)</li>
! 440: <li>web("a","b","c") or web(a,b,c)</li>
! 441: <li>html("a") or html(a)</li>
! 442: <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
! 443: <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
! 444: <li>random</li>
! 445: <li>choose</li>
! 446: <li>tex("a","b") or tex(a,b)</li>
! 447: <li>var_in_tex(a)</li>
! 448: <li>to_string(x), to_string(x,y)</li>
! 449: <li>class(), section()</li>
! 450: <li>name(), student_number()</li>
! 451: <li>open_date(), due_date(), answer_date()</li>
! 452: <li>sub_string()</li>
! 453: <li>array_moments(array)</li>
! 454: <li>format(x,y),prettyprint(x,y)</li>
! 455: <li>map(...)</li>
! 456: <li>caparesponse_check</li>
! 457: <li>caparesponse_check_list</li>
! 458: </ul>
! 459: <h3><a name="_Toc421867129">Detailed descriptions of each function and comparison
! 460: with CAPA</a></h3>
! 461: <table border=1 cellpadding=0>
! 462: <tr>
! 463: <td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
! 464: <td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
! 465: <td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
! 466: <td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
! 467: </tr>
! 468: <tr>
! 469: <td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
! 470: <td width=134 valign=top class="Normal"> <p>&sin($x), &cos($x),
! 471: &tan($x)</p></td>
! 472: <td width=147 valign=top class="Normal"> <p>Trigonometric functions where
! 473: x is in radians. $x can be a pure number, i.e., you can call &sin(3.1415)</p></td>
! 474: <td width=101 valign=top class="Normal"> </td>
! 475: </tr>
! 476: <tr>
! 477: <td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
! 478: <td width=134 valign=top class="Normal"> <p>&asin($x), &acos($x),
! 479: &atan($x), &atan2($y,$x)</p></td>
! 480: <td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions.
! 481: Return value is in radians. For asin and acos the value of x must be
! 482: between -1 and 1. The atan2 returns a value between -pi and pi the sign
! 483: of which is determined by y. $x and $y can be pure numbers</p></td>
! 484: <td width=101 valign=top class="Normal"> </td>
! 485: </tr>
! 486: <tr>
! 487: <td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
! 488: <td width=134 valign=top class="Normal"> <p>&log($x), &log10($x)</p></td>
! 489: <td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm.
! 490: $x can be a pure number</p></td>
! 491: <td width=101 valign=top class="Normal"> </td>
! 492: </tr>
! 493: <tr>
! 494: <td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
! 495: <td width=134 valign=top class="Normal"> <p>&exp($x), &pow($x,$y),
! 496: &sqrt($x)</p></td>
! 497: <td width=147 valign=top class="Normal"> <p>Exponential, power and square
! 498: root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure
! 499: numbers</p></td>
! 500: <td width=101 valign=top class="Normal"> </td>
! 501: </tr>
! 502: <tr>
! 503: <td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
! 504: <td width=134 valign=top class="Normal"> <p>&abs($x), &sgn($x)</p></td>
! 505: <td width=147 valign=top class="Normal"> <p>Abs takes the absolute value
! 506: of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For
! 507: x>0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x<0, sgn(x) = -1.
! 508: $x can be a pure number</p></td>
! 509: <td width=101 valign=top class="Normal"> </td>
! 510: </tr>
! 511: <tr>
! 512: <td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
! 513: <td width=134 valign=top class="Normal"> <p>&erf($x), &erfc($x)</p></td>
! 514: <td width=147 valign=top class="Normal"> <p>Error function. erf =
! 515: 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'>
! 516: = 1.0 - </span><i>erf(x)</i><span
! 517: style='font-style:normal'>. $x can be a pure number</span></p></td>
! 518: <td width=101 valign=top class="Normal"> </td>
! 519: </tr>
! 520: <tr>
! 521: <td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
! 522: <td width=134 valign=top class="Normal"> <p>&ceil($x), &floor($x)</p></td>
! 523: <td width=147 valign=top class="Normal"> <p>Ceil function returns an integer
! 524: rounded up whereas floor function returns and integer rounded down.
! 525: If x is an integer than it returns the value of the integer. $x can
! 526: be a pure number</p></td>
! 527: <td width=101 valign=top class="Normal"> </td>
! 528: </tr>
! 529: <tr>
! 530: <td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
! 531: <td width=134 valign=top class="Normal"> <p>&min(...), &max(...)</p></td>
! 532: <td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum
! 533: value of a list of arguments if the arguments are numbers. If the arguments
! 534: are strings then it returns a string sorted according to the ASCII codes</p></td>
! 535: <td width=101 valign=top class="Normal"> </td>
! 536: </tr>
! 537: <tr>
! 538: <td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
! 539: <td width=134 valign=top class="Normal"> <p>&factorial($n)</p></td>
! 540: <td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer
! 541: else it will round down. The largest value for n is 170. $n can be a
! 542: pure number</p></td>
! 543: <td width=101 valign=top class="Normal"> </td>
! 544: </tr>
! 545: <tr>
! 546: <td width=131 valign=top class="Normal"> <p>N%M</p></td>
! 547: <td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
! 548: <td width=147 valign=top class="Normal"> <p>N and M are integers and returns
! 549: the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
! 550: <td width=101 valign=top class="Normal"> </td>
! 551: </tr>
! 552: <tr>
! 553: <td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
! 554: <td width=134 valign=top class="Normal"> <p>&sinh($x), &cosh($x),
! 555: &tanh($x)</p></td>
! 556: <td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can
! 557: be a pure number</p></td>
! 558: <td width=101 valign=top class="Normal"> </td>
! 559: </tr>
! 560: <tr>
! 561: <td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
! 562: <td width=134 valign=top class="Normal"> <p>&asinh($x), &acosh($x),
! 563: &atanh($x)</p></td>
! 564: <td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions.
! 565: $x can be a pure number</p></td>
! 566: <td width=101 valign=top class="Normal"> </td>
! 567: </tr>
! 568: <tr>
! 569: <td width=131 valign=top class="Normal"> <p>/DIS($x,"nn")</p></td>
! 570: <td width=134 valign=top class="Normal"> <p>&format($x,"nn")</p></td>
! 571: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
! 572: nn is nF or nE and n is an integer.</p></td>
! 573: <td width=101 valign=top class="Normal"> <p> The difference is obvious.</p></td>
! 574: </tr>
! 575: <tr>
! 576: <td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
! 577: <td width=134 valign=top class="Normal"> <p>&prettyprint($x,"nn")</p></td>
! 578: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
! 579: nn is nF or nE and n is an integer. In E mode it will attempt to generate
! 580: a pretty x10^3 rather than a E3 following the number</p></td>
! 581: <td width=101 valign=top class="Normal"> </td>
! 582: </tr>
! 583: <tr>
! 584: <td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
! 585: <td width=134 valign=top class="Normal"> <p>&roundto($x,$n)</p></td>
! 586: <td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal
! 587: points. $x and $n can be pure numbers</p></td>
! 588: <td width=101 valign=top class="Normal"> </td>
! 589: </tr>
! 590: <tr>
! 591: <td width=131 valign=top class="Normal"> <p>web("a","b","c")
! 592: or web(a,b,c)</p></td>
! 593: <td width=134 valign=top class="Normal"> <p>&web("a","b","c")
! 594: or &web($a,$b,$c)</p></td>
! 595: <td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending
! 596: on the output medium. a is for plain ASCII, b for tex output and c for
! 597: html output</p></td>
! 598: <td width=101 valign=top class="Normal"> </td>
! 599: </tr>
! 600: <tr>
! 601: <td width=131 valign=top class="Normal"> <p>html("a") or html(a)</p></td>
! 602: <td width=134 valign=top class="Normal"> <p>&html("a") or
! 603: &html($a)</p></td>
! 604: <td width=147 valign=top class="Normal"> <p>Output only if the output mode
! 605: chosen is in html format</p></td>
! 606: <td width=101 valign=top class="Normal"> </td>
! 607: </tr>
! 608: <tr>
! 609: <td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
! 610: <td width=134 valign=top class="Normal"> <p>&j0($x), &j1($x), &jn($m,$x),
! 611: &jv($y,$x)</p></td>
! 612: <td width=147 valign=top class="Normal"> <p>Bessel functions of the first
! 613: kind with orders 0, 1 and m respectively. For jn(m,x), m must be an
! 614: integer whereas for jv(y,x), y is real. $x can be a pure number. $m
! 615: must be an integer and can be a pure integer number. $y can be a pure
! 616: real number</p></td>
! 617: <td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained
! 618: in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x)
! 619: is new to LON-CAPA.</p></td>
! 620: </tr>
! 621: <tr>
! 622: <td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
! 623: <td width=134 valign=top class="Normal"> <p>&y0($x), &y1($x), &yn($m,$x),
! 624: &yv($y,$x)</p></td>
! 625: <td width=147 valign=top class="Normal"> <p>Bessel functions of the second
! 626: kind with orders 0, 1 and m respectively. For yn(m,x), m must be an
! 627: integer whereas for yv(y,x), y is real. $x can be a pure number. $m
! 628: must be an integer and can be a pure integer number. $y can be a pure
! 629: real number</p></td>
! 630: <td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained
! 631: in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x)
! 632: is new to LON-CAPA.</p></td>
! 633: </tr>
! 634: <tr>
! 635: <td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
! 636: <td width=134 valign=top class="Normal"> <p>&random($l,$u,$d)</p></td>
! 637: <td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed
! 638: random number between the lower bound, l and upper bound, u in steps
! 639: of d. $l, $u and $d can be pure numbers</p></td>
! 640: <td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments
! 641: must be of the same type. However, now you can mix the type</p></td>
! 642: </tr>
! 643: <tr>
! 644: <td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
! 645: <td width=134 valign=top class="Normal"> <p>&choose($i,...)</p></td>
! 646: <td width=147 valign=top class="Normal"> <p>Choose the ith item from the
! 647: argument list. i must be an integer greater than 0 and the value of
! 648: i should not exceed the number of items. $i can be a pure integer</p></td>
! 649: <td width=101 valign=top class="Normal"> </td>
! 650: </tr>
! 651: <tr>
! 652: <td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
! 653: <td width=134 valign=top class="Normal"> <p>Option 1 - &map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
! 654: or <br>
! 655: Option 2 - &map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
! 656: Option 3 - @mappedArray = &map($seed,[$a,$b,$c,$d]) <br>
! 657: Option 4 - ($w,$x,$y,$z) = &map($seed,\@a) <br>
! 658: where $a='A'<br>
! 659: $b='B'<br>
! 660: $c='B'<br>
! 661: $d='B'<br>
! 662: $w, $x, $y, and $z are variables</p></td>
! 663: <td width=147 valign=top class="Normal"> <p>Assigns to the variables $w,
! 664: $x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The
! 665: precise value for $w .. depends on the seed. (Option 1 of calling map).
! 666: In option 2, the values of $a, $b .. are mapped into the array, @mappedArray.
! 667: The two options illustrate the different grouping. Options 3 and 4 give
! 668: a consistent way (with other functions) of mapping the items. For each
! 669: option, the group can be passed as an array, for example, [$a,$b,$c,$d]
! 670: => \@a.</p></td>
! 671: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
! 672: into three groups separated by a semicolon ;. In LON-CAPA, the separation
! 673: is done by using [] brackets or using an array @a. Note the backslash
! 674: (\) before the arguments in the second and third groups.</p></td>
! 675: </tr>
! 676: <tr>
! 677: <td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
! 678: <td width=134 valign=top class="Normal"> <p>Option 1 - &rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
! 679: or <br>
! 680: Option 2 - &rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
! 681: Option 3 - @rmapped_array = &rmap($seed,[$a,$b,$c,$d]) <br>
! 682: Option 4 - ($w,$x,$y,$z) = &rmap($seed,\@a) <br>
! 683: where $a='A'<br>
! 684: $b='B'<br>
! 685: $c='B'<br>
! 686: $d='B'<br>
! 687: $w, $x, $y, and $z are variables</p></td>
! 688: <td width=147 valign=top class="Normal"> <p>The rmap functions does the
! 689: reverse action of map if the same seed is used in calling map and rmap.
! 690: </p></td>
! 691: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
! 692: into three groups separated by a semicolon ;. In LON-CAPA, the separation
! 693: is done by using [] brackets (with create an unamed vector reference)
! 694: or using an array @a. Note the backslash (\) before the arguments in
! 695: the second and third groups (Which cause Perl to send to variable locations
! 696: rather than the variable values, similar to a C pointer).</p></td>
! 697: </tr>
! 698: <tr>
! 699: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 700: <td width=134 valign=top class="Normal"> <p>$a=&xmlparse($string) </p></td>
! 701: <td width=147 valign=top class="Normal"> <p>Runs the internal parser over
! 702: the argument parsing for display. <b>Warning</b><span style='font-weight:normal'>
! 703: This will result in different strings in different targets. Don't use
! 704: the results of this function as an answer.</span></p></td>
! 705: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 706: </tr>
! 707: <tr>
! 708: <td width=131 valign=top class="Normal"> <p>tex(a,b), tex("a","b")</p></td>
! 709: <td width=134 valign=top class="Normal"> <p>&tex($a,$b), &tex("a","b")</p></td>
! 710: <td width=147 valign=top class="Normal"> <p>Returns a if the output mode
! 711: is in tex otherwise returns b</p></td>
! 712: <td width=101 valign=top class="Normal"> </td>
! 713: </tr>
! 714: <tr>
! 715: <td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
! 716: <td width=134 valign=top class="Normal"> <p>&var_in_tex($a)</p></td>
! 717: <td width=147 valign=top class="Normal"> <p>Equivalent to tex("a","")</p></td>
! 718: <td width=101 valign=top class="Normal"> </td>
! 719: </tr>
! 720: <tr>
! 721: <td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
! 722: <td width=134 valign=top class="Normal"> <p>&to_string($x), &to_string($x,$y)</p></td>
! 723: <td width=147 valign=top class="Normal"> <p>If x is an integer, returns
! 724: a string. If x is real than the output is a string with format given
! 725: by y. For example, if x = 12.3456, &to_string(x,".3F")
! 726: = 12.345 and &to_string(x,".3E") = 1.234E+01.</p></td>
! 727: <td width=101 valign=top class="Normal"> </td>
! 728: </tr>
! 729: <tr>
! 730: <td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(),
! 731: set(), problem()</p></td>
! 732: <td width=134 valign=top class="Normal"> <p>&class(), &section()</p></td>
! 733: <td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive
! 734: name, section number, set number and null string.</p></td>
! 735: <td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem()
! 736: are no longer used. Currently, they return a null value.</p></td>
! 737: </tr>
! 738: <tr>
! 739: <td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
! 740: <td width=134 valign=top class="Normal"> <p>&name(), &student_number()</p></td>
! 741: <td width=147 valign=top class="Normal"> <p>Return the full name in the
! 742: following format: lastname, firstname initial. Student_number returns
! 743: the student 9-alphanumeric string. If undefined, the functions return
! 744: null.</p></td>
! 745: <td width=101 valign=top class="Normal"> </td>
! 746: </tr>
! 747: <tr>
! 748: <td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
! 749: <td width=134 valign=top class="Normal"> <p>&open_date(), &due_date(),
! 750: &answer_date()</p></td>
! 751: <td width=147 valign=top class="Normal"> <p>Problem open date, due date
! 752: and answer date. The time is also included in 24-hr format.</p></td>
! 753: <td width=101 valign=top class="Normal"> <p>Output format for time is changed
! 754: slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59
! 755: is displayed as 11:59 pm.</p></td>
! 756: </tr>
! 757: <tr>
! 758: <td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
! 759: <td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
! 760: <td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
! 761: <td width=101 valign=top class="Normal"> </td>
! 762: </tr>
! 763: <tr>
! 764: <td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
! 765: <td width=134 valign=top class="Normal"> <p>&sub_string($a,$b,$c) <br>
! 766: perl substr function. However, note the differences</p></td>
! 767: <td width=147 valign=top class="Normal"> <p>Retrieve a portion of string
! 768: a starting from b and length c. For example, $a = "Welcome
! 769: to LON-CAPA"; $result=&sub_string($a,4,4); then $result is
! 770: "come"</p></td>
! 771: <td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c)
! 772: starts counting from 0 (as opposed to 1). In the example to the left,
! 773: substr($a,4,4) returns "ome ".</p></td>
! 774: </tr>
! 775: <tr>
! 776: <td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
! 777: <td width=134 valign=top class="Normal"> <p>@arrayname <br>
! 778: Array is intrinsic in perl. To access a specific element use $arrayname[$n]
! 779: where $n is the $n+1 element since the array count starts from 0</p></td>
! 780: <td width=147 valign=top class="Normal"> <p>"xx" can be a variable
! 781: or a calculation.</p></td>
! 782: <td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined
! 783: by @arrayname. It is not necessary to specify the dimension of the array. </p></td>
! 784: </tr>
! 785: <tr>
! 786: <td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
! 787: <td width=134 valign=top class="Normal"> <p>@B=&array_moments(@A)</p></td>
! 788: <td width=147 valign=top class="Normal"> <p>Evaluates the moments of an
! 789: array A and place the result in array B[i] where i = 0 to 4. The contents
! 790: of B are as follows: B[0] = number of elements, B[1] = mean, B[2] =
! 791: variance, B[3] = skewness and B[4] = kurtosis.</p></td>
! 792: <td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed
! 793: as an array in the first argument whereas in LON-CAPA, the array containing
! 794: the moments are set equal to the function.</p></td>
! 795: </tr>
! 796: <tr>
! 797: <td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
! 798: <td width=134 valign=top class="Normal"> <p>&min(@Name), &max(@Name)</p></td>
! 799: <td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum
! 800: value of an array, use &max(@arrayname) and to find the minimum
! 801: value of an array, use &min(@arrayname)</p></td>
! 802: <td width=101 valign=top class="Normal"> <p>Combined with the min and max
! 803: functions defined earlier.</p></td>
! 804: </tr>
! 805: <tr>
! 806: <td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
! 807: <td width=134 valign=top class="Normal"> <p>undef @name</p></td>
! 808: <td width=147 valign=top class="Normal"> <p>To destroy the contents of an
! 809: array, use</p></td>
! 810: <td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
! 811: </tr>
! 812: <tr>
! 813: <td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
! 814: <td width=134 valign=top class="Normal"> <p>@return_array=&random_normal
! 815: ($item_cnt,$seed,$av,$std_dev)</p></td>
! 816: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 817: of normal distribution of average $av and standard deviation $std_dev.
! 818: The distribution is generated from seed $seed</p></td>
! 819: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 820: as the first argument whereas in LON-CAPA the results are set equal
! 821: to the function.</p></td>
! 822: </tr>
! 823: <tr>
! 824: <td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
! 825: <td width=134 valign=top class="Normal"> <p>@return_array=&random_beta
! 826: ($item_cnt,$seed,$aa,$bb) <br>
! 827: NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
! 828: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 829: of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1)
! 830: /B($aa,$bb) for 0<X<1.</p></td>
! 831: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 832: as the first argument whereas in LON-CAPA the results are set equal
! 833: to the function.</p></td>
! 834: </tr>
! 835: <tr>
! 836: <td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
! 837: <td width=134 valign=top class="Normal"> <p>@return_array=&random_gamma
! 838: ($item_cnt,$seed,$a,$r) <br>
! 839: NOTE: Both $a and $r MUST be positive.</p></td>
! 840: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 841: of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) *
! 842: X**($r-1) * exp(-$a*X).</p></td>
! 843: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 844: as the first argument whereas in LON-CAPA the results are set equal
! 845: to the function.</p></td>
! 846: </tr>
! 847: <tr>
! 848: <td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
! 849: <td width=134 valign=top class="Normal"> <p>@return_array=&random_exponential
! 850: ($item_cnt,$seed,$av) <br>
! 851: NOTE: $av MUST be non-negative.</p></td>
! 852: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 853: of exponential distribution. </p></td>
! 854: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 855: as the first argument whereas in LON-CAPA the results are set equal
! 856: to the function.</p></td>
! 857: </tr>
! 858: <tr>
! 859: <td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
! 860: <td width=134 valign=top class="Normal"> <p>@return_array=&random_poisson
! 861: ($item_cnt,$seed,$mu) <br>
! 862: NOTE: $mu MUST be non-negative.</p></td>
! 863: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 864: of poisson distribution. </p></td>
! 865: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 866: as the first argument whereas in LON-CAPA the results are set equal
! 867: to the function.</p></td>
! 868: </tr>
! 869: <tr>
! 870: <td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
! 871: <td width=134 valign=top class="Normal"> <p>@return_array=&random_chi
! 872: ($item_cnt,$seed,$df) <br>
! 873: NOTE: $df MUST be positive.</p></td>
! 874: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 875: of chi_square distribution with $df degrees of freedom. </p></td>
! 876: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 877: as the first argument whereas in LON-CAPA the results are set equal
! 878: to the function.</p></td>
! 879: </tr>
! 880: <tr>
! 881: <td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
! 882: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_chi
! 883: ($item_cnt,$seed,$df,$nonc) <br>
! 884: NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
! 885: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 886: of noncentral_chi_square distribution with $df degrees of freedom and
! 887: noncentrality parameter $nonc. </p></td>
! 888: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 889: as the first argument whereas in LON-CAPA the results are set equal
! 890: to the function.</p></td>
! 891: </tr>
! 892: <tr>
! 893: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 894: <td width=134 valign=top class="Normal"> <p>@return_array=&random_f
! 895: ($item_cnt,$seed,$dfn,$dfd) <br>
! 896: NOTE: Both $dfn and $dfd MUST be positive.</p></td>
! 897: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 898: of F (variance ratio) distribution with degrees of freedom $dfn (numerator)
! 899: and $dfd (denominator). </p></td>
! 900: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 901: </tr>
! 902: <tr>
! 903: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 904: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_f
! 905: ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
! 906: NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must
! 907: be non-negative.</p></td>
! 908: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 909: of noncentral F (variance ratio) distribution with degrees of freedom
! 910: $dfn (numerator) and $dfd (denominator). $nonc is the noncentrality
! 911: parameter. </p></td>
! 912: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 913: </tr>
! 914: <tr>
! 915: <td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
! 916: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multivariate_normal
! 917: ($item_cnt,$seed,\@mean,\@covar) <br>
! 918: NOTE: @mean should be of length p array of real numbers. @covar should
! 919: be a length p array of references to length p arrays of real numbers
! 920: (i.e. a p by p matrix.</p></td>
! 921: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 922: of multivariate_normal distribution with mean vector @mean and variance-covariance
! 923: matrix. </p></td>
! 924: <td width=101 valign=top class="Normal"> <p>Note the backslash before the
! 925: @mean and @covar arrays.</p></td>
! 926: </tr>
! 927: <tr>
! 928: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 929: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multinomial
! 930: ($item_cnt,$seed,@p) <br>
! 931: NOTE: $item_cnt is rounded with int() and the result must be non-negative.
! 932: The number of elements in @p must be at least 2.</p></td>
! 933: <td width=147 valign=top class="Normal"> <p>Returns single observation from
! 934: multinomial distribution with $item_cnt events classified into as many
! 935: categories as the length of @p. The probability of an event being classified
! 936: into category i is given by ith element of @p. The observation is an
! 937: array with length equal to @p, so when called in a scalar context it
! 938: returns the length of @p. The sum of the elements of the obervation
! 939: is equal to $item_cnt.</p></td>
! 940: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 941: </tr>
! 942: <tr>
! 943: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 944: <td width=134 valign=top class="Normal"> <p>@return_array=&random_permutation
! 945: ($item_cnt,@array) </p></td>
! 946: <td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
! 947: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 948: </tr>
! 949: <tr>
! 950: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 951: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform
! 952: ($item_cnt,$seed,$low,$high) <br>
! 953: NOTE: $low must be less than or equal to $high.</p></td>
! 954: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 955: from a uniform distribution. </p></td>
! 956: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 957: </tr>
! 958: <tr>
! 959: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 960: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform_integer
! 961: ($item_cnt,$seed,$low,$high) <br>
! 962: NOTE: $low and $high are both passed through int(). $low must be less
! 963: than or equal to $high.</p></td>
! 964: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 965: from a uniform distribution in integers. </p></td>
! 966: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 967: </tr>
! 968: <tr>
! 969: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 970: <td width=134 valign=top class="Normal"> <p>@return_array=&random_binomial
! 971: ($item_cnt,$seed,$nt,$p) <br>
! 972: NOTE: $nt is rounded using int() and the result must be non-negative.
! 973: $p must be between 0 and 1 inclusive.</p></td>
! 974: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 975: from the binomial distribution with $nt trials and the probabilty of
! 976: an event in each trial is $p. </p></td>
! 977: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 978: </tr>
! 979: <tr>
! 980: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 981: <td width=134 valign=top class="Normal"> <p>@return_array=&random_negative_binomial
! 982: ($item_cnt,$seed,$ne,$p) <br>
! 983: NOTE: $ne is rounded using int() and the result must be positive. $p
! 984: must be between 0 and 1 exclusive.</p></td>
! 985: <td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt
! 986: outcomes generated from negative binomial distribution with $ne events
! 987: and the probabilty of an event in each trial is $p. </p></td>
! 988: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 989: </tr>
! 990: </table>
! 991: <h3><a name="_Toc421867130"><script> Variables</a></h3>
! 992: <ul type=disc>
! 993: <li>$external::target - set to the current target the xml parser is parsing
! 994: for </li>
! 995: <li>$external::part - set to the <i>id</i><span style='font-style:normal'>
! 996: of the current problem <part>; zero if there are no <part> </span></li>
! 997: <li>$external::gradestatus - set to the value of the current resource.partid.solved
! 998: value </li>
! 999: <li>$external::datestatus - set to the current status of the clock either
! 1000: CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
! 1001: <li>$external::randomseed - set to the number that was used to seed the random
! 1002: number generator </li>
! 1003: <li>$pi - set to PI </li>
! 1004: <li>$rad2deg - converts radians to degrees </li>
! 1005: <li>$deg2rad - converts degrees to radians </li>
! 1006: </ul>
! 1007: <h3><a name="_Toc421867131">Form internals</a> </h3>
! 1008: <p>Form elements used for homework editing/response </p>
! 1009: <p>the form is named lonhomework </p>
! 1010: <h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
! 1011: <ul type=disc>
! 1012: <li>grade_target, grade_username, grade_domain, grade_symb - the vaules take
! 1013: precedence over the the normal ENV settings of these, use &Apache::lonxml::whichuser()
! 1014: to get back the correct vaues of the items </li>
! 1015: <li>HWVAL_response:number - the name of the input elements for each response.
! 1016: The response is the response's ID, and the :number part exists only for
! 1017: response with multiple foils, and is a unique number in order of the submission
! 1018: </li>
! 1019: <li>changerandseed - the 'Change' button, only exists right after the Change
! 1020: button is clicked </li>
! 1021: <li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze'
! 1022: depending on the desired view </li>
! 1023: <li>rndseed - the currently requested random seed </li>
! 1024: <li>showallfoils - if it exists, and we are in CSTR space, the problem should
! 1025: ignore <conceptgroup> and the response's max setting and show all
! 1026: possible foils </li>
! 1027: <li>submit - the name of the Submit button </li>
! 1028: <li>submitted - a hidden form parameter that can be used to tell if the student
! 1029: has submitted answers or not, if it is set, there should be answers to grade.
! 1030: </li>
! 1031: </ul>
! 1032: <h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
! 1033: <p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
! 1034: <p>Note: the file edit.pm has many helper functions for creating the standard
! 1035: elements for editing a tag and it's attributes, all of those functions follow
! 1036: these conventions </p>
! 1037: <ul type=disc>
! 1038: <li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the
! 1039: name of the parameter and it is for the third tag inside the first tag </li>
! 1040: <li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside
! 1041: of it </li>
! 1042: <li>homework_edit_tagdepth - used by both &Apache::edit::editline and
! 1043: &Apache::edit::editfield for the <textarea> and <input>
! 1044: form elements they create </li>
! 1045: <li>insert_tagdepth - used to request an tag insert, it is set to the id number
! 1046: of the requested tag in the %Apache::lonxml::insertlist </li>
! 1047: </ul>
! 1048: <ul type=disc>
! 1049: <li> </li>
! 1050: </ul>
! 1051: <h3><a name="_Toc421867134">Symbs</a></h3>
! 1052: <p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó
! 1053: These identifiers are built from the URL of the map, the resource number of
! 1054: the resource in the map, and the URL of the resource itself. The latter is
! 1055: somewhat redundant, but might help if maps change.</p>
! 1056: <p>An example is</p>
! 1057: <p class=MsoHeader><span style='font-family:"Courier New"'> msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
! 1058: <p class=MsoHeader>The respective map entry is</p>
! 1059: <p class=MsoHeader><span style='font-family:"Courier New"'> <resource
! 1060: id="19" src="/res/msu/korte/tests/part12.problem"
! 1061: </span></p>
! 1062: <p class=MsoHeader><span style='font-family:"Courier New"'> title="Problem
! 1063: 2"></span></p>
! 1064: <p class=MsoHeader><span style='font-family:"Courier New"'> </resource></span></p>
! 1065: <p class=MsoHeader>Symbs are used by the random number generator, as well as
! 1066: to store and restore data specific to a certain instance of for example a
! 1067: problem.</p>
! 1068: <h3><a name="_Toc421867135">Store / Restore</a></h3>
! 1069: <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
! 1070: style='color:black'> and </span><span style='font-family:"Courier New";
! 1071: color:black'>&Apache::lonnet:restore()</span><span style='color:black'> (and
! 1072: </span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::store()</span><span
! 1073: style='color:black'>, which is is the non-critical message twin of </span><span
! 1074: style='font-family:"Courier New";color:black'>cstore</span><span
! 1075: style='color:black'>). These functions are for handlers to store a perl hash to
! 1076: a userÕs permanent data space in an easy manner, and to retrieve it again
! 1077: on another call. It is expected that a handler would use this once at the
! 1078: beginning to retrieve data, and then again once at the end to send only the
! 1079: new data back. </span></p>
! 1080: <p><span style='color:black'>The data is stored in the userÕs data directory
! 1081: on the userÕs homeserver under the ID of the course.</span></p>
! 1082: <p><span style='color:black'>The hash that is returned by </span><span
! 1083: style='font-family:"Courier New";color:black'>restore</span><span
! 1084: style='color:black'> will have all of the previous value for all of the elements
! 1085: of the hash. </span></p>
! 1086: <p><span style='color:black'>Example: </span></p>
! 1087: <p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
! 1088: <p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
! 1089: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
! 1090: <p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
! 1091: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
! 1092: <p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
! 1093: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
! 1094: <p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
! 1095: <p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
! 1096: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
! 1097: <p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
! 1098: <p><span style='font-family:"Courier New";color:black'>my %history=&Apache::lonnet::restore();</span></p>
! 1099: <p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
! 1100: <p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history)))
! 1101: {</span></p>
! 1102: <p><span style='font-family:"Courier New";color:black'> print("\%history{$key}
! 1103: = $history{$key}");</span></p>
! 1104: <p><span style='font-family:"Courier New";color:black'>}</span></p>
! 1105: <p><span style='color:black'>Will print out: </span></p>
! 1106: <p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
! 1107: <p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
! 1108: <p><span style='font-family:"Courier New";color:black'>%history{1:timestamp}
! 1109: = 990455579</span></p>
! 1110: <p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
! 1111: <p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
! 1112: <p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
! 1113: <p><span style='font-family:"Courier New";color:black'>%history{2:timestamp}
! 1114: = 990455580</span></p>
! 1115: <p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
! 1116: <p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
! 1117: <p><span style='font-family:"Courier New";color:black'>%history{timestamp} =
! 1118: 990455580</span></p>
! 1119: <p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
! 1120: <p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>,
! 1121: <i>version</i></span><span
! 1122: style='color:black'> and <i>timestamp</i></span><span style='color:black'> were
! 1123: added to the hash. <i>version</i></span><span style='color:black'> will be
! 1124: equal to the total number of versions of the data that have been stored. The
! 1125: <i>timestamp</i></span><span
! 1126: style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
! 1127: style='color:black'> is available in every historical section to list which keys
! 1128: were added or changed at a specific historical revision of a hash. </span></p>
! 1129: <p><span style='color:black'><b>Warning</b></span><span
! 1130: style='color:black'> do not store the hash that restore returns directly. This
! 1131: will cause a mess since it will restore the historical keys as if the were
! 1132: new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
! 1133: style='color:black'> will become </span><span style='font-family:"Courier New";
! 1134: color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
! 1135: <p><span style='color:black'><b>Calling convention: </b></span></p>
! 1136: <p><span style='font-size:8.0pt;font-family:"Courier New";
! 1137: color:black'> my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
! 1138: <p><span style='font-size:8.0pt;font-family:"Courier New";
! 1139: color:black'> &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
! 1140: <p><span style='color:black'><b>Arguments (only %newrecord is required the rest
! 1141: are somewhat optional, read the details): </b></span></p>
! 1142: <p> <span style='font-family:Symbol;
! 1143: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1144: </span></span> <span style='color:black'><i>$symb</i></span><span
! 1145: style='color:black'> - a string containing the internal name of the specific instance
! 1146: of a resource. Usually this value can be gotten from </span><span
! 1147: style='font-family:"Courier New";color:black'>&Apache::lonnet::symbread($filename)</span><span
! 1148: style='color:black'>. If the argument is blank, it will attempt to use </span><span
! 1149: style='font-family:"Courier New";color:black'>symbread()</span><span
! 1150: style='color:black'> for it. If the result is ambiguous store/restore will fail.
! 1151: </span></p>
! 1152: <p> <span style='font-family:Symbol;
! 1153: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1154: </span></span> <span style='color:black'><i>$courseid</i></span><span
! 1155: style='color:black'> - the internal name for a course, usually found in </span><span
! 1156: style='font-family:"Courier New";color:black'>$ENV{'request.course.id'}</span><span
! 1157: style='color:black'> which is what will be looked at if no value is passed to
! 1158: the functions. </span></p>
! 1159: <p> <span style='font-family:Symbol;
! 1160: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1161: </span></span> <span style='color:black'><i>$domain</i></span><span
! 1162: style='color:black'> - the domain that the user belongs to, usually found in </span><span
! 1163: style='font-family:"Courier New";color:black'>$ENV{'user.domain'}</span><span
! 1164: style='color:black'> which is what will be looked at if no value is passed to
! 1165: the functions. </span></p>
! 1166: <p> <span style='font-family:Symbol;
! 1167: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1168: </span></span> <span style='color:black'><i>$uname</i></span><span
! 1169: style='color:black'> - the login name for the user, usually found in </span><span
! 1170: style='font-family:"Courier New";color:black'>$ENV{'user.name'}</span><span
! 1171: style='color:black'> which is what will be looked at if no value is passed to
! 1172: the functions. </span></p>
! 1173: <p> <span style='font-family:Symbol;
! 1174: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1175: </span></span> <span style='color:black'><i>$home</i></span><span
! 1176: style='color:black'> - the homeserver for the user, usually found in </span><span
! 1177: style='font-family:"Courier New";color:black'>$ENV{'user.home'}</span><span
! 1178: style='color:black'> but can be easily gotten from a domain and name through </span><span
! 1179: style='font-family:"Courier New";color:black'>&Apache::lonnet::homeserver($uname,$domain)</span><span
! 1180: style='color:black'>. If no value is passed to store/restore the value in %ENV
! 1181: will be used. </span></p>
! 1182: <p> <span style='font-family:Symbol;
! 1183: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1184: </span></span> <span style='color:black'><i>%newrecord</i></span><span
! 1185: style='color:black'> - the hash to store being passed by reference </span></p>
! 1186: <p><span style='color:black'><b>Return values: </b></span></p>
! 1187: <p> <span style='font-family:Symbol;
! 1188: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1189: </span></span> <span style='color:black'><i>an empty string</i></span><span
! 1190: style='color:black'> - the function was unable to determine exactly where to store
! 1191: or restore from. At least one of the "optional" arguments was unable
! 1192: to be determined. </span></p>
! 1193: <p> <span style='font-family:Symbol;
! 1194: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1195: </span></span> <span style='color:black'><i>a hash</i></span><span
! 1196: style='color:black'> - restore successfully read a old hash for this specific
! 1197: user / resource instance. </span></p>
! 1198: <p> <span style='font-family:Symbol;
! 1199: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1200: </span></span> <span style='color:black'><i>no_such_host</i></span><span
! 1201: style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied
! 1202: desn't exist in the network. </span></p>
! 1203: <p> <span style='font-family:Symbol;
! 1204: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1205: </span></span> <span style='color:black'><i>con_delayed</i></span><span
! 1206: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
! 1207: at this time. The store will be delayed until it is again available. </span></p>
! 1208: <p> <span style='font-family:Symbol;
! 1209: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1210: </span></span> <span style='color:black'><i>con_failed</i></span><span
! 1211: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
! 1212: at this time and store was unable to delay the store until a later time. The
! 1213: store failed. </span></p>
! 1214: <p> <span style='font-family:Symbol;
! 1215: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1216: </span></span> <span style='color:black'><i>ok</i></span><span
! 1217: style='color:black'> - the store completed succesfully </span></p>
! 1218: <p> <span style='font-family:Symbol;
! 1219: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 1220: </span></span> <span style='color:black'><i>error:</i></span><span
! 1221: style='color:black'> - remote server failied to store or restore the reason follows
! 1222: the </span><span style='font-family:"Courier New";color:black'>:</span><span
! 1223: style='color:black'> </span></p>
! 1224: <h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
! 1225: <pre> </pre>
! 1226: <pre><span
! 1227: style='font-size:9.0pt'><Provided by &EXT() and set external to the resource, required></span></pre>
! 1228: <pre><span
! 1229: style='font-size:9.0pt'>resource.partid.opendate #unix time of when the local machine should let the</span></pre>
! 1230: <pre><span
! 1231: style='font-size:9.0pt'> #student in</span></pre>
! 1232: <pre><span
! 1233: style='font-size:9.0pt'> </span></pre>
! 1234: <pre><span
! 1235: style='font-size:9.0pt'>resource.partid.duedate #unix time of when the local machine should stop</span></pre>
! 1236: <pre><span
! 1237: style='font-size:9.0pt'> #accepting answers</span></pre>
! 1238: <pre><span
! 1239: style='font-size:9.0pt'> </span></pre>
! 1240: <pre><span
! 1241: style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
! 1242: <pre><span
! 1243: style='font-size:9.0pt'> #provide the correct answer to the student</span></pre>
! 1244: <pre><span
! 1245: style='font-size:9.0pt'> </span></pre>
! 1246: <pre><span
! 1247: style='font-size:9.0pt'>resource.partid.weight # points the problem is worth</span></pre>
! 1248: <pre><span
! 1249: style='font-size:9.0pt'> </span></pre>
! 1250: <pre><span
! 1251: style='font-size:9.0pt'>resource.partid.maxtries # maximum number of attempts the student can have</span></pre>
! 1252: <pre><span
! 1253: style='font-size:9.0pt'> </span></pre>
! 1254: <pre><span
! 1255: style='font-size:9.0pt'>resource.partid.type # type of problem homework can be:</span></pre>
! 1256: <pre><span
! 1257: style='font-size:9.0pt'> # homework - randomized, graded, stored with </span></pre>
! 1258: <pre><span
! 1259: style='font-size:9.0pt'> # requesting user, full feeback</span></pre>
! 1260: <pre><span
! 1261: style='font-size:9.0pt'> # exam - randomized, graded, stored with </span></pre>
! 1262: <pre><span
! 1263: style='font-size:9.0pt'> # requesting user, minimal feedback</span></pre>
! 1264: <pre><span
! 1265: style='font-size:9.0pt'> # form - unrandomized, ungraded, stored with </span></pre>
! 1266: <pre><span
! 1267: style='font-size:9.0pt'> # specified user, full feedback</span></pre>
! 1268: <pre><span
! 1269: style='font-size:9.0pt'> # survey - unrandomized, ungraded, stored with </span></pre>
! 1270: <pre><span
! 1271: style='font-size:9.0pt'> # requesting user, full feedback</span></pre>
! 1272: <pre><span
! 1273: style='font-size:9.0pt'> </span></pre>
! 1274: <pre><span
! 1275: style='font-size:9.0pt'> </span></pre>
! 1276: <pre><span
! 1277: style='font-size:9.0pt'> </span></pre>
! 1278: <pre><span
! 1279: style='font-size:9.0pt'><numerical/formula/response needed: (has a default if nonexistant)></span></pre>
! 1280: <pre><span
! 1281: style='font-size:9.0pt'> </span></pre>
! 1282: <pre><span
! 1283: style='font-size:9.0pt'>resource.partid.responseid.tol # lots of possibilities here</span></pre>
! 1284: <pre><span
! 1285: style='font-size:9.0pt'> # percentage, range (inclusive and exclusive),</span></pre>
! 1286: <pre><span
! 1287: style='font-size:9.0pt'> # variable name, etc</span></pre>
! 1288: <pre><span
! 1289: style='font-size:9.0pt'> # 3%</span></pre>
! 1290: <pre><span
! 1291: style='font-size:9.0pt'> # 0.5</span></pre>
! 1292: <pre><span
! 1293: style='font-size:9.0pt'> # .05+</span></pre>
! 1294: <pre><span
! 1295: style='font-size:9.0pt'> # 3%+</span></pre>
! 1296: <pre><span
! 1297: style='font-size:9.0pt'> # 0.5+,.005</span></pre>
! 1298: <pre><span
! 1299: style='font-size:9.0pt'> </span></pre>
! 1300: <pre><span
! 1301: style='font-size:9.0pt'>resource.partid.responseid.sig # one or two comma sepearted integers, </span></pre>
! 1302: <pre><span
! 1303: style='font-size:9.0pt'> # specifying the number of significatn figures</span></pre>
! 1304: <pre><span
! 1305: style='font-size:9.0pt'> # a student must use</span></pre>
! 1306: <pre><span
! 1307: style='font-size:9.0pt'> </span></pre>
! 1308: <pre><span
! 1309: style='font-size:9.0pt'> </span></pre>
! 1310: <pre><span
! 1311: style='font-size:9.0pt'> </span></pre>
! 1312: <pre><span
! 1313: style='font-size:9.0pt'><Problem sets using cstore (required):></span></pre>
! 1314: <pre><span
! 1315: style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
! 1316: <pre><span
! 1317: style='font-size:9.0pt'> # incorrect_attempted == incorrect and attempted</span></pre>
! 1318: <pre><span
! 1319: style='font-size:9.0pt'> # correct_by_student == correct by student work</span></pre>
! 1320: <pre><span
! 1321: style='font-size:9.0pt'> # correct_by_override == correct, instructor override</span></pre>
! 1322: <pre><span
! 1323: style='font-size:9.0pt'> # incorrect_by_override == incorrect, instructor override</span></pre>
! 1324: <pre><span
! 1325: style='font-size:9.0pt'> # excused == excused, problem no longer counts for student</span></pre>
! 1326: <pre><span
! 1327: style='font-size:9.0pt'> # '' (empty) == not attempted</span></pre>
! 1328: <pre><span
! 1329: style='font-size:9.0pt'> # ungraded_attempted == an ungraded answer has been</span></pre>
! 1330: <pre><span
! 1331: style='font-size:9.0pt'> sumbitted and stored</span></pre>
! 1332: <pre><span
! 1333: style='font-size:9.0pt'>resource.partid.tries # positive integer of number of unsuccessful attempts</span></pre>
! 1334: <pre><span
! 1335: style='font-size:9.0pt'> # made, malformed answers don't count if feedback is</span></pre>
! 1336: <pre><span
! 1337: style='font-size:9.0pt'> # on</span></pre>
! 1338: <pre><span
! 1339: style='font-size:9.0pt'> </span></pre>
! 1340: <pre><span
! 1341: style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
! 1342: <pre><span
! 1343: style='font-size:9.0pt'> # resource.weight that the stundent earned.</span></pre>
! 1344: <pre><span
! 1345: style='font-size:9.0pt'> </span></pre>
! 1346: <pre><span
! 1347: style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
! 1348: <pre><span
! 1349: style='font-size:9.0pt'> # part of the question, check awarddetail below for</span></pre>
! 1350: <pre><span
! 1351: style='font-size:9.0pt'> # possibilities</span></pre>
! 1352: <pre><span
! 1353: style='font-size:9.0pt'> </span></pre>
! 1354: <pre><span
! 1355: style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
! 1356: <pre><span
! 1357: style='font-size:9.0pt'> </span></pre>
! 1358: <pre><span
! 1359: style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
! 1360: <pre><span
! 1361: style='font-size:9.0pt'> # the student submitted string for the part.response</span></pre>
! 1362: <pre><span
! 1363: style='font-size:9.0pt'> </span></pre>
! 1364: <pre><span
! 1365: style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
! 1366: <pre><span
! 1367: style='font-size:9.0pt'> # list of all of the results of grading the submissions</span></pre>
! 1368: <pre><span
! 1369: style='font-size:9.0pt'> # in detailed form of the specific failure</span></pre>
! 1370: <pre><span
! 1371: style='font-size:9.0pt'> #Possible values:</span></pre>
! 1372: <pre><span
! 1373: style='font-size:9.0pt'> # EXACT_ANS, APPROX_ANS : student is correct</span></pre>
! 1374: <pre><span
! 1375: style='font-size:9.0pt'> # NO_RESPONSE : student submitted no response</span></pre>
! 1376: <pre><span
! 1377: style='font-size:9.0pt'> # MISSING_ANSWER : student submitted some but not</span></pre>
! 1378: <pre><span
! 1379: style='font-size:9.0pt'> # all parts of a response</span></pre>
! 1380: <pre><span
! 1381: style='font-size:9.0pt'> # WANTED_NUMERIC : expected a numeric answer and</span></pre>
! 1382: <pre><span
! 1383: style='font-size:9.0pt'> # didn't get one</span></pre>
! 1384: <pre><span
! 1385: style='font-size:9.0pt'> # SIG_FAIL : incorrect number of Significant Figures</span></pre>
! 1386: <pre><span
! 1387: style='font-size:9.0pt'> # UNIT_FAIL : incorrect unit</span></pre>
! 1388: <pre><span
! 1389: style='font-size:9.0pt'> # UNIT_NOTNEEDED : Submitted a unit when one shouldn't</span></pre>
! 1390: <pre><span
! 1391: style='font-size:9.0pt'> # NO_UNIT : needed a unit but none was submitted</span></pre>
! 1392: <pre><span
! 1393: style='font-size:9.0pt'> # BAD_FORMULA : syntax error in submitted formula</span></pre>
! 1394: <pre><span
! 1395: style='font-size:9.0pt'> # INCORRECT : answer was wrong</span></pre>
! 1396: <pre><span
! 1397: style='font-size:9.0pt'> # SUBMITTED : submission wasn't graded</span></pre>
! 1398: <pre><span
! 1399: style='font-size:9.0pt'> # ERROR : unable to get a grade</span></pre>
! 1400: <pre><span
! 1401: style='font-size:9.0pt'> </span></pre>
! 1402: <pre><span
! 1403: style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
! 1404: <pre><span
! 1405: style='font-size:9.0pt'> # a message that should be shown to the student</span></pre>
! 1406: <pre><span
! 1407: style='font-size:9.0pt'> </span></pre>
! 1408: <pre><span
! 1409: style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
! 1410: <pre><span
! 1411: style='font-size:9.0pt'> # if set, added to the maxtries parameter for student </span></pre>
! 1412: <pre><span
! 1413: style='font-size:9.0pt'> # total number of tries overall</span></pre>
! 1414: <pre> </pre>
! 1415: <h3><a name="_Toc421867137">Sample Problems</a></h3>
! 1416: <p class=H5><span style='layout-grid-mode:
! 1417: both'>A Simple Problem</span></p>
! 1418: <p style='
! 1419: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
! 1420: <p style='
! 1421: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1422: <script type="loncapa/perl"></span></p>
! 1423: <p style='
! 1424: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&random(10,99,.1);</span></p>
! 1425: <p style='
! 1426: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&random(1,10,.01);</span></p>
! 1427: <p style='
! 1428: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
! 1429: <p style='
! 1430: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1431: </script></span></p>
! 1432: <p style='
! 1433: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What
! 1434: is the area of a box $length mm in length and </span></p>
! 1435: <p style='
! 1436: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&format($width,"2E")
! 1437: cm in width.</span></p>
! 1438: <p style='
! 1439: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1440: <numericalresponse id="11" answer="@area" units="mm^2"></span></p>
! 1441: <p style='
! 1442: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1443: <textline></textline></span></p>
! 1444: <p style='
! 1445: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1446: <responseparam name="tol" type="tolerance" default="5%"></responseparam></span></p>
! 1447: <p style='
! 1448: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1449: </numericalresponse></span></p>
! 1450: <p style='
! 1451: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
! 1452: <p class=H5><span
! 1453: style='layout-grid-mode:both'>A More Complex Problem</span></p>
! 1454: <p><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
! 1455: <p><span style='font-size:8.0pt;font-family:"Courier New"'><displayduedate
! 1456: /></span></p>
! 1457: <p><span style='font-size:8.0pt;font-family:"Courier New"'><p><displaytitle
! 1458: /></p></span></p>
! 1459: <p><span style='font-size:8.0pt;font-family:"Courier New"'><script type="loncapa/perl"></span></p>
! 1460: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF="<b>
! 1461: F<sub>1</sub> </b>";</span></p>
! 1462: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1="<b>
! 1463: F<sub>1</sub> </b>";</span></p>
! 1464: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2="<b>
! 1465: F<sub>2</sub> </b>";</span></p>
! 1466: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF="|<b>F</b>|";</span></p>
! 1467: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag="|<b>F<sub>1</sub></b>|";</span></p>
! 1468: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F2mag="|<b>F<sub>2</sub></b>|";</span></p>
! 1469: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag="|<b>
! 1470: <font face=symbol>t</font><sub>1</sub></b>|";</span></p>
! 1471: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag="|<b>
! 1472: <font face=symbol>t</font><sub>2</sub></b>|";</span></p>
! 1473: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1="Q<sub>1</sub>";</span></p>
! 1474: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2="Q<sub>2</sub>";</span></p>
! 1475: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau="<font
! 1476: face=symbol>t</font>";</span></p>
! 1477: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1="<font
! 1478: face=symbol><b>t</b></font><sub>1</sub>";</span></p>
! 1479: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $val=&random(1,4,1);</span></p>
! 1480: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $tp=&choose($val,"her","her","his","his");</span></p>
! 1481: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $sd=&choose($val,"daughter","niece","nephew","son");</span></p>
! 1482: <p><span style='font-size:8.0pt;font-family:"Courier New"'></script></span></p>
! 1483: <p><span style='font-size:8.0pt;font-family:"Courier New"'><startouttext
! 1484: /></span></p>
! 1485: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag
! 1486: are the magnitudes of the torques produced repectively by </span></p>
! 1487: <p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2
! 1488: with respect the pivot P. The magnitudes of $vF1 is </span></p>
! 1489: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of
! 1490: $vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
! 1491: <p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where
! 1492: $vF1 and $vF2 act. </span></p>
! 1493: <p><span style='font-size:8.0pt;font-family:"Courier New"'><endouttext /></span></p>
! 1494: <p><span style='font-size:8.0pt;font-family:"Courier New"'><optionresponse
! 1495: max="600"></span></p>
! 1496: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1497: <foilgroup options="('Correct','Incorrect','Can not tell')"></span></p>
! 1498: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1499: <conceptgroup concept="Effect of the moment-arm on the torque"></span></p>
! 1500: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1501: <foil name="1a" value="Incorrect"></span></p>
! 1502: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1503: For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
! 1504: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1505: </foil></span></p>
! 1506: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1507: <foil name="1b" value="Incorrect"></span></p>
! 1508: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1509: For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
! 1510: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1511: </foil></span></p>
! 1512: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1513: <foil
! 1514: name="1c" value="Correct"></span></p>
! 1515: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1516: For $F1mag larger than $F2mag , $trq1mag can be less than $trq2mag</span></p>
! 1517: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1518: </foil></span></p>
! 1519: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1520: <foil name="1d" value="Correct"></span></p>
! 1521: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1522: For $F1mag smaller than $F2mag , $trq1mag can be larger than $trq2mag</span></p>
! 1523: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1524: </foil></span></p>
! 1525: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1526: </conceptgroup> </span></p>
! 1527: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1528: <conceptgroup concept="For a given pivot, relation of force vector
! 1529: to torque."></span></p>
! 1530: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1531: <foil name="2a" value="Correct"></span></p>
! 1532: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1533: The moment-arm of $vF is the shortest distance from P to the line along $vF
! 1534: .</span></p>
! 1535: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1536: </foil></span></p>
! 1537: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1538: <foil name="2b" value="Incorrect"></span></p>
! 1539: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1540: The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
! 1541: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1542: </foil></span></p>
! 1543: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1544: <foil name="2c" value="Correct"></span></p>
! 1545: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1546: The moment-arm of $vF is not the distance from P to Q<sub>1</sub>.</span></p>
! 1547: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1548: </foil></span></p>
! 1549: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1550: <foil name="2d" value="Incorrect"></span></p>
! 1551: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1552: The moment-arm of $vF is the distance from P to Q<sub>1</sub>.</span></p>
! 1553: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1554: </foil> </span></p>
! 1555: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1556: </conceptgroup></span></p>
! 1557: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1558: <conceptgroup concept="Torque is force x moment-arm."></span></p>
! 1559: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1560: <foil name="3a" value="Correct"></span></p>
! 1561: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1562: $trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
! 1563: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1564: </foil></span></p>
! 1565: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1566: <foil name="3b" value="Incorrect"></span></p>
! 1567: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1568: $trq1mag equals to $F1mag times the distance from Q<sub>1</sub>
! 1569: to P.</span></p>
! 1570: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1571: </foil></span></p>
! 1572: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1573: <foil name="3c" value="Correct"></span></p>
! 1574: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1575: $trq1mag is not equal to the product of $F1mag and the distance from Q<sub>1</sub>
! 1576: to P.</span></p>
! 1577: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1578: </foil></span></p>
! 1579: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1580: <foil name="3d" value="Incorrect"></span></p>
! 1581: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1582: $trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
! 1583: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1584: </foil></span></p>
! 1585: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1586: </conceptgroup></span></p>
! 1587: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1588: <conceptgroup concept="Pivot point is required to calculate torque"></span></p>
! 1589: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1590: <foil name="4a" value="Correct"></span></p>
! 1591: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1592: $tau1 vector depends on the location of P.</span></p>
! 1593: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1594: </foil></span></p>
! 1595: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1596: <foil name="4b" value="Incorrect"></span></p>
! 1597: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1598: $tau1 vector does not depend on the location of P.</span></p>
! 1599: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1600: </foil></span></p>
! 1601: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1602: <foil name="4c" value="Correct"></span></p>
! 1603: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1604: $tau1 vector has no meaning unless a pivot is selected.</span></p>
! 1605: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1606: </foil></span></p>
! 1607: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1608: <foil name="4d" value="Incorrect"></span></p>
! 1609: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1610: $tau1 vector can be determined without selecting P. </span></p>
! 1611: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1612: </foil></span></p>
! 1613: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1614: </conceptgroup> </span></p>
! 1615: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1616: <conceptgroup concept="torque from 2 forces acting along same line"></span></p>
! 1617: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1618: <foil name="5a" value="Correct"></span></p>
! 1619: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1620: Two equal forces, acting on a body along the same line but at different positions,
! 1621: produce equal torques with respect to a given pivot."</span></p>
! 1622: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1623: </foil></span></p>
! 1624: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1625: <foil name="5b" value="Incorrect"></span></p>
! 1626: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1627: Two equal forces, along the same line, produce equal torques with respect
! 1628: to a given pivot only if they act at the same point on a body."</span></p>
! 1629: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1630: </foil></span></p>
! 1631: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1632: <foil name="5c" value="Incorrect"></span></p>
! 1633: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1634: Two equal forces acting on a body along the same line but at different positions,
! 1635: produce equal torques for only one pivot."</span></p>
! 1636: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1637: </foil></span></p>
! 1638: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1639: </conceptgroup></span></p>
! 1640: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1641: <foil name="6" value="unused"></span></p>
! 1642: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1643: This foil will never display since it is unused.</span></p>
! 1644: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1645: </foil></span></p>
! 1646: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1647: </foilgroup></span></p>
! 1648: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1649: <notsolved></span></p>
! 1650: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1651: <hintgroup></span></p>
! 1652: <p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition
! 1653: of the torque. The force and the moment-arm respect to the pivot. </span></p>
! 1654: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1655: </hintgroup></span></p>
! 1656: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 1657: </notsolved></span></p>
! 1658: <p><span style='font-size:8.0pt;font-family:"Courier New"'></optionresponse></span></p>
! 1659: <p><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
! 1660: <h3> </h3>
! 1661: <p> <img border=0 width=432 height=370
! 1662: src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
! 1663: <p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
! 1664: style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
! 1665: </div>
! 1666: <br
! 1667: clear=ALL style='page-break-before:always;'>
! 1668: <div class=Section2> </div>
! 1669: </body>
! 1670: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>