Annotation of doc/gutshtml/SessionOn2.html, revision 1.2
1.2 ! bowersj2 1: <html>
! 2:
! 3: <head>
! 4:
! 5: <meta name=Title
! 6:
! 7: content="Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)">
! 8:
! 9: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
! 10:
! 11: <link rel=Edit-Time-Data href="Session%20On2_files/editdata.mso">
! 12:
! 13: <title>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</title>
! 14:
! 15: <style><!--
! 16:
! 17: .MsoHeader
! 18:
! 19: {tab-stops:center 3.0in right 6.0in;
! 20:
! 21: font-size:10.0pt;
! 22:
! 23: font-family:"Times New Roman";}
! 24:
! 25: .H5
! 26:
! 27: {font-size:10.0pt;
! 28:
! 29: font-family:"Times New Roman";
! 30:
! 31: layout-grid-mode:line;
! 32:
! 33: font-weight:bold;}
! 34:
! 35: .Section1
! 36:
! 37: {page:Section1;}
! 38:
! 39: .Section2
! 40:
! 41: {page:Section2;}
! 42:
! 43: -->
! 44:
! 45: </style>
! 46:
! 47: </head>
! 48:
! 49: <body bgcolor=#FFFFFF link=blue vlink=purple class="Normal" lang=EN-US>
! 50:
! 51: <div class=Section1>
! 52:
! 53: <h2>Session One: Problem Engine/Special Targets (grade, edit, print) (Guy)</h2>
! 54:
! 55: <h3><a name="_Toc421867127">Tags</a></h3>
! 56:
! 57: <ul type=disc>
! 58:
! 59: <li><b>Response tags </b></li>
! 60:
! 61: </ul>
! 62:
! 63: <p>Arguments for all response tags </p>
! 64:
! 65: <ul type=disc>
! 66:
! 67: <ul type=circle>
! 68:
! 69: <li><i>ID</i><span style='font-style:
! 70:
! 71: normal'>, if this isn't set it will be set during the publication step.
! 72:
! 73: It is used to assign parameters names in a way that can be tracked if
! 74:
! 75: an instructor modifies things by hand. </span></li>
! 76:
! 77: <li><i>name</i><span
! 78:
! 79: style='font-style:normal'> optional, if set, it will be used by the resource
! 80:
! 81: assembly tool when one is modifying parameters. </span></li>
! 82:
! 83: </ul>
! 84:
! 85: </ul>
! 86:
! 87: <p>Implemented response tags </p>
! 88:
! 89: <ul type=disc>
! 90:
! 91: <ul type=circle>
! 92:
! 93: <li><b><responseparam></b><span
! 94:
! 95: style='font-weight:normal'> if it appears it should be inside of a <*response>
! 96:
! 97: tag, defines an externally adjustable parameter for this question. Arguments:
! 98:
! 99: </span></li>
! 100:
! 101: <ul type=square>
! 102:
! 103: <li><i>default</i><span
! 104:
! 105: style='font-style:normal'> required, specifies a default value for the
! 106:
! 107: parameter </span></li>
! 108:
! 109: <li><i>name</i><span
! 110:
! 111: style='font-style:normal'> required, specifies an internal name for the
! 112:
! 113: parameter </span></li>
! 114:
! 115: <li><i>type</i><span
! 116:
! 117: style='font-style:normal'> required specifies the type of parameter, one
! 118:
! 119: of "tolerance", "int", "float", "string",
! 120:
! 121: "date" (configuration of paramters is handled by lonparmset.pm
! 122:
! 123: and parameter.html) </span></li>
! 124:
! 125: <li><i>description</i><span
! 126:
! 127: style='font-style:normal'> a string describing the parameter, this is what
! 128:
! 129: is used to talk about a parameter outside of a problem </span></li>
! 130:
! 131: </ul>
! 132:
! 133: <li><b><parameter></b><span
! 134:
! 135: style='font-weight:normal'> exactly the same as <responseparam> currently,
! 136:
! 137: but should not appear inside of a <*response> </span></li>
! 138:
! 139: <li><b><numericalresponse></b><span
! 140:
! 141: style='font-weight:normal'> implements a numerical answer, it needs an internal
! 142:
! 143: </span><b><textline></b><span style='font-weight:normal'> for the
! 144:
! 145: response to go in. It checks all styles of numerical supported in CAPA.
! 146:
! 147: Possible args are: </span></li>
! 148:
! 149: <ul type=square>
! 150:
! 151: <li><i>answer</i><span
! 152:
! 153: style='font-style:normal'> required, specifies the correct answer, may
! 154:
! 155: be either a perl list or scalar</span></li>
! 156:
! 157: <li><i>units</i><span
! 158:
! 159: style='font-style:normal'> optional, specifies unit of correct answer,
! 160:
! 161: CAPA style</span></li>
! 162:
! 163: </ul>
! 164:
! 165: <li><b><stringresponse></b><span
! 166:
! 167: style='font-weight:normal'> implements a string answer, it needs an internal
! 168:
! 169: </span><b><textline></b><span style='font-weight:normal'> for the
! 170:
! 171: response to go in. It can check the string for either case or order. </span></li>
! 172:
! 173: <ul type=square>
! 174:
! 175: <li><i>answer</i><span
! 176:
! 177: style='font-style:normal'> required, specifies the correct answer, may
! 178:
! 179: be either a perl list or scalar</span></li>
! 180:
! 181: <li><i>type</i><span
! 182:
! 183: style='font-style:normal'> optional, CAPA style str args, cs/ci/mc </span></li>
! 184:
! 185: <ul type=square>
! 186:
! 187: <li>cs - case senesitive, order important</li>
! 188:
! 189: <li>ci - case insenesitive, order important</li>
! 190:
! 191: <li>mc - case insenesitive, order unimportant</li>
! 192:
! 193: </ul>
! 194:
! 195: </ul>
! 196:
! 197: <li><b><essayresponse></b><span
! 198:
! 199: style='font-weight:normal'> implements a ungraded large text response, it
! 200:
! 201: need an internal </span><b><textarea></b><span style='font-weight:
! 202:
! 203: normal'> for the response to go in. </span></li>
! 204:
! 205: <li><b><imageresponse></b><span
! 206:
! 207: style='font-weight:normal'> implements a image click style image submission,
! 208:
! 209: uses the foil structure tags <a href="#foil">below</a>. Additional tags
! 210:
! 211: that should appear in a <foil> are: </span></li>
! 212:
! 213: <ul type=square>
! 214:
! 215: <li><b><image></b><span
! 216:
! 217: style='font-weight:normal'> required, the contained text specifies a published
! 218:
! 219: graphical resource that is the image used, should only appear once per
! 220:
! 221: foil</span></li>
! 222:
! 223: <li><b><rectangle></b><span
! 224:
! 225: style='font-weight:normal'> required, the contained text specifies a rectangular
! 226:
! 227: area that is correct, should look like (1,2)-(3,4), at least 1 required</span></li>
! 228:
! 229: <li><b><text></b><span
! 230:
! 231: style='font-weight:normal'> required, the contained text is printed on
! 232:
! 233: top of the image.</span></li>
! 234:
! 235: </ul>
! 236:
! 237: <li><b><optionresponse></b><span
! 238:
! 239: style='font-weight:normal'> implements a "select from these choices"
! 240:
! 241: style question, the choices are specified by the instructor, it uses the
! 242:
! 243: foil structure tags <a href="#foil">below</a> with this additional args:
! 244:
! 245: </span></li>
! 246:
! 247: <ul type=square>
! 248:
! 249: <li><b><foilgroup></b><span
! 250:
! 251: style='font-weight:normal'> is required to have <i>options</i></span> which
! 252:
! 253: should be a perl list of possible options for the student. </li>
! 254:
! 255: </ul>
! 256:
! 257: <li><b><radiobuttonresponse></b><span
! 258:
! 259: style='font-weight:normal'> implements a true / false style question with
! 260:
! 261: 1 correct answer.it uses the foil structure tags <a href="#foil">below</a>
! 262:
! 263: but the <i>value</i></span> of a <foil>can only be "true"
! 264:
! 265: or "false" or "unused" </li>
! 266:
! 267: <li><b><dataresponse></b><span
! 268:
! 269: style='font-weight:normal'> implements a straight data storage entry idea,
! 270:
! 271: needs and interveing input tag like <textline> to work correctly.<br>
! 272:
! 273: Arguments: </span></li>
! 274:
! 275: <ul type=square>
! 276:
! 277: <li><i>name</i><span
! 278:
! 279: style='font-style:normal'> internal name for the value, it will have the
! 280:
! 281: part id and respose id added on to it </span></li>
! 282:
! 283: <li><i>type</i><span
! 284:
! 285: style='font-style:normal'> type of data stored in this response field,
! 286:
! 287: should be one of the types supported by parameter.html </span></li>
! 288:
! 289: <li><i>display</i><span
! 290:
! 291: style='font-style:normal'> a string that will be used to describe the field
! 292:
! 293: when interfacing with humans </span></li>
! 294:
! 295: </ul>
! 296:
! 297: </ul>
! 298:
! 299: </ul>
! 300:
! 301: <p> <span style='font-size:10.0pt;
! 302:
! 303: font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>
! 304:
! 305: </span></span> <b><externalresponse></b><span style='font-weight:
! 306:
! 307: normal'> implements the ability to have an external program grade a response,
! 308:
! 309: expects either a <textline> or <textfield> inside the tag. </span></p>
! 310:
! 311: <p>Arguments: </p>
! 312:
! 313: <ul type=disc>
! 314:
! 315: <ul type=circle>
! 316:
! 317: <ul type=square>
! 318:
! 319: <li><i>url</i><span
! 320:
! 321: style='font-style:normal'> the url to submit the answer and form to, does
! 322:
! 323: not need to be a LON-CAPA machine. </span></li>
! 324:
! 325: <li><i>answer</i><span
! 326:
! 327: style='font-style:normal'> a string or scalar variable that can encode
! 328:
! 329: something that should encode the correct answer, in some cases this
! 330:
! 331: may be nothing. </span></li>
! 332:
! 333: <li><i>form</i><span
! 334:
! 335: style='font-style:normal'> a hash variable name that will be submitted
! 336:
! 337: to the remote site as a HTTP form. </span></li>
! 338:
! 339: </ul>
! 340:
! 341: </ul>
! 342:
! 343: </ul>
! 344:
! 345: <p>The response of the remote server needs to be in XML as follows. </p>
! 346:
! 347: <pre> <loncapagrade> <awardetail> CORRECT </awardetail> <message> A message to be shown to the students </message> </loncapagrade> </pre>
! 348:
! 349: <ul type=disc>
! 350:
! 351: <ul type=circle>
! 352:
! 353: <ul type=square>
! 354:
! 355: <li><b><loncapagrade></b><span
! 356:
! 357: style='font-weight:normal'> no arguments but must surround the response.
! 358:
! 359: </span></li>
! 360:
! 361: <li><b><awardetail></b><span
! 362:
! 363: style='font-weight:normal'> required inner tag, the response inside must
! 364:
! 365: be one of the detailed responses that appears in the data storage documentation
! 366:
! 367: (CVS:loncapa/doce/homework/datastorage) </span></li>
! 368:
! 369: <li><b><message></b><span
! 370:
! 371: style='font-weight:normal'> optional message to have shown to the student
! 372:
! 373: </span></li>
! 374:
! 375: </ul>
! 376:
! 377: </ul>
! 378:
! 379: </ul>
! 380:
! 381: <ul type=disc>
! 382:
! 383: <li><a name=foil><b>Foil Structure Tags</b></a><b> </b></li>
! 384:
! 385: </ul>
! 386:
! 387: <p>All tags that implement a foil structure have an optional arg of <i>max</i><span style='font-style:normal'>
! 388:
! 389: that controls the maximum number of total foils to show. </span></p>
! 390:
! 391: <ul type=disc>
! 392:
! 393: <ul type=circle>
! 394:
! 395: <li><b><foilgroup></b><span
! 396:
! 397: style='font-weight:normal'> required, must be the tag that surrounds all
! 398:
! 399: foil definitions </span></li>
! 400:
! 401: <li><b><foil></b><span
! 402:
! 403: style='font-weight:normal'> required, all data inside is a possible foil
! 404:
! 405: </span></li>
! 406:
! 407: <li><b><conceptgroup></b><span
! 408:
! 409: style='font-weight:normal'> optional, surrounds a collection of <foil>,
! 410:
! 411: when a problem is displayed only one of the contained <foil>is selected
! 412:
! 413: for display. It receives one required argument <i>concept</i></span>.
! 414:
! 415: </li>
! 416:
! 417: </ul>
! 418:
! 419: <li><b>Hint structure </b></li>
! 420:
! 421: </ul>
! 422:
! 423: <p>All of these tags must appear inside a <b><*response></b><span
! 424:
! 425: style='font-weight:normal'> tag. </span></p>
! 426:
! 427: <ul type=disc>
! 428:
! 429: <ul type=circle>
! 430:
! 431: <li><b><hintgroup></b><span
! 432:
! 433: style='font-weight:normal'> Tag that surrounds all of a hint. </span></li>
! 434:
! 435: <li><b><hintpart></b><span
! 436:
! 437: style='font-weight:normal'> required, Tag to implement conditional hints.
! 438:
! 439: It has a required argument <i>on</i></span>. When a <*hint> tag
! 440:
! 441: named the same as the value the on attribute evaluates to be correct the
! 442:
! 443: <hintpart> will show. If no other <hintpart> are to show then
! 444:
! 445: all hintparts with a <i>on</i><span style='font-style:normal'> of "default"
! 446:
! 447: will show </span></li>
! 448:
! 449: <li><b><numericalhint></b><span
! 450:
! 451: style='font-weight:normal'> has all the arguments that <numericalresponse>,
! 452:
! 453: does and the required attribute <i>name</i></span> which should be set
! 454:
! 455: to the value of which <hintpart> will be shown. </li>
! 456:
! 457: </ul>
! 458:
! 459: <li><b>Input Tags </b></li>
! 460:
! 461: </ul>
! 462:
! 463: <p>This group of tags implement a mechanism for getting data for students, they
! 464:
! 465: will usually be used by a <*response>. </p>
! 466:
! 467: <ul type=disc>
! 468:
! 469: <ul type=circle>
! 470:
! 471: <li><b><textarea></b><span
! 472:
! 473: style='font-weight:normal'> creates a Large text input box, If data appears
! 474:
! 475: between the start and end tags, the data will appear i the textarea if
! 476:
! 477: the student has not yet made a submission. Additionally it takes two arguments
! 478:
! 479: <i>rows</i></span> and <i>cols</i><span
! 480:
! 481: style='font-style:normal'> which control the height and width of the area
! 482:
! 483: respectively. It defaults to 10 and 80. </span></li>
! 484:
! 485: <li><b><textline></b><span
! 486:
! 487: style='font-weight:normal'> creates a single line of input element, it accepts
! 488:
! 489: 1 argument <i>size</i></span> which controls the width on the textline,
! 490:
! 491: it defaults to 20. </li>
! 492:
! 493: </ul>
! 494:
! 495: <li><b>Output Tags </b></li>
! 496:
! 497: </ul>
! 498:
! 499: <p>This group of tags generate useful pieces of output. </p>
! 500:
! 501: <ul type=disc>
! 502:
! 503: <ul type=circle>
! 504:
! 505: <li><b><standalone></b><span
! 506:
! 507: style='font-weight:normal'> everything in between the start and end tag
! 508:
! 509: is shown only on the web, and only if the resource is not part of a course.
! 510:
! 511: </span></li>
! 512:
! 513: <li><b><displayduedate></b><span
! 514:
! 515: style='font-weight:normal'> this will insert the current duedate if one
! 516:
! 517: is set into the document. It is generated to be inside a table of 1x1
! 518:
! 519: elements </span></li>
! 520:
! 521: <li><b><displaytitle></b><span
! 522:
! 523: style='font-weight:normal'> this will insert the title of the problem from
! 524:
! 525: the metadata of the problem </span></li>
! 526:
! 527: <li><b><window></b><span
! 528:
! 529: style='font-weight:normal'> the text in between is put in a popup javascript
! 530:
! 531: window </span></li>
! 532:
! 533: <li><b><m></b><span
! 534:
! 535: style='font-weight:normal'> the inside text is LaTeX, and is converted to
! 536:
! 537: HTML (or MathML) on the fly, if the argument <i>eval</i></span> is set
! 538:
! 539: to "on" the intervening text will have a perl var expansion
! 540:
! 541: done to it before being converted. </li>
! 542:
! 543: <li><b><randomlabel></b><span
! 544:
! 545: style='font-weight:normal'> shows a specified image with images or text
! 546:
! 547: labels randomly assigned to a set of specific locations, those locations
! 548:
! 549: may also have values assigned to them. There is a hash generated conating
! 550:
! 551: the mapping of labels to locations, labels to values, and locations to
! 552:
! 553: values. Example: </span></li>
! 554:
! 555: </ul>
! 556:
! 557: </ul>
! 558:
! 559: <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>
! 560:
! 561: <p>Arguments: </p>
! 562:
! 563: <ul type=disc>
! 564:
! 565: <ul type=circle>
! 566:
! 567: <ul type=square>
! 568:
! 569: <li><i>bgimg</i><span
! 570:
! 571: style='font-style:normal'> either a fully qualified URL for an external
! 572:
! 573: image, or a loncapa resource, it supports relative references (../images/apicture.gif),
! 574:
! 575: the image must either be a GIF or JPEG </span></li>
! 576:
! 577: <li><i>width</i><span
! 578:
! 579: style='font-style:normal'> the width of the image in pixels </span></li>
! 580:
! 581: <li><i>height</i><span
! 582:
! 583: style='font-style:normal'> the height of the image in pixels </span></li>
! 584:
! 585: <li><i>texwidth</i><span
! 586:
! 587: style='font-style:normal'> the width of the image in millimeters </span></li>
! 588:
! 589: </ul>
! 590:
! 591: </ul>
! 592:
! 593: </ul>
! 594:
! 595: <p>Internal tags: </p>
! 596:
! 597: <ul type=disc>
! 598:
! 599: <ul type=circle>
! 600:
! 601: <ul type=square>
! 602:
! 603: <li><b><labelgroup></b><span
! 604:
! 605: style='font-weight:normal'> 1 required, multiple allowed. Declares a group
! 606:
! 607: of locations and labels associated with them. <br>
! 608:
! 609: Arguments: </span></li>
! 610:
! 611: <ul type=square>
! 612:
! 613: <li><i>name</i><span
! 614:
! 615: style='font-style:normal'> this is the name of the group, a hash with
! 616:
! 617: this name will be generated holding the mappings for later use in
! 618:
! 619: the problem. For each location a value will be set for which label
! 620:
! 621: is there, (EX. $hash{'1'}="TEXT-2"). For locations with
! 622:
! 623: values the hash will contain 2 items, a location to value mapping
! 624:
! 625: ($hash{'value_1'}=10), and a label to value mapping ($hash{'labelvalue_2'}=10).
! 626:
! 627: For all image style of labels there will also be a label description
! 628:
! 629: to label URL mapping ($hash{'image_2'}=IMG-URL). Also the entry 'numlocations
! 630:
! 631: will be set to the total number of locations that exist. (Note that
! 632:
! 633: locations and labels start counting from 1.) </span></li>
! 634:
! 635: <li><i>type</i><span
! 636:
! 637: style='font-style:normal'> the type of labels in this group, either 'image'
! 638:
! 639: or 'text' </span></li>
! 640:
! 641: </ul>
! 642:
! 643: <li><b><location></b><span
! 644:
! 645: style='font-weight:normal'> declares a location on the image that a label
! 646:
! 647: should appear at <br>
! 648:
! 649: Arguments: </span></li>
! 650:
! 651: <ul type=square>
! 652:
! 653: <li><i>x</i><span
! 654:
! 655: style='font-style:normal'> the x value of the location in pixels </span></li>
! 656:
! 657: <li><i>y</i><span
! 658:
! 659: style='font-style:normal'> the y value of the location in pixels </span></li>
! 660:
! 661: <li><i>value</i><span
! 662:
! 663: style='font-style:normal'> a scalar value to associate at this location
! 664:
! 665: (optional) </span></li>
! 666:
! 667: </ul>
! 668:
! 669: <li><b><label></b><span
! 670:
! 671: style='font-weight:normal'> declaration of a label, if this is a text type
! 672:
! 673: labelgroup the internal text should be the text of the label (HTML is
! 674:
! 675: not currently supported), if this is an image type of label the internal
! 676:
! 677: text must be a LON-CAPA resource specification, and the description
! 678:
! 679: filed must be set. <br>
! 680:
! 681: Arguments: </span></li>
! 682:
! 683: <ul type=square>
! 684:
! 685: <li><i>description</i><span
! 686:
! 687: style='font-style:normal'> a required field for image labels, it will
! 688:
! 689: be used when setting values in the hash. </span></li>
! 690:
! 691: </ul>
! 692:
! 693: </ul>
! 694:
! 695: </ul>
! 696:
! 697: <li><b>Scripting </b></li>
! 698:
! 699: </ul>
! 700:
! 701: <p>These tags allow the document to behave programatically </p>
! 702:
! 703: <ul type=disc>
! 704:
! 705: <ul type=circle>
! 706:
! 707: <li><b><display></b><span
! 708:
! 709: style='font-weight:normal'> the intervening perl script is evaluated in
! 710:
! 711: the safe space and the return value of the script replaces the entire
! 712:
! 713: tag </span></li>
! 714:
! 715: <li><b><import></b><span
! 716:
! 717: style='font-weight:normal'> causes the parse to read in the file named in
! 718:
! 719: the body of the tag and parse it as if the entire text of the file had
! 720:
! 721: existed at location of the tag </span></li>
! 722:
! 723: <li><b><parserlib></b><span
! 724:
! 725: style='font-weight:normal'> the enclosed filename contains definitions for
! 726:
! 727: new tags </span></li>
! 728:
! 729: <li><b><script></b><span
! 730:
! 731: style='font-weight:normal'> if the argument <i>type</i></span> is set to
! 732:
! 733: "loncapa/perl" the enclosed data is a perl script which is evaluated
! 734:
! 735: inside the perl Safe space. The return value of the script is ignored.
! 736:
! 737: </li>
! 738:
! 739: <li><b><scriptlib></b><span
! 740:
! 741: style='font-weight:normal'> the enclosed filename contains perl code to
! 742:
! 743: run in the safe space </span></li>
! 744:
! 745: <li><b><block></b><span
! 746:
! 747: style='font-weight:normal'> has a required argument <i>condition</i></span>
! 748:
! 749: that is evaluated, it the condition is true everything inside the tag
! 750:
! 751: is evaluated, if it is false everything inside the block tag is skipped
! 752:
! 753: </li>
! 754:
! 755: <li><b><notsolved></b><span
! 756:
! 757: style='font-weight:normal'> everything inside the tag is skipped if the
! 758:
! 759: problem is "solved" </span></li>
! 760:
! 761: <li><b><postanswerdate></b><span
! 762:
! 763: style='font-weight:normal'> everything inside the tag is skipped if the
! 764:
! 765: problem is before the answer date </span></li>
! 766:
! 767: <li><b><preduedate></b><span
! 768:
! 769: style='font-weight:normal'> everything inside the tag is skipped if the
! 770:
! 771: problem is after the due date </span></li>
! 772:
! 773: <li><b><randomlist></b><span
! 774:
! 775: style='font-weight:normal'> the enclosed tags are parsed in a stable random
! 776:
! 777: order, optional argument <i>show</i></span> restricts the number of tags
! 778:
! 779: indie that are actually parsed the no more than <i>show</i><span
! 780:
! 781: style='font-style:normal'>. </span></li>
! 782:
! 783: <li><b><solved></b><span
! 784:
! 785: style='font-weight:normal'> everything inside the tag is skipped if the
! 786:
! 787: problem is "not solved" </span></li>
! 788:
! 789: <li><b><while></b><span
! 790:
! 791: style='font-weight:normal'> implements a while loop, required argument <i>condition</i></span>
! 792:
! 793: is a perl scriptlet that when evaluated results in a true or false value,
! 794:
! 795: on true the entirety of the text between the whiles is parsed. The condition
! 796:
! 797: is tested again, etc. If false it goes to the next node in the parse.
! 798:
! 799: </li>
! 800:
! 801: </ul>
! 802:
! 803: <li><b>Structure Tags </b></li>
! 804:
! 805: </ul>
! 806:
! 807: <p>These tags give the problem a structure and take care of the recording of
! 808:
! 809: data and giving the student messages. </p>
! 810:
! 811: <ul type=disc>
! 812:
! 813: <ul type=circle>
! 814:
! 815: <li><b><problem></b><span
! 816:
! 817: style='font-weight:normal'> must be the first tag in the file, this tag
! 818:
! 819: sets up the header of the webpage and generates the submit buttons, it
! 820:
! 821: also handles due dates properly </span></li>
! 822:
! 823: <li><b><part></b><span
! 824:
! 825: style='font-weight:normal'> must be below <problem> if it is going
! 826:
! 827: to be used. It does many of the same tasks as <problem> but allows
! 828:
! 829: multiple separate problems to exist in a single file. </span></li>
! 830:
! 831: <li><b><startouttext><endouttext></b><span
! 832:
! 833: style='font-weight:normal'> these tags are somewhat special, they must have
! 834:
! 835: no internal text and occur in pairs. Their use is to mark up the problem
! 836:
! 837: so the web editor knows what sections should be edited in a plain text
! 838:
! 839: block on the web. </span></li>
! 840:
! 841: </ul>
! 842:
! 843: </ul>
! 844:
! 845: <h3><a name="_Toc421867128"><script> Functions</a></h3>
! 846:
! 847: <p>A list of functions that have been written that are available in the Safe
! 848:
! 849: space scripting environment inside a problem. </p>
! 850:
! 851: <ul type=disc>
! 852:
! 853: <li>sin(x), cos(x), tan(x)</li>
! 854:
! 855: <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
! 856:
! 857: <li>log(x), log10(x)</li>
! 858:
! 859: <li>exp(), pow(x,y), sqrt(x)</li>
! 860:
! 861: <li>abs(x), sgn(x)</li>
! 862:
! 863: <li>erf(x), erfc(x)</li>
! 864:
! 865: <li>ceil(x), floor(x)</li>
! 866:
! 867: <li>min(...), max(...)</li>
! 868:
! 869: <li>factorial(n)</li>
! 870:
! 871: <li>N%M</li>
! 872:
! 873: <li>sinh(x), cosh(x), tanh(x)</li>
! 874:
! 875: <li>asinh(x), acosh(x), atanh(x)</li>
! 876:
! 877: <li>roundto(x,n)</li>
! 878:
! 879: <li>web("a","b","c") or web(a,b,c)</li>
! 880:
! 881: <li>html("a") or html(a)</li>
! 882:
! 883: <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
! 884:
! 885: <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
! 886:
! 887: <li>random</li>
! 888:
! 889: <li>choose</li>
! 890:
! 891: <li>tex("a","b") or tex(a,b)</li>
! 892:
! 893: <li>var_in_tex(a)</li>
! 894:
! 895: <li>to_string(x), to_string(x,y)</li>
! 896:
! 897: <li>class(), section()</li>
! 898:
! 899: <li>name(), student_number()</li>
! 900:
! 901: <li>open_date(), due_date(), answer_date()</li>
! 902:
! 903: <li>sub_string()</li>
! 904:
! 905: <li>array_moments(array)</li>
! 906:
! 907: <li>format(x,y),prettyprint(x,y)</li>
! 908:
! 909: <li>map(...)</li>
! 910:
! 911: <li>caparesponse_check</li>
! 912:
! 913: <li>caparesponse_check_list</li>
! 914:
! 915: </ul>
! 916:
! 917: <h3><a name="_Toc421867129">Detailed descriptions of each function and comparison
! 918:
! 919: with CAPA</a></h3>
! 920:
! 921: <table border=1 cellpadding=0>
! 922:
! 923: <tr>
! 924:
! 925: <td width=131 valign=top class="Normal"> <p><b>CAPA Functions</b></p></td>
! 926:
! 927: <td width=134 valign=top class="Normal"> <p><b>LON-CAPA</b></p></td>
! 928:
! 929: <td width=147 valign=top class="Normal"> <p><b>Descriptions</b></p></td>
! 930:
! 931: <td width=101 valign=top class="Normal"> <p><b>Differences (if any)</b></p></td>
! 932:
! 933: </tr>
! 934:
! 935: <tr>
! 936:
! 937: <td width=131 valign=top class="Normal"> <p>sin(x), cos(x), tan(x)</p></td>
! 938:
! 939: <td width=134 valign=top class="Normal"> <p>&sin($x), &cos($x),
! 940:
! 941: &tan($x)</p></td>
! 942:
! 943: <td width=147 valign=top class="Normal"> <p>Trigonometric functions where
! 944:
! 945: x is in radians. $x can be a pure number, i.e., you can call &sin(3.1415)</p></td>
! 946:
! 947: <td width=101 valign=top class="Normal"> </td>
! 948:
! 949: </tr>
! 950:
! 951: <tr>
! 952:
! 953: <td width=131 valign=top class="Normal"> <p>asin(x), acos(x), atan(x), atan2(y,x)</p></td>
! 954:
! 955: <td width=134 valign=top class="Normal"> <p>&asin($x), &acos($x),
! 956:
! 957: &atan($x), &atan2($y,$x)</p></td>
! 958:
! 959: <td width=147 valign=top class="Normal"> <p>Inverse trigonometric functions.
! 960:
! 961: Return value is in radians. For asin and acos the value of x must be
! 962:
! 963: between -1 and 1. The atan2 returns a value between -pi and pi the sign
! 964:
! 965: of which is determined by y. $x and $y can be pure numbers</p></td>
! 966:
! 967: <td width=101 valign=top class="Normal"> </td>
! 968:
! 969: </tr>
! 970:
! 971: <tr>
! 972:
! 973: <td width=131 valign=top class="Normal"> <p>log(x), log10(x)</p></td>
! 974:
! 975: <td width=134 valign=top class="Normal"> <p>&log($x), &log10($x)</p></td>
! 976:
! 977: <td width=147 valign=top class="Normal"> <p>Natural and base-10 logarithm.
! 978:
! 979: $x can be a pure number</p></td>
! 980:
! 981: <td width=101 valign=top class="Normal"> </td>
! 982:
! 983: </tr>
! 984:
! 985: <tr>
! 986:
! 987: <td width=131 valign=top class="Normal"> <p>exp(x), pow(x,y), sqrt(x)</p></td>
! 988:
! 989: <td width=134 valign=top class="Normal"> <p>&exp($x), &pow($x,$y),
! 990:
! 991: &sqrt($x)</p></td>
! 992:
! 993: <td width=147 valign=top class="Normal"> <p>Exponential, power and square
! 994:
! 995: root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure
! 996:
! 997: numbers</p></td>
! 998:
! 999: <td width=101 valign=top class="Normal"> </td>
! 1000:
! 1001: </tr>
! 1002:
! 1003: <tr>
! 1004:
! 1005: <td width=131 valign=top class="Normal"> <p>abs(x), sgn(x)</p></td>
! 1006:
! 1007: <td width=134 valign=top class="Normal"> <p>&abs($x), &sgn($x)</p></td>
! 1008:
! 1009: <td width=147 valign=top class="Normal"> <p>Abs takes the absolute value
! 1010:
! 1011: of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For
! 1012:
! 1013: x>0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x<0, sgn(x) = -1.
! 1014:
! 1015: $x can be a pure number</p></td>
! 1016:
! 1017: <td width=101 valign=top class="Normal"> </td>
! 1018:
! 1019: </tr>
! 1020:
! 1021: <tr>
! 1022:
! 1023: <td width=131 valign=top class="Normal"> <p>erf(x), erfc(x)</p></td>
! 1024:
! 1025: <td width=134 valign=top class="Normal"> <p>&erf($x), &erfc($x)</p></td>
! 1026:
! 1027: <td width=147 valign=top class="Normal"> <p>Error function. erf =
! 1028:
! 1029: 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>erfx(x)</i><span style='font-style:normal'>
! 1030:
! 1031: = 1.0 - </span><i>erf(x)</i><span
! 1032:
! 1033: style='font-style:normal'>. $x can be a pure number</span></p></td>
! 1034:
! 1035: <td width=101 valign=top class="Normal"> </td>
! 1036:
! 1037: </tr>
! 1038:
! 1039: <tr>
! 1040:
! 1041: <td width=131 valign=top class="Normal"> <p>ceil(x), floor(x)</p></td>
! 1042:
! 1043: <td width=134 valign=top class="Normal"> <p>&ceil($x), &floor($x)</p></td>
! 1044:
! 1045: <td width=147 valign=top class="Normal"> <p>Ceil function returns an integer
! 1046:
! 1047: rounded up whereas floor function returns and integer rounded down.
! 1048:
! 1049: If x is an integer than it returns the value of the integer. $x can
! 1050:
! 1051: be a pure number</p></td>
! 1052:
! 1053: <td width=101 valign=top class="Normal"> </td>
! 1054:
! 1055: </tr>
! 1056:
! 1057: <tr>
! 1058:
! 1059: <td width=131 valign=top class="Normal"> <p>min(...), max(...)</p></td>
! 1060:
! 1061: <td width=134 valign=top class="Normal"> <p>&min(...), &max(...)</p></td>
! 1062:
! 1063: <td width=147 valign=top class="Normal"> <p>Returns the minimum/ maximum
! 1064:
! 1065: value of a list of arguments if the arguments are numbers. If the arguments
! 1066:
! 1067: are strings then it returns a string sorted according to the ASCII codes</p></td>
! 1068:
! 1069: <td width=101 valign=top class="Normal"> </td>
! 1070:
! 1071: </tr>
! 1072:
! 1073: <tr>
! 1074:
! 1075: <td width=131 valign=top class="Normal"> <p>factorial(n)</p></td>
! 1076:
! 1077: <td width=134 valign=top class="Normal"> <p>&factorial($n)</p></td>
! 1078:
! 1079: <td width=147 valign=top class="Normal"> <p>Argument (n) must be an integer
! 1080:
! 1081: else it will round down. The largest value for n is 170. $n can be a
! 1082:
! 1083: pure number</p></td>
! 1084:
! 1085: <td width=101 valign=top class="Normal"> </td>
! 1086:
! 1087: </tr>
! 1088:
! 1089: <tr>
! 1090:
! 1091: <td width=131 valign=top class="Normal"> <p>N%M</p></td>
! 1092:
! 1093: <td width=134 valign=top class="Normal"> <p>$N%$M</p></td>
! 1094:
! 1095: <td width=147 valign=top class="Normal"> <p>N and M are integers and returns
! 1096:
! 1097: the remainder (in integer) of N/M. $N and $M can be pure numbers</p></td>
! 1098:
! 1099: <td width=101 valign=top class="Normal"> </td>
! 1100:
! 1101: </tr>
! 1102:
! 1103: <tr>
! 1104:
! 1105: <td width=131 valign=top class="Normal"> <p>sinh(x), cosh(x), tanh(x)</p></td>
! 1106:
! 1107: <td width=134 valign=top class="Normal"> <p>&sinh($x), &cosh($x),
! 1108:
! 1109: &tanh($x)</p></td>
! 1110:
! 1111: <td width=147 valign=top class="Normal"> <p>Hyperbolic functions. $x can
! 1112:
! 1113: be a pure number</p></td>
! 1114:
! 1115: <td width=101 valign=top class="Normal"> </td>
! 1116:
! 1117: </tr>
! 1118:
! 1119: <tr>
! 1120:
! 1121: <td width=131 valign=top class="Normal"> <p>asinh(x), acosh(x), atanh(x)</p></td>
! 1122:
! 1123: <td width=134 valign=top class="Normal"> <p>&asinh($x), &acosh($x),
! 1124:
! 1125: &atanh($x)</p></td>
! 1126:
! 1127: <td width=147 valign=top class="Normal"> <p>Inverse hyperbolic functions.
! 1128:
! 1129: $x can be a pure number</p></td>
! 1130:
! 1131: <td width=101 valign=top class="Normal"> </td>
! 1132:
! 1133: </tr>
! 1134:
! 1135: <tr>
! 1136:
! 1137: <td width=131 valign=top class="Normal"> <p>/DIS($x,"nn")</p></td>
! 1138:
! 1139: <td width=134 valign=top class="Normal"> <p>&format($x,"nn")</p></td>
! 1140:
! 1141: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
! 1142:
! 1143: nn is nF or nE and n is an integer.</p></td>
! 1144:
! 1145: <td width=101 valign=top class="Normal"> <p> The difference is obvious.</p></td>
! 1146:
! 1147: </tr>
! 1148:
! 1149: <tr>
! 1150:
! 1151: <td width=131 valign=top class="Normal"> <p>Not in CAPA</p></td>
! 1152:
! 1153: <td width=134 valign=top class="Normal"> <p>&prettyprint($x,"nn")</p></td>
! 1154:
! 1155: <td width=147 valign=top class="Normal"> <p>Display or format $x as nn where
! 1156:
! 1157: nn is nF or nE and n is an integer. In E mode it will attempt to generate
! 1158:
! 1159: a pretty x10^3 rather than a E3 following the number</p></td>
! 1160:
! 1161: <td width=101 valign=top class="Normal"> </td>
! 1162:
! 1163: </tr>
! 1164:
! 1165: <tr>
! 1166:
! 1167: <td width=131 valign=top class="Normal"> <p>roundto(x,n)</p></td>
! 1168:
! 1169: <td width=134 valign=top class="Normal"> <p>&roundto($x,$n)</p></td>
! 1170:
! 1171: <td width=147 valign=top class="Normal"> <p>Rounds a real number to n decimal
! 1172:
! 1173: points. $x and $n can be pure numbers</p></td>
! 1174:
! 1175: <td width=101 valign=top class="Normal"> </td>
! 1176:
! 1177: </tr>
! 1178:
! 1179: <tr>
! 1180:
! 1181: <td width=131 valign=top class="Normal"> <p>web("a","b","c")
! 1182:
! 1183: or web(a,b,c)</p></td>
! 1184:
! 1185: <td width=134 valign=top class="Normal"> <p>&web("a","b","c")
! 1186:
! 1187: or &web($a,$b,$c)</p></td>
! 1188:
! 1189: <td width=147 valign=top class="Normal"> <p>Returns either a, b or c depending
! 1190:
! 1191: on the output medium. a is for plain ASCII, b for tex output and c for
! 1192:
! 1193: html output</p></td>
! 1194:
! 1195: <td width=101 valign=top class="Normal"> </td>
! 1196:
! 1197: </tr>
! 1198:
! 1199: <tr>
! 1200:
! 1201: <td width=131 valign=top class="Normal"> <p>html("a") or html(a)</p></td>
! 1202:
! 1203: <td width=134 valign=top class="Normal"> <p>&html("a") or
! 1204:
! 1205: &html($a)</p></td>
! 1206:
! 1207: <td width=147 valign=top class="Normal"> <p>Output only if the output mode
! 1208:
! 1209: chosen is in html format</p></td>
! 1210:
! 1211: <td width=101 valign=top class="Normal"> </td>
! 1212:
! 1213: </tr>
! 1214:
! 1215: <tr>
! 1216:
! 1217: <td width=131 valign=top class="Normal"> <p>jn(m,x)</p></td>
! 1218:
! 1219: <td width=134 valign=top class="Normal"> <p>&j0($x), &j1($x), &jn($m,$x),
! 1220:
! 1221: &jv($y,$x)</p></td>
! 1222:
! 1223: <td width=147 valign=top class="Normal"> <p>Bessel functions of the first
! 1224:
! 1225: kind with orders 0, 1 and m respectively. For jn(m,x), m must be an
! 1226:
! 1227: integer whereas for jv(y,x), y is real. $x can be a pure number. $m
! 1228:
! 1229: must be an integer and can be a pure integer number. $y can be a pure
! 1230:
! 1231: real number</p></td>
! 1232:
! 1233: <td width=101 valign=top class="Normal"> <p>In CAPA, j0, j1 and jn are contained
! 1234:
! 1235: in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x)
! 1236:
! 1237: is new to LON-CAPA.</p></td>
! 1238:
! 1239: </tr>
! 1240:
! 1241: <tr>
! 1242:
! 1243: <td width=131 valign=top class="Normal"> <p>yn(m,x)</p></td>
! 1244:
! 1245: <td width=134 valign=top class="Normal"> <p>&y0($x), &y1($x), &yn($m,$x),
! 1246:
! 1247: &yv($y,$x)</p></td>
! 1248:
! 1249: <td width=147 valign=top class="Normal"> <p>Bessel functions of the second
! 1250:
! 1251: kind with orders 0, 1 and m respectively. For yn(m,x), m must be an
! 1252:
! 1253: integer whereas for yv(y,x), y is real. $x can be a pure number. $m
! 1254:
! 1255: must be an integer and can be a pure integer number. $y can be a pure
! 1256:
! 1257: real number</p></td>
! 1258:
! 1259: <td width=101 valign=top class="Normal"> <p>In CAPA, y0, y1 and yn are contained
! 1260:
! 1261: in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x)
! 1262:
! 1263: is new to LON-CAPA.</p></td>
! 1264:
! 1265: </tr>
! 1266:
! 1267: <tr>
! 1268:
! 1269: <td width=131 valign=top class="Normal"> <p>random(l,u,d)</p></td>
! 1270:
! 1271: <td width=134 valign=top class="Normal"> <p>&random($l,$u,$d)</p></td>
! 1272:
! 1273: <td width=147 valign=top class="Normal"> <p>Returns a uniformly distributed
! 1274:
! 1275: random number between the lower bound, l and upper bound, u in steps
! 1276:
! 1277: of d. $l, $u and $d can be pure numbers</p></td>
! 1278:
! 1279: <td width=101 valign=top class="Normal"> <p>In CAPA, all the 3 arguments
! 1280:
! 1281: must be of the same type. However, now you can mix the type</p></td>
! 1282:
! 1283: </tr>
! 1284:
! 1285: <tr>
! 1286:
! 1287: <td width=131 valign=top class="Normal"> <p>choose(i,...)</p></td>
! 1288:
! 1289: <td width=134 valign=top class="Normal"> <p>&choose($i,...)</p></td>
! 1290:
! 1291: <td width=147 valign=top class="Normal"> <p>Choose the ith item from the
! 1292:
! 1293: argument list. i must be an integer greater than 0 and the value of
! 1294:
! 1295: i should not exceed the number of items. $i can be a pure integer</p></td>
! 1296:
! 1297: <td width=101 valign=top class="Normal"> </td>
! 1298:
! 1299: </tr>
! 1300:
! 1301: <tr>
! 1302:
! 1303: <td width=131 valign=top class="Normal"> <p>/MAP(seed;w,x,y,z;a,b,c,d)</p></td>
! 1304:
! 1305: <td width=134 valign=top class="Normal"> <p>Option 1 - &map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
! 1306:
! 1307: or <br>
! 1308:
! 1309: Option 2 - &map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
! 1310:
! 1311: Option 3 - @mappedArray = &map($seed,[$a,$b,$c,$d]) <br>
! 1312:
! 1313: Option 4 - ($w,$x,$y,$z) = &map($seed,\@a) <br>
! 1314:
! 1315: where $a='A'<br>
! 1316:
! 1317: $b='B'<br>
! 1318:
! 1319: $c='B'<br>
! 1320:
! 1321: $d='B'<br>
! 1322:
! 1323: $w, $x, $y, and $z are variables</p></td>
! 1324:
! 1325: <td width=147 valign=top class="Normal"> <p>Assigns to the variables $w,
! 1326:
! 1327: $x, $y and $z the values of the $a, $b, $c and $c (A, B, C and D). The
! 1328:
! 1329: precise value for $w .. depends on the seed. (Option 1 of calling map).
! 1330:
! 1331: In option 2, the values of $a, $b .. are mapped into the array, @mappedArray.
! 1332:
! 1333: The two options illustrate the different grouping. Options 3 and 4 give
! 1334:
! 1335: a consistent way (with other functions) of mapping the items. For each
! 1336:
! 1337: option, the group can be passed as an array, for example, [$a,$b,$c,$d]
! 1338:
! 1339: => \@a.</p></td>
! 1340:
! 1341: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
! 1342:
! 1343: into three groups separated by a semicolon ;. In LON-CAPA, the separation
! 1344:
! 1345: is done by using [] brackets or using an array @a. Note the backslash
! 1346:
! 1347: (\) before the arguments in the second and third groups.</p></td>
! 1348:
! 1349: </tr>
! 1350:
! 1351: <tr>
! 1352:
! 1353: <td width=131 valign=top class="Normal"> <p>rmap(seed;a,b,c,d;w,x,y,z)</p></td>
! 1354:
! 1355: <td width=134 valign=top class="Normal"> <p>Option 1 - &rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d])
! 1356:
! 1357: or <br>
! 1358:
! 1359: Option 2 - &rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
! 1360:
! 1361: Option 3 - @rmapped_array = &rmap($seed,[$a,$b,$c,$d]) <br>
! 1362:
! 1363: Option 4 - ($w,$x,$y,$z) = &rmap($seed,\@a) <br>
! 1364:
! 1365: where $a='A'<br>
! 1366:
! 1367: $b='B'<br>
! 1368:
! 1369: $c='B'<br>
! 1370:
! 1371: $d='B'<br>
! 1372:
! 1373: $w, $x, $y, and $z are variables</p></td>
! 1374:
! 1375: <td width=147 valign=top class="Normal"> <p>The rmap functions does the
! 1376:
! 1377: reverse action of map if the same seed is used in calling map and rmap.
! 1378:
! 1379: </p></td>
! 1380:
! 1381: <td width=101 valign=top class="Normal"> <p>In CAPA, the arguments are divided
! 1382:
! 1383: into three groups separated by a semicolon ;. In LON-CAPA, the separation
! 1384:
! 1385: is done by using [] brackets (with create an unamed vector reference)
! 1386:
! 1387: or using an array @a. Note the backslash (\) before the arguments in
! 1388:
! 1389: the second and third groups (Which cause Perl to send to variable locations
! 1390:
! 1391: rather than the variable values, similar to a C pointer).</p></td>
! 1392:
! 1393: </tr>
! 1394:
! 1395: <tr>
! 1396:
! 1397: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1398:
! 1399: <td width=134 valign=top class="Normal"> <p>$a=&xmlparse($string) </p></td>
! 1400:
! 1401: <td width=147 valign=top class="Normal"> <p>Runs the internal parser over
! 1402:
! 1403: the argument parsing for display. <b>Warning</b><span style='font-weight:normal'>
! 1404:
! 1405: This will result in different strings in different targets. Don't use
! 1406:
! 1407: the results of this function as an answer.</span></p></td>
! 1408:
! 1409: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1410:
! 1411: </tr>
! 1412:
! 1413: <tr>
! 1414:
! 1415: <td width=131 valign=top class="Normal"> <p>tex(a,b), tex("a","b")</p></td>
! 1416:
! 1417: <td width=134 valign=top class="Normal"> <p>&tex($a,$b), &tex("a","b")</p></td>
! 1418:
! 1419: <td width=147 valign=top class="Normal"> <p>Returns a if the output mode
! 1420:
! 1421: is in tex otherwise returns b</p></td>
! 1422:
! 1423: <td width=101 valign=top class="Normal"> </td>
! 1424:
! 1425: </tr>
! 1426:
! 1427: <tr>
! 1428:
! 1429: <td width=131 valign=top class="Normal"> <p>var_in_tex(a)</p></td>
! 1430:
! 1431: <td width=134 valign=top class="Normal"> <p>&var_in_tex($a)</p></td>
! 1432:
! 1433: <td width=147 valign=top class="Normal"> <p>Equivalent to tex("a","")</p></td>
! 1434:
! 1435: <td width=101 valign=top class="Normal"> </td>
! 1436:
! 1437: </tr>
! 1438:
! 1439: <tr>
! 1440:
! 1441: <td width=131 valign=top class="Normal"> <p>to_string(x), to_string(x,y)</p></td>
! 1442:
! 1443: <td width=134 valign=top class="Normal"> <p>&to_string($x), &to_string($x,$y)</p></td>
! 1444:
! 1445: <td width=147 valign=top class="Normal"> <p>If x is an integer, returns
! 1446:
! 1447: a string. If x is real than the output is a string with format given
! 1448:
! 1449: by y. For example, if x = 12.3456, &to_string(x,".3F")
! 1450:
! 1451: = 12.345 and &to_string(x,".3E") = 1.234E+01.</p></td>
! 1452:
! 1453: <td width=101 valign=top class="Normal"> </td>
! 1454:
! 1455: </tr>
! 1456:
! 1457: <tr>
! 1458:
! 1459: <td width=131 valign=top class="Normal"> <p>capa_id(), class(), section(),
! 1460:
! 1461: set(), problem()</p></td>
! 1462:
! 1463: <td width=134 valign=top class="Normal"> <p>&class(), &section()</p></td>
! 1464:
! 1465: <td width=147 valign=top class="Normal"> <p>Returns null string, class descriptive
! 1466:
! 1467: name, section number, set number and null string.</p></td>
! 1468:
! 1469: <td width=101 valign=top class="Normal"> <p>capa_id(), set() and problem()
! 1470:
! 1471: are no longer used. Currently, they return a null value.</p></td>
! 1472:
! 1473: </tr>
! 1474:
! 1475: <tr>
! 1476:
! 1477: <td width=131 valign=top class="Normal"> <p>name(), student_number()</p></td>
! 1478:
! 1479: <td width=134 valign=top class="Normal"> <p>&name(), &student_number()</p></td>
! 1480:
! 1481: <td width=147 valign=top class="Normal"> <p>Return the full name in the
! 1482:
! 1483: following format: lastname, firstname initial. Student_number returns
! 1484:
! 1485: the student 9-alphanumeric string. If undefined, the functions return
! 1486:
! 1487: null.</p></td>
! 1488:
! 1489: <td width=101 valign=top class="Normal"> </td>
! 1490:
! 1491: </tr>
! 1492:
! 1493: <tr>
! 1494:
! 1495: <td width=131 valign=top class="Normal"> <p>open_date(), due_date(), answer_date()</p></td>
! 1496:
! 1497: <td width=134 valign=top class="Normal"> <p>&open_date(), &due_date(),
! 1498:
! 1499: &answer_date()</p></td>
! 1500:
! 1501: <td width=147 valign=top class="Normal"> <p>Problem open date, due date
! 1502:
! 1503: and answer date. The time is also included in 24-hr format.</p></td>
! 1504:
! 1505: <td width=101 valign=top class="Normal"> <p>Output format for time is changed
! 1506:
! 1507: slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59
! 1508:
! 1509: is displayed as 11:59 pm.</p></td>
! 1510:
! 1511: </tr>
! 1512:
! 1513: <tr>
! 1514:
! 1515: <td width=131 valign=top class="Normal"> <p>get_seed(), set_seed()</p></td>
! 1516:
! 1517: <td width=134 valign=top class="Normal"> <p>Not implemented</p></td>
! 1518:
! 1519: <td width=147 valign=top class="Normal"> <p>Get and set the random seed.</p></td>
! 1520:
! 1521: <td width=101 valign=top class="Normal"> </td>
! 1522:
! 1523: </tr>
! 1524:
! 1525: <tr>
! 1526:
! 1527: <td width=131 valign=top class="Normal"> <p>sub_string(a,b,c)</p></td>
! 1528:
! 1529: <td width=134 valign=top class="Normal"> <p>&sub_string($a,$b,$c) <br>
! 1530:
! 1531: perl substr function. However, note the differences</p></td>
! 1532:
! 1533: <td width=147 valign=top class="Normal"> <p>Retrieve a portion of string
! 1534:
! 1535: a starting from b and length c. For example, $a = "Welcome
! 1536:
! 1537: to LON-CAPA"; $result=&sub_string($a,4,4); then $result is
! 1538:
! 1539: "come"</p></td>
! 1540:
! 1541: <td width=101 valign=top class="Normal"> <p>Perl intrinsic function, substr(string,b,c)
! 1542:
! 1543: starts counting from 0 (as opposed to 1). In the example to the left,
! 1544:
! 1545: substr($a,4,4) returns "ome ".</p></td>
! 1546:
! 1547: </tr>
! 1548:
! 1549: <tr>
! 1550:
! 1551: <td width=131 valign=top class="Normal"> <p>array[xx]</p></td>
! 1552:
! 1553: <td width=134 valign=top class="Normal"> <p>@arrayname <br>
! 1554:
! 1555: Array is intrinsic in perl. To access a specific element use $arrayname[$n]
! 1556:
! 1557: where $n is the $n+1 element since the array count starts from 0</p></td>
! 1558:
! 1559: <td width=147 valign=top class="Normal"> <p>"xx" can be a variable
! 1560:
! 1561: or a calculation.</p></td>
! 1562:
! 1563: <td width=101 valign=top class="Normal"> <p>In LON-CAPA, an array is defined
! 1564:
! 1565: by @arrayname. It is not necessary to specify the dimension of the array. </p></td>
! 1566:
! 1567: </tr>
! 1568:
! 1569: <tr>
! 1570:
! 1571: <td width=131 valign=top class="Normal"> <p>array_moments(B,A)</p></td>
! 1572:
! 1573: <td width=134 valign=top class="Normal"> <p>@B=&array_moments(@A)</p></td>
! 1574:
! 1575: <td width=147 valign=top class="Normal"> <p>Evaluates the moments of an
! 1576:
! 1577: array A and place the result in array B[i] where i = 0 to 4. The contents
! 1578:
! 1579: of B are as follows: B[0] = number of elements, B[1] = mean, B[2] =
! 1580:
! 1581: variance, B[3] = skewness and B[4] = kurtosis.</p></td>
! 1582:
! 1583: <td width=101 valign=top class="Normal"> <p>In CAPA, the moments are passed
! 1584:
! 1585: as an array in the first argument whereas in LON-CAPA, the array containing
! 1586:
! 1587: the moments are set equal to the function.</p></td>
! 1588:
! 1589: </tr>
! 1590:
! 1591: <tr>
! 1592:
! 1593: <td width=131 valign=top class="Normal"> <p>array_max(Name), array_min(Name)</p></td>
! 1594:
! 1595: <td width=134 valign=top class="Normal"> <p>&min(@Name), &max(@Name)</p></td>
! 1596:
! 1597: <td width=147 valign=top class="Normal"> <p>In LON-CAPA to find the maximum
! 1598:
! 1599: value of an array, use &max(@arrayname) and to find the minimum
! 1600:
! 1601: value of an array, use &min(@arrayname)</p></td>
! 1602:
! 1603: <td width=101 valign=top class="Normal"> <p>Combined with the min and max
! 1604:
! 1605: functions defined earlier.</p></td>
! 1606:
! 1607: </tr>
! 1608:
! 1609: <tr>
! 1610:
! 1611: <td width=131 valign=top class="Normal"> <p>init_array(Name)</p></td>
! 1612:
! 1613: <td width=134 valign=top class="Normal"> <p>undef @name</p></td>
! 1614:
! 1615: <td width=147 valign=top class="Normal"> <p>To destroy the contents of an
! 1616:
! 1617: array, use</p></td>
! 1618:
! 1619: <td width=101 valign=top class="Normal"> <p>Use perl intrinsic undef function.</p></td>
! 1620:
! 1621: </tr>
! 1622:
! 1623: <tr>
! 1624:
! 1625: <td width=131 valign=top class="Normal"> <p>random_normal (return_array,item_cnt,seed,av,std_dev)</p></td>
! 1626:
! 1627: <td width=134 valign=top class="Normal"> <p>@return_array=&random_normal
! 1628:
! 1629: ($item_cnt,$seed,$av,$std_dev)</p></td>
! 1630:
! 1631: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1632:
! 1633: of normal distribution of average $av and standard deviation $std_dev.
! 1634:
! 1635: The distribution is generated from seed $seed</p></td>
! 1636:
! 1637: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1638:
! 1639: as the first argument whereas in LON-CAPA the results are set equal
! 1640:
! 1641: to the function.</p></td>
! 1642:
! 1643: </tr>
! 1644:
! 1645: <tr>
! 1646:
! 1647: <td width=131 valign=top class="Normal"> <p>random_beta (return_array,item_cnt,seed,aa,bb)</p></td>
! 1648:
! 1649: <td width=134 valign=top class="Normal"> <p>@return_array=&random_beta
! 1650:
! 1651: ($item_cnt,$seed,$aa,$bb) <br>
! 1652:
! 1653: NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</p></td>
! 1654:
! 1655: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1656:
! 1657: of beta distribution. The density of beta is: X^($aa-1) *(1-X)^($bb-1)
! 1658:
! 1659: /B($aa,$bb) for 0<X<1.</p></td>
! 1660:
! 1661: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1662:
! 1663: as the first argument whereas in LON-CAPA the results are set equal
! 1664:
! 1665: to the function.</p></td>
! 1666:
! 1667: </tr>
! 1668:
! 1669: <tr>
! 1670:
! 1671: <td width=131 valign=top class="Normal"> <p>random_gamma (return_array,item_cnt,seed,a,r)</p></td>
! 1672:
! 1673: <td width=134 valign=top class="Normal"> <p>@return_array=&random_gamma
! 1674:
! 1675: ($item_cnt,$seed,$a,$r) <br>
! 1676:
! 1677: NOTE: Both $a and $r MUST be positive.</p></td>
! 1678:
! 1679: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1680:
! 1681: of gamma distribution. The density of gamma is: ($a**$r)/gamma($r) *
! 1682:
! 1683: X**($r-1) * exp(-$a*X).</p></td>
! 1684:
! 1685: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1686:
! 1687: as the first argument whereas in LON-CAPA the results are set equal
! 1688:
! 1689: to the function.</p></td>
! 1690:
! 1691: </tr>
! 1692:
! 1693: <tr>
! 1694:
! 1695: <td width=131 valign=top class="Normal"> <p>random_exponential (return_array,item_cnt,seed,av)</p></td>
! 1696:
! 1697: <td width=134 valign=top class="Normal"> <p>@return_array=&random_exponential
! 1698:
! 1699: ($item_cnt,$seed,$av) <br>
! 1700:
! 1701: NOTE: $av MUST be non-negative.</p></td>
! 1702:
! 1703: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1704:
! 1705: of exponential distribution. </p></td>
! 1706:
! 1707: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1708:
! 1709: as the first argument whereas in LON-CAPA the results are set equal
! 1710:
! 1711: to the function.</p></td>
! 1712:
! 1713: </tr>
! 1714:
! 1715: <tr>
! 1716:
! 1717: <td width=131 valign=top class="Normal"> <p>random_poisson (return_array,item_cnt,seed,mu)</p></td>
! 1718:
! 1719: <td width=134 valign=top class="Normal"> <p>@return_array=&random_poisson
! 1720:
! 1721: ($item_cnt,$seed,$mu) <br>
! 1722:
! 1723: NOTE: $mu MUST be non-negative.</p></td>
! 1724:
! 1725: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1726:
! 1727: of poisson distribution. </p></td>
! 1728:
! 1729: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1730:
! 1731: as the first argument whereas in LON-CAPA the results are set equal
! 1732:
! 1733: to the function.</p></td>
! 1734:
! 1735: </tr>
! 1736:
! 1737: <tr>
! 1738:
! 1739: <td width=131 valign=top class="Normal"> <p>random_chi (return_array,item_cnt,seed,df)</p></td>
! 1740:
! 1741: <td width=134 valign=top class="Normal"> <p>@return_array=&random_chi
! 1742:
! 1743: ($item_cnt,$seed,$df) <br>
! 1744:
! 1745: NOTE: $df MUST be positive.</p></td>
! 1746:
! 1747: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1748:
! 1749: of chi_square distribution with $df degrees of freedom. </p></td>
! 1750:
! 1751: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1752:
! 1753: as the first argument whereas in LON-CAPA the results are set equal
! 1754:
! 1755: to the function.</p></td>
! 1756:
! 1757: </tr>
! 1758:
! 1759: <tr>
! 1760:
! 1761: <td width=131 valign=top class="Normal"> <p>random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</p></td>
! 1762:
! 1763: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_chi
! 1764:
! 1765: ($item_cnt,$seed,$df,$nonc) <br>
! 1766:
! 1767: NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</p></td>
! 1768:
! 1769: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1770:
! 1771: of noncentral_chi_square distribution with $df degrees of freedom and
! 1772:
! 1773: noncentrality parameter $nonc. </p></td>
! 1774:
! 1775: <td width=101 valign=top class="Normal"> <p>In CAPA the results are passed
! 1776:
! 1777: as the first argument whereas in LON-CAPA the results are set equal
! 1778:
! 1779: to the function.</p></td>
! 1780:
! 1781: </tr>
! 1782:
! 1783: <tr>
! 1784:
! 1785: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1786:
! 1787: <td width=134 valign=top class="Normal"> <p>@return_array=&random_f
! 1788:
! 1789: ($item_cnt,$seed,$dfn,$dfd) <br>
! 1790:
! 1791: NOTE: Both $dfn and $dfd MUST be positive.</p></td>
! 1792:
! 1793: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1794:
! 1795: of F (variance ratio) distribution with degrees of freedom $dfn (numerator)
! 1796:
! 1797: and $dfd (denominator). </p></td>
! 1798:
! 1799: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1800:
! 1801: </tr>
! 1802:
! 1803: <tr>
! 1804:
! 1805: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1806:
! 1807: <td width=134 valign=top class="Normal"> <p>@return_array=&random_noncentral_f
! 1808:
! 1809: ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
! 1810:
! 1811: NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must
! 1812:
! 1813: be non-negative.</p></td>
! 1814:
! 1815: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1816:
! 1817: of noncentral F (variance ratio) distribution with degrees of freedom
! 1818:
! 1819: $dfn (numerator) and $dfd (denominator). $nonc is the noncentrality
! 1820:
! 1821: parameter. </p></td>
! 1822:
! 1823: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1824:
! 1825: </tr>
! 1826:
! 1827: <tr>
! 1828:
! 1829: <td width=131 valign=top class="Normal"> <p>NOT DOCUMENTED IN CAPA</p></td>
! 1830:
! 1831: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multivariate_normal
! 1832:
! 1833: ($item_cnt,$seed,\@mean,\@covar) <br>
! 1834:
! 1835: NOTE: @mean should be of length p array of real numbers. @covar should
! 1836:
! 1837: be a length p array of references to length p arrays of real numbers
! 1838:
! 1839: (i.e. a p by p matrix.</p></td>
! 1840:
! 1841: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1842:
! 1843: of multivariate_normal distribution with mean vector @mean and variance-covariance
! 1844:
! 1845: matrix. </p></td>
! 1846:
! 1847: <td width=101 valign=top class="Normal"> <p>Note the backslash before the
! 1848:
! 1849: @mean and @covar arrays.</p></td>
! 1850:
! 1851: </tr>
! 1852:
! 1853: <tr>
! 1854:
! 1855: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1856:
! 1857: <td width=134 valign=top class="Normal"> <p>@return_array=&random_multinomial
! 1858:
! 1859: ($item_cnt,$seed,@p) <br>
! 1860:
! 1861: NOTE: $item_cnt is rounded with int() and the result must be non-negative.
! 1862:
! 1863: The number of elements in @p must be at least 2.</p></td>
! 1864:
! 1865: <td width=147 valign=top class="Normal"> <p>Returns single observation from
! 1866:
! 1867: multinomial distribution with $item_cnt events classified into as many
! 1868:
! 1869: categories as the length of @p. The probability of an event being classified
! 1870:
! 1871: into category i is given by ith element of @p. The observation is an
! 1872:
! 1873: array with length equal to @p, so when called in a scalar context it
! 1874:
! 1875: returns the length of @p. The sum of the elements of the obervation
! 1876:
! 1877: is equal to $item_cnt.</p></td>
! 1878:
! 1879: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1880:
! 1881: </tr>
! 1882:
! 1883: <tr>
! 1884:
! 1885: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1886:
! 1887: <td width=134 valign=top class="Normal"> <p>@return_array=&random_permutation
! 1888:
! 1889: ($item_cnt,@array) </p></td>
! 1890:
! 1891: <td width=147 valign=top class="Normal"> <p>Returns @array randomly permuted.</p></td>
! 1892:
! 1893: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1894:
! 1895: </tr>
! 1896:
! 1897: <tr>
! 1898:
! 1899: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1900:
! 1901: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform
! 1902:
! 1903: ($item_cnt,$seed,$low,$high) <br>
! 1904:
! 1905: NOTE: $low must be less than or equal to $high.</p></td>
! 1906:
! 1907: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1908:
! 1909: from a uniform distribution. </p></td>
! 1910:
! 1911: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1912:
! 1913: </tr>
! 1914:
! 1915: <tr>
! 1916:
! 1917: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1918:
! 1919: <td width=134 valign=top class="Normal"> <p>@return_array=&random_uniform_integer
! 1920:
! 1921: ($item_cnt,$seed,$low,$high) <br>
! 1922:
! 1923: NOTE: $low and $high are both passed through int(). $low must be less
! 1924:
! 1925: than or equal to $high.</p></td>
! 1926:
! 1927: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1928:
! 1929: from a uniform distribution in integers. </p></td>
! 1930:
! 1931: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1932:
! 1933: </tr>
! 1934:
! 1935: <tr>
! 1936:
! 1937: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1938:
! 1939: <td width=134 valign=top class="Normal"> <p>@return_array=&random_binomial
! 1940:
! 1941: ($item_cnt,$seed,$nt,$p) <br>
! 1942:
! 1943: NOTE: $nt is rounded using int() and the result must be non-negative.
! 1944:
! 1945: $p must be between 0 and 1 inclusive.</p></td>
! 1946:
! 1947: <td width=147 valign=top class="Normal"> <p>Generate $item_cnt deviates
! 1948:
! 1949: from the binomial distribution with $nt trials and the probabilty of
! 1950:
! 1951: an event in each trial is $p. </p></td>
! 1952:
! 1953: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1954:
! 1955: </tr>
! 1956:
! 1957: <tr>
! 1958:
! 1959: <td width=131 valign=top class="Normal"> <p>NOT IMPLEMENTED IN CAPA</p></td>
! 1960:
! 1961: <td width=134 valign=top class="Normal"> <p>@return_array=&random_negative_binomial
! 1962:
! 1963: ($item_cnt,$seed,$ne,$p) <br>
! 1964:
! 1965: NOTE: $ne is rounded using int() and the result must be positive. $p
! 1966:
! 1967: must be between 0 and 1 exclusive.</p></td>
! 1968:
! 1969: <td width=147 valign=top class="Normal"> <p>Generate an array of $item_cnt
! 1970:
! 1971: outcomes generated from negative binomial distribution with $ne events
! 1972:
! 1973: and the probabilty of an event in each trial is $p. </p></td>
! 1974:
! 1975: <td width=101 valign=top class="Normal"> <p>New to LON-CAPA</p></td>
! 1976:
! 1977: </tr>
! 1978:
! 1979: </table>
! 1980:
! 1981: <h3><a name="_Toc421867130"><script> Variables</a></h3>
! 1982:
! 1983: <ul type=disc>
! 1984:
! 1985: <li>$external::target - set to the current target the xml parser is parsing
! 1986:
! 1987: for </li>
! 1988:
! 1989: <li>$external::part - set to the <i>id</i><span style='font-style:normal'>
! 1990:
! 1991: of the current problem <part>; zero if there are no <part> </span></li>
! 1992:
! 1993: <li>$external::gradestatus - set to the value of the current resource.partid.solved
! 1994:
! 1995: value </li>
! 1996:
! 1997: <li>$external::datestatus - set to the current status of the clock either
! 1998:
! 1999: CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT </li>
! 2000:
! 2001: <li>$external::randomseed - set to the number that was used to seed the random
! 2002:
! 2003: number generator </li>
! 2004:
! 2005: <li>$pi - set to PI </li>
! 2006:
! 2007: <li>$rad2deg - converts radians to degrees </li>
! 2008:
! 2009: <li>$deg2rad - converts degrees to radians </li>
! 2010:
! 2011: </ul>
! 2012:
! 2013: <h3><a name="_Toc421867131">Form internals</a> </h3>
! 2014:
! 2015: <p>Form elements used for homework editing/response </p>
! 2016:
! 2017: <p>the form is named lonhomework </p>
! 2018:
! 2019: <h3><a name="_Toc421867132">Viewing a problem (either CSTR or RES space)</a></h3>
! 2020:
! 2021: <ul type=disc>
! 2022:
! 2023: <li>grade_target, grade_username, grade_domain, grade_symb - the vaules take
! 2024:
! 2025: precedence over the the normal ENV settings of these, use &Apache::lonxml::whichuser()
! 2026:
! 2027: to get back the correct vaues of the items </li>
! 2028:
! 2029: <li>HWVAL_response:number - the name of the input elements for each response.
! 2030:
! 2031: The response is the response's ID, and the :number part exists only for
! 2032:
! 2033: response with multiple foils, and is a unique number in order of the submission
! 2034:
! 2035: </li>
! 2036:
! 2037: <li>changerandseed - the 'Change' button, only exists right after the Change
! 2038:
! 2039: button is clicked </li>
! 2040:
! 2041: <li>problemmode - in CSTR, it is either 'View','Edit','EditXML' or 'Analyze'
! 2042:
! 2043: depending on the desired view </li>
! 2044:
! 2045: <li>rndseed - the currently requested random seed </li>
! 2046:
! 2047: <li>showallfoils - if it exists, and we are in CSTR space, the problem should
! 2048:
! 2049: ignore <conceptgroup> and the response's max setting and show all
! 2050:
! 2051: possible foils </li>
! 2052:
! 2053: <li>submit - the name of the Submit button </li>
! 2054:
! 2055: <li>submitted - a hidden form parameter that can be used to tell if the student
! 2056:
! 2057: has submitted answers or not, if it is set, there should be answers to grade.
! 2058:
! 2059: </li>
! 2060:
! 2061: </ul>
! 2062:
! 2063: <h3><a name="_Toc421867133">Editing a problem (Edit mode)</a></h3>
! 2064:
! 2065: <p>tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
! 2066:
! 2067: <p>Note: the file edit.pm has many helper functions for creating the standard
! 2068:
! 2069: elements for editing a tag and it's attributes, all of those functions follow
! 2070:
! 2071: these conventions </p>
! 2072:
! 2073: <ul type=disc>
! 2074:
! 2075: <li>tagdepth_argname - I.E. 1_3.max, a parameter editing value, max is the
! 2076:
! 2077: name of the parameter and it is for the third tag inside the first tag </li>
! 2078:
! 2079: <li>delete_tagdepth - if set to yes, delete tag tagdepth and all tags inside
! 2080:
! 2081: of it </li>
! 2082:
! 2083: <li>homework_edit_tagdepth - used by both &Apache::edit::editline and
! 2084:
! 2085: &Apache::edit::editfield for the <textarea> and <input>
! 2086:
! 2087: form elements they create </li>
! 2088:
! 2089: <li>insert_tagdepth - used to request an tag insert, it is set to the id number
! 2090:
! 2091: of the requested tag in the %Apache::lonxml::insertlist </li>
! 2092:
! 2093: </ul>
! 2094:
! 2095: <ul type=disc>
! 2096:
! 2097: <li> </li>
! 2098:
! 2099: </ul>
! 2100:
! 2101: <h3><a name="_Toc421867134">Symbs</a></h3>
! 2102:
! 2103: <p>To identify a specific instance of a resource, LON-CAPA uses symbols or Òsymbs.Ó
! 2104:
! 2105: These identifiers are built from the URL of the map, the resource number of
! 2106:
! 2107: the resource in the map, and the URL of the resource itself. The latter is
! 2108:
! 2109: somewhat redundant, but might help if maps change.</p>
! 2110:
! 2111: <p>An example is</p>
! 2112:
! 2113: <p class=MsoHeader><span style='font-family:"Courier New"'> msu/korte/parts/part1.sequence___19___msu/korte/tests/part12.problem</span></p>
! 2114:
! 2115: <p class=MsoHeader>The respective map entry is</p>
! 2116:
! 2117: <p class=MsoHeader><span style='font-family:"Courier New"'> <resource
! 2118:
! 2119: id="19" src="/res/msu/korte/tests/part12.problem"
! 2120:
! 2121: </span></p>
! 2122:
! 2123: <p class=MsoHeader><span style='font-family:"Courier New"'> title="Problem
! 2124:
! 2125: 2"></span></p>
! 2126:
! 2127: <p class=MsoHeader><span style='font-family:"Courier New"'> </resource></span></p>
! 2128:
! 2129: <p class=MsoHeader>Symbs are used by the random number generator, as well as
! 2130:
! 2131: to store and restore data specific to a certain instance of for example a
! 2132:
! 2133: problem.</p>
! 2134:
! 2135: <h3><a name="_Toc421867135">Store / Restore</a></h3>
! 2136:
! 2137: <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
! 2138:
! 2139: style='color:black'> and </span><span style='font-family:"Courier New";
! 2140:
! 2141: color:black'>&Apache::lonnet:restore()</span><span style='color:black'> (and
! 2142:
! 2143: </span><span style='font-family:"Courier New";color:black'>&Apache::lonnet::store()</span><span
! 2144:
! 2145: style='color:black'>, which is is the non-critical message twin of </span><span
! 2146:
! 2147: style='font-family:"Courier New";color:black'>cstore</span><span
! 2148:
! 2149: style='color:black'>). These functions are for handlers to store a perl hash to
! 2150:
! 2151: a userÕs permanent data space in an easy manner, and to retrieve it again
! 2152:
! 2153: on another call. It is expected that a handler would use this once at the
! 2154:
! 2155: beginning to retrieve data, and then again once at the end to send only the
! 2156:
! 2157: new data back. </span></p>
! 2158:
! 2159: <p><span style='color:black'>The data is stored in the userÕs data directory
! 2160:
! 2161: on the userÕs homeserver under the ID of the course.</span></p>
! 2162:
! 2163: <p><span style='color:black'>The hash that is returned by </span><span
! 2164:
! 2165: style='font-family:"Courier New";color:black'>restore</span><span
! 2166:
! 2167: style='color:black'> will have all of the previous value for all of the elements
! 2168:
! 2169: of the hash. </span></p>
! 2170:
! 2171: <p><span style='color:black'>Example: </span></p>
! 2172:
! 2173: <p><span style='font-family:"Courier New";color:black'>#creating a hash</span></p>
! 2174:
! 2175: <p><span style='font-family:"Courier New";color:black'>my %hash;</span></p>
! 2176:
! 2177: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='bar';</span></p>
! 2178:
! 2179: <p><span style='font-family:"Courier New";color:black'>#storing it</span></p>
! 2180:
! 2181: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
! 2182:
! 2183: <p><span style='font-family:"Courier New";color:black'>#changing a value </span></p>
! 2184:
! 2185: <p><span style='font-family:"Courier New";color:black'>$hash{'foo'}='notbar';</span></p>
! 2186:
! 2187: <p><span style='font-family:"Courier New";color:black'>#adding a new value</span></p>
! 2188:
! 2189: <p><span style='font-family:"Courier New";color:black'>$hash{'bar'}='foo';</span></p>
! 2190:
! 2191: <p><span style='font-family:"Courier New";color:black'>&Apache::lonnet::cstore(\%hash);</span></p>
! 2192:
! 2193: <p><span style='font-family:"Courier New";color:black'>#retrieving the hash</span></p>
! 2194:
! 2195: <p><span style='font-family:"Courier New";color:black'>my %history=&Apache::lonnet::restore();</span></p>
! 2196:
! 2197: <p><span style='font-family:"Courier New";color:black'>#print the hash</span></p>
! 2198:
! 2199: <p><span style='font-family:"Courier New";color:black'>foreach my $key (sort(keys(%history)))
! 2200:
! 2201: {</span></p>
! 2202:
! 2203: <p><span style='font-family:"Courier New";color:black'> print("\%history{$key}
! 2204:
! 2205: = $history{$key}");</span></p>
! 2206:
! 2207: <p><span style='font-family:"Courier New";color:black'>}</span></p>
! 2208:
! 2209: <p><span style='color:black'>Will print out: </span></p>
! 2210:
! 2211: <p><span style='font-family:"Courier New";color:black'>%history{1:foo} = bar</span></p>
! 2212:
! 2213: <p><span style='font-family:"Courier New";color:black'>%history{1:keys} = foo:timestamp</span></p>
! 2214:
! 2215: <p><span style='font-family:"Courier New";color:black'>%history{1:timestamp}
! 2216:
! 2217: = 990455579</span></p>
! 2218:
! 2219: <p><span style='font-family:"Courier New";color:black'>%history{2:bar} = foo</span></p>
! 2220:
! 2221: <p><span style='font-family:"Courier New";color:black'>%history{2:foo} = notbar</span></p>
! 2222:
! 2223: <p><span style='font-family:"Courier New";color:black'>%history{2:keys} = foo:bar:timestamp</span></p>
! 2224:
! 2225: <p><span style='font-family:"Courier New";color:black'>%history{2:timestamp}
! 2226:
! 2227: = 990455580</span></p>
! 2228:
! 2229: <p><span style='font-family:"Courier New";color:black'>%history{bar} = foo</span></p>
! 2230:
! 2231: <p><span style='font-family:"Courier New";color:black'>%history{foo} = notbar</span></p>
! 2232:
! 2233: <p><span style='font-family:"Courier New";color:black'>%history{timestamp} =
! 2234:
! 2235: 990455580</span></p>
! 2236:
! 2237: <p><span style='font-family:"Courier New";color:black'>%history{version} = 2</span></p>
! 2238:
! 2239: <p><span style='color:black'>Note that the special hash entries <i>keys</i></span><span style='color:black'>,
! 2240:
! 2241: <i>version</i></span><span
! 2242:
! 2243: style='color:black'> and <i>timestamp</i></span><span style='color:black'> were
! 2244:
! 2245: added to the hash. <i>version</i></span><span style='color:black'> will be
! 2246:
! 2247: equal to the total number of versions of the data that have been stored. The
! 2248:
! 2249: <i>timestamp</i></span><span
! 2250:
! 2251: style='color:black'> attribute will be the UNIX time the hash was stored. <i>keys</i></span><span
! 2252:
! 2253: style='color:black'> is available in every historical section to list which keys
! 2254:
! 2255: were added or changed at a specific historical revision of a hash. </span></p>
! 2256:
! 2257: <p><span style='color:black'><b>Warning</b></span><span
! 2258:
! 2259: style='color:black'> do not store the hash that restore returns directly. This
! 2260:
! 2261: will cause a mess since it will restore the historical keys as if the were
! 2262:
! 2263: new keys. I.E. </span><span style='font-family:"Courier New";color:black'>1:foo</span><span
! 2264:
! 2265: style='color:black'> will become </span><span style='font-family:"Courier New";
! 2266:
! 2267: color:black'>1:1:foo</span><span style='color:black'> etc. </span></p>
! 2268:
! 2269: <p><span style='color:black'><b>Calling convention: </b></span></p>
! 2270:
! 2271: <p><span style='font-size:8.0pt;font-family:"Courier New";
! 2272:
! 2273: color:black'> my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$uname,$home);</span></p>
! 2274:
! 2275: <p><span style='font-size:8.0pt;font-family:"Courier New";
! 2276:
! 2277: color:black'> &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$uname,$home);</span></p>
! 2278:
! 2279: <p><span style='color:black'><b>Arguments (only %newrecord is required the rest
! 2280:
! 2281: are somewhat optional, read the details): </b></span></p>
! 2282:
! 2283: <p> <span style='font-family:Symbol;
! 2284:
! 2285: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2286:
! 2287: </span></span> <span style='color:black'><i>$symb</i></span><span
! 2288:
! 2289: style='color:black'> - a string containing the internal name of the specific instance
! 2290:
! 2291: of a resource. Usually this value can be gotten from </span><span
! 2292:
! 2293: style='font-family:"Courier New";color:black'>&Apache::lonnet::symbread($filename)</span><span
! 2294:
! 2295: style='color:black'>. If the argument is blank, it will attempt to use </span><span
! 2296:
! 2297: style='font-family:"Courier New";color:black'>symbread()</span><span
! 2298:
! 2299: style='color:black'> for it. If the result is ambiguous store/restore will fail.
! 2300:
! 2301: </span></p>
! 2302:
! 2303: <p> <span style='font-family:Symbol;
! 2304:
! 2305: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2306:
! 2307: </span></span> <span style='color:black'><i>$courseid</i></span><span
! 2308:
! 2309: style='color:black'> - the internal name for a course, usually found in </span><span
! 2310:
! 2311: style='font-family:"Courier New";color:black'>$ENV{'request.course.id'}</span><span
! 2312:
! 2313: style='color:black'> which is what will be looked at if no value is passed to
! 2314:
! 2315: the functions. </span></p>
! 2316:
! 2317: <p> <span style='font-family:Symbol;
! 2318:
! 2319: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2320:
! 2321: </span></span> <span style='color:black'><i>$domain</i></span><span
! 2322:
! 2323: style='color:black'> - the domain that the user belongs to, usually found in </span><span
! 2324:
! 2325: style='font-family:"Courier New";color:black'>$ENV{'user.domain'}</span><span
! 2326:
! 2327: style='color:black'> which is what will be looked at if no value is passed to
! 2328:
! 2329: the functions. </span></p>
! 2330:
! 2331: <p> <span style='font-family:Symbol;
! 2332:
! 2333: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2334:
! 2335: </span></span> <span style='color:black'><i>$uname</i></span><span
! 2336:
! 2337: style='color:black'> - the login name for the user, usually found in </span><span
! 2338:
! 2339: style='font-family:"Courier New";color:black'>$ENV{'user.name'}</span><span
! 2340:
! 2341: style='color:black'> which is what will be looked at if no value is passed to
! 2342:
! 2343: the functions. </span></p>
! 2344:
! 2345: <p> <span style='font-family:Symbol;
! 2346:
! 2347: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2348:
! 2349: </span></span> <span style='color:black'><i>$home</i></span><span
! 2350:
! 2351: style='color:black'> - the homeserver for the user, usually found in </span><span
! 2352:
! 2353: style='font-family:"Courier New";color:black'>$ENV{'user.home'}</span><span
! 2354:
! 2355: style='color:black'> but can be easily gotten from a domain and name through </span><span
! 2356:
! 2357: style='font-family:"Courier New";color:black'>&Apache::lonnet::homeserver($uname,$domain)</span><span
! 2358:
! 2359: style='color:black'>. If no value is passed to store/restore the value in %ENV
! 2360:
! 2361: will be used. </span></p>
! 2362:
! 2363: <p> <span style='font-family:Symbol;
! 2364:
! 2365: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2366:
! 2367: </span></span> <span style='color:black'><i>%newrecord</i></span><span
! 2368:
! 2369: style='color:black'> - the hash to store being passed by reference </span></p>
! 2370:
! 2371: <p><span style='color:black'><b>Return values: </b></span></p>
! 2372:
! 2373: <p> <span style='font-family:Symbol;
! 2374:
! 2375: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2376:
! 2377: </span></span> <span style='color:black'><i>an empty string</i></span><span
! 2378:
! 2379: style='color:black'> - the function was unable to determine exactly where to store
! 2380:
! 2381: or restore from. At least one of the "optional" arguments was unable
! 2382:
! 2383: to be determined. </span></p>
! 2384:
! 2385: <p> <span style='font-family:Symbol;
! 2386:
! 2387: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2388:
! 2389: </span></span> <span style='color:black'><i>a hash</i></span><span
! 2390:
! 2391: style='color:black'> - restore successfully read a old hash for this specific
! 2392:
! 2393: user / resource instance. </span></p>
! 2394:
! 2395: <p> <span style='font-family:Symbol;
! 2396:
! 2397: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2398:
! 2399: </span></span> <span style='color:black'><i>no_such_host</i></span><span
! 2400:
! 2401: style='color:black'> - the <i>$home</i></span><span style='color:black'> specfied
! 2402:
! 2403: desn't exist in the network. </span></p>
! 2404:
! 2405: <p> <span style='font-family:Symbol;
! 2406:
! 2407: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2408:
! 2409: </span></span> <span style='color:black'><i>con_delayed</i></span><span
! 2410:
! 2411: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
! 2412:
! 2413: at this time. The store will be delayed until it is again available. </span></p>
! 2414:
! 2415: <p> <span style='font-family:Symbol;
! 2416:
! 2417: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2418:
! 2419: </span></span> <span style='color:black'><i>con_failed</i></span><span
! 2420:
! 2421: style='color:black'> - the <i>$home</i></span><span style='color:black'> was uncontactable
! 2422:
! 2423: at this time and store was unable to delay the store until a later time. The
! 2424:
! 2425: store failed. </span></p>
! 2426:
! 2427: <p> <span style='font-family:Symbol;
! 2428:
! 2429: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2430:
! 2431: </span></span> <span style='color:black'><i>ok</i></span><span
! 2432:
! 2433: style='color:black'> - the store completed succesfully </span></p>
! 2434:
! 2435: <p> <span style='font-family:Symbol;
! 2436:
! 2437: color:black'>á<span style='font:7.0pt "Times New Roman"'>
! 2438:
! 2439: </span></span> <span style='color:black'><i>error:</i></span><span
! 2440:
! 2441: style='color:black'> - remote server failied to store or restore the reason follows
! 2442:
! 2443: the </span><span style='font-family:"Courier New";color:black'>:</span><span
! 2444:
! 2445: style='color:black'> </span></p>
! 2446:
! 2447: <h3><a name="_Toc421867136">Mandatory Homework Data</a></h3>
! 2448:
! 2449: <pre> </pre>
! 2450:
! 2451: <pre><span
! 2452:
! 2453: style='font-size:9.0pt'><Provided by &EXT() and set external to the resource, required></span></pre>
! 2454:
! 2455: <pre><span
! 2456:
! 2457: style='font-size:9.0pt'>resource.partid.opendate #unix time of when the local machine should let the</span></pre>
! 2458:
! 2459: <pre><span
! 2460:
! 2461: style='font-size:9.0pt'> #student in</span></pre>
! 2462:
! 2463: <pre><span
! 2464:
! 2465: style='font-size:9.0pt'> </span></pre>
! 2466:
! 2467: <pre><span
! 2468:
! 2469: style='font-size:9.0pt'>resource.partid.duedate #unix time of when the local machine should stop</span></pre>
! 2470:
! 2471: <pre><span
! 2472:
! 2473: style='font-size:9.0pt'> #accepting answers</span></pre>
! 2474:
! 2475: <pre><span
! 2476:
! 2477: style='font-size:9.0pt'> </span></pre>
! 2478:
! 2479: <pre><span
! 2480:
! 2481: style='font-size:9.0pt'>resource.partid.answerdate #unix time of when the local machine should</span></pre>
! 2482:
! 2483: <pre><span
! 2484:
! 2485: style='font-size:9.0pt'> #provide the correct answer to the student</span></pre>
! 2486:
! 2487: <pre><span
! 2488:
! 2489: style='font-size:9.0pt'> </span></pre>
! 2490:
! 2491: <pre><span
! 2492:
! 2493: style='font-size:9.0pt'>resource.partid.weight # points the problem is worth</span></pre>
! 2494:
! 2495: <pre><span
! 2496:
! 2497: style='font-size:9.0pt'> </span></pre>
! 2498:
! 2499: <pre><span
! 2500:
! 2501: style='font-size:9.0pt'>resource.partid.maxtries # maximum number of attempts the student can have</span></pre>
! 2502:
! 2503: <pre><span
! 2504:
! 2505: style='font-size:9.0pt'> </span></pre>
! 2506:
! 2507: <pre><span
! 2508:
! 2509: style='font-size:9.0pt'>resource.partid.type # type of problem homework can be:</span></pre>
! 2510:
! 2511: <pre><span
! 2512:
! 2513: style='font-size:9.0pt'> # homework - randomized, graded, stored with </span></pre>
! 2514:
! 2515: <pre><span
! 2516:
! 2517: style='font-size:9.0pt'> # requesting user, full feeback</span></pre>
! 2518:
! 2519: <pre><span
! 2520:
! 2521: style='font-size:9.0pt'> # exam - randomized, graded, stored with </span></pre>
! 2522:
! 2523: <pre><span
! 2524:
! 2525: style='font-size:9.0pt'> # requesting user, minimal feedback</span></pre>
! 2526:
! 2527: <pre><span
! 2528:
! 2529: style='font-size:9.0pt'> # form - unrandomized, ungraded, stored with </span></pre>
! 2530:
! 2531: <pre><span
! 2532:
! 2533: style='font-size:9.0pt'> # specified user, full feedback</span></pre>
! 2534:
! 2535: <pre><span
! 2536:
! 2537: style='font-size:9.0pt'> # survey - unrandomized, ungraded, stored with </span></pre>
! 2538:
! 2539: <pre><span
! 2540:
! 2541: style='font-size:9.0pt'> # requesting user, full feedback</span></pre>
! 2542:
! 2543: <pre><span
! 2544:
! 2545: style='font-size:9.0pt'> </span></pre>
! 2546:
! 2547: <pre><span
! 2548:
! 2549: style='font-size:9.0pt'> </span></pre>
! 2550:
! 2551: <pre><span
! 2552:
! 2553: style='font-size:9.0pt'> </span></pre>
! 2554:
! 2555: <pre><span
! 2556:
! 2557: style='font-size:9.0pt'><numerical/formula/response needed: (has a default if nonexistant)></span></pre>
! 2558:
! 2559: <pre><span
! 2560:
! 2561: style='font-size:9.0pt'> </span></pre>
! 2562:
! 2563: <pre><span
! 2564:
! 2565: style='font-size:9.0pt'>resource.partid.responseid.tol # lots of possibilities here</span></pre>
! 2566:
! 2567: <pre><span
! 2568:
! 2569: style='font-size:9.0pt'> # percentage, range (inclusive and exclusive),</span></pre>
! 2570:
! 2571: <pre><span
! 2572:
! 2573: style='font-size:9.0pt'> # variable name, etc</span></pre>
! 2574:
! 2575: <pre><span
! 2576:
! 2577: style='font-size:9.0pt'> # 3%</span></pre>
! 2578:
! 2579: <pre><span
! 2580:
! 2581: style='font-size:9.0pt'> # 0.5</span></pre>
! 2582:
! 2583: <pre><span
! 2584:
! 2585: style='font-size:9.0pt'> # .05+</span></pre>
! 2586:
! 2587: <pre><span
! 2588:
! 2589: style='font-size:9.0pt'> # 3%+</span></pre>
! 2590:
! 2591: <pre><span
! 2592:
! 2593: style='font-size:9.0pt'> # 0.5+,.005</span></pre>
! 2594:
! 2595: <pre><span
! 2596:
! 2597: style='font-size:9.0pt'> </span></pre>
! 2598:
! 2599: <pre><span
! 2600:
! 2601: style='font-size:9.0pt'>resource.partid.responseid.sig # one or two comma sepearted integers, </span></pre>
! 2602:
! 2603: <pre><span
! 2604:
! 2605: style='font-size:9.0pt'> # specifying the number of significatn figures</span></pre>
! 2606:
! 2607: <pre><span
! 2608:
! 2609: style='font-size:9.0pt'> # a student must use</span></pre>
! 2610:
! 2611: <pre><span
! 2612:
! 2613: style='font-size:9.0pt'> </span></pre>
! 2614:
! 2615: <pre><span
! 2616:
! 2617: style='font-size:9.0pt'> </span></pre>
! 2618:
! 2619: <pre><span
! 2620:
! 2621: style='font-size:9.0pt'> </span></pre>
! 2622:
! 2623: <pre><span
! 2624:
! 2625: style='font-size:9.0pt'><Problem sets using cstore (required):></span></pre>
! 2626:
! 2627: <pre><span
! 2628:
! 2629: style='font-size:9.0pt'>resource.partid.solved # if not set, problem yet to be viewed</span></pre>
! 2630:
! 2631: <pre><span
! 2632:
! 2633: style='font-size:9.0pt'> # incorrect_attempted == incorrect and attempted</span></pre>
! 2634:
! 2635: <pre><span
! 2636:
! 2637: style='font-size:9.0pt'> # correct_by_student == correct by student work</span></pre>
! 2638:
! 2639: <pre><span
! 2640:
! 2641: style='font-size:9.0pt'> # correct_by_override == correct, instructor override</span></pre>
! 2642:
! 2643: <pre><span
! 2644:
! 2645: style='font-size:9.0pt'> # incorrect_by_override == incorrect, instructor override</span></pre>
! 2646:
! 2647: <pre><span
! 2648:
! 2649: style='font-size:9.0pt'> # excused == excused, problem no longer counts for student</span></pre>
! 2650:
! 2651: <pre><span
! 2652:
! 2653: style='font-size:9.0pt'> # '' (empty) == not attempted</span></pre>
! 2654:
! 2655: <pre><span
! 2656:
! 2657: style='font-size:9.0pt'> # ungraded_attempted == an ungraded answer has been</span></pre>
! 2658:
! 2659: <pre><span
! 2660:
! 2661: style='font-size:9.0pt'> sumbitted and stored</span></pre>
! 2662:
! 2663: <pre><span
! 2664:
! 2665: style='font-size:9.0pt'>resource.partid.tries # positive integer of number of unsuccessful attempts</span></pre>
! 2666:
! 2667: <pre><span
! 2668:
! 2669: style='font-size:9.0pt'> # made, malformed answers don't count if feedback is</span></pre>
! 2670:
! 2671: <pre><span
! 2672:
! 2673: style='font-size:9.0pt'> # on</span></pre>
! 2674:
! 2675: <pre><span
! 2676:
! 2677: style='font-size:9.0pt'> </span></pre>
! 2678:
! 2679: <pre><span
! 2680:
! 2681: style='font-size:9.0pt'>resource.partid.awarded # float between 0 and 1, percentage of</span></pre>
! 2682:
! 2683: <pre><span
! 2684:
! 2685: style='font-size:9.0pt'> # resource.weight that the stundent earned.</span></pre>
! 2686:
! 2687: <pre><span
! 2688:
! 2689: style='font-size:9.0pt'> </span></pre>
! 2690:
! 2691: <pre><span
! 2692:
! 2693: style='font-size:9.0pt'>resource.partid.award # final detailed award that was applied to the entire</span></pre>
! 2694:
! 2695: <pre><span
! 2696:
! 2697: style='font-size:9.0pt'> # part of the question, check awarddetail below for</span></pre>
! 2698:
! 2699: <pre><span
! 2700:
! 2701: style='font-size:9.0pt'> # possibilities</span></pre>
! 2702:
! 2703: <pre><span
! 2704:
! 2705: style='font-size:9.0pt'> </span></pre>
! 2706:
! 2707: <pre><span
! 2708:
! 2709: style='font-size:9.0pt'>resource.partid.previous # boolean, is this submission a previous submission</span></pre>
! 2710:
! 2711: <pre><span
! 2712:
! 2713: style='font-size:9.0pt'> </span></pre>
! 2714:
! 2715: <pre><span
! 2716:
! 2717: style='font-size:9.0pt'>resource.partid.responseid.submissons</span></pre>
! 2718:
! 2719: <pre><span
! 2720:
! 2721: style='font-size:9.0pt'> # the student submitted string for the part.response</span></pre>
! 2722:
! 2723: <pre><span
! 2724:
! 2725: style='font-size:9.0pt'> </span></pre>
! 2726:
! 2727: <pre><span
! 2728:
! 2729: style='font-size:9.0pt'>resource.partid.responseid.awarddetail</span></pre>
! 2730:
! 2731: <pre><span
! 2732:
! 2733: style='font-size:9.0pt'> # list of all of the results of grading the submissions</span></pre>
! 2734:
! 2735: <pre><span
! 2736:
! 2737: style='font-size:9.0pt'> # in detailed form of the specific failure</span></pre>
! 2738:
! 2739: <pre><span
! 2740:
! 2741: style='font-size:9.0pt'> #Possible values:</span></pre>
! 2742:
! 2743: <pre><span
! 2744:
! 2745: style='font-size:9.0pt'> # EXACT_ANS, APPROX_ANS : student is correct</span></pre>
! 2746:
! 2747: <pre><span
! 2748:
! 2749: style='font-size:9.0pt'> # NO_RESPONSE : student submitted no response</span></pre>
! 2750:
! 2751: <pre><span
! 2752:
! 2753: style='font-size:9.0pt'> # MISSING_ANSWER : student submitted some but not</span></pre>
! 2754:
! 2755: <pre><span
! 2756:
! 2757: style='font-size:9.0pt'> # all parts of a response</span></pre>
! 2758:
! 2759: <pre><span
! 2760:
! 2761: style='font-size:9.0pt'> # WANTED_NUMERIC : expected a numeric answer and</span></pre>
! 2762:
! 2763: <pre><span
! 2764:
! 2765: style='font-size:9.0pt'> # didn't get one</span></pre>
! 2766:
! 2767: <pre><span
! 2768:
! 2769: style='font-size:9.0pt'> # SIG_FAIL : incorrect number of Significant Figures</span></pre>
! 2770:
! 2771: <pre><span
! 2772:
! 2773: style='font-size:9.0pt'> # UNIT_FAIL : incorrect unit</span></pre>
! 2774:
! 2775: <pre><span
! 2776:
! 2777: style='font-size:9.0pt'> # UNIT_NOTNEEDED : Submitted a unit when one shouldn't</span></pre>
! 2778:
! 2779: <pre><span
! 2780:
! 2781: style='font-size:9.0pt'> # NO_UNIT : needed a unit but none was submitted</span></pre>
! 2782:
! 2783: <pre><span
! 2784:
! 2785: style='font-size:9.0pt'> # BAD_FORMULA : syntax error in submitted formula</span></pre>
! 2786:
! 2787: <pre><span
! 2788:
! 2789: style='font-size:9.0pt'> # INCORRECT : answer was wrong</span></pre>
! 2790:
! 2791: <pre><span
! 2792:
! 2793: style='font-size:9.0pt'> # SUBMITTED : submission wasn't graded</span></pre>
! 2794:
! 2795: <pre><span
! 2796:
! 2797: style='font-size:9.0pt'> # ERROR : unable to get a grade</span></pre>
! 2798:
! 2799: <pre><span
! 2800:
! 2801: style='font-size:9.0pt'> </span></pre>
! 2802:
! 2803: <pre><span
! 2804:
! 2805: style='font-size:9.0pt'>resource.partid.responseid.message (optional) (not yet supported)</span></pre>
! 2806:
! 2807: <pre><span
! 2808:
! 2809: style='font-size:9.0pt'> # a message that should be shown to the student</span></pre>
! 2810:
! 2811: <pre><span
! 2812:
! 2813: style='font-size:9.0pt'> </span></pre>
! 2814:
! 2815: <pre><span
! 2816:
! 2817: style='font-size:9.0pt'>resource.partid.bonustries (optional) (not yet supported)</span></pre>
! 2818:
! 2819: <pre><span
! 2820:
! 2821: style='font-size:9.0pt'> # if set, added to the maxtries parameter for student </span></pre>
! 2822:
! 2823: <pre><span
! 2824:
! 2825: style='font-size:9.0pt'> # total number of tries overall</span></pre>
! 2826:
! 2827: <pre> </pre>
! 2828:
! 2829: <h3><a name="_Toc421867137">Sample Problems</a></h3>
! 2830:
! 2831: <p class=H5><span style='layout-grid-mode:
! 2832:
! 2833: both'>A Simple Problem</span></p>
! 2834:
! 2835: <p style='
! 2836:
! 2837: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
! 2838:
! 2839: <p style='
! 2840:
! 2841: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2842:
! 2843: <script type="loncapa/perl"></span></p>
! 2844:
! 2845: <p style='
! 2846:
! 2847: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$length=&random(10,99,.1);</span></p>
! 2848:
! 2849: <p style='
! 2850:
! 2851: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>$width=&random(1,10,.01);</span></p>
! 2852:
! 2853: <p style='
! 2854:
! 2855: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>@area=($length*($width*10));</span></p>
! 2856:
! 2857: <p style='
! 2858:
! 2859: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2860:
! 2861: </script></span></p>
! 2862:
! 2863: <p style='
! 2864:
! 2865: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>What
! 2866:
! 2867: is the area of a box $length mm in length and </span></p>
! 2868:
! 2869: <p style='
! 2870:
! 2871: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>&format($width,"2E")
! 2872:
! 2873: cm in width.</span></p>
! 2874:
! 2875: <p style='
! 2876:
! 2877: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2878:
! 2879: <numericalresponse id="11" answer="@area" units="mm^2"></span></p>
! 2880:
! 2881: <p style='
! 2882:
! 2883: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2884:
! 2885: <textline></textline></span></p>
! 2886:
! 2887: <p style='
! 2888:
! 2889: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2890:
! 2891: <responseparam name="tol" type="tolerance" default="5%"></responseparam></span></p>
! 2892:
! 2893: <p style='
! 2894:
! 2895: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2896:
! 2897: </numericalresponse></span></p>
! 2898:
! 2899: <p style='
! 2900:
! 2901: line-height:50%'><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
! 2902:
! 2903: <p class=H5><span
! 2904:
! 2905: style='layout-grid-mode:both'>A More Complex Problem</span></p>
! 2906:
! 2907: <p><span style='font-size:8.0pt;font-family:"Courier New"'><problem></span></p>
! 2908:
! 2909: <p><span style='font-size:8.0pt;font-family:"Courier New"'><displayduedate
! 2910:
! 2911: /></span></p>
! 2912:
! 2913: <p><span style='font-size:8.0pt;font-family:"Courier New"'><p><displaytitle
! 2914:
! 2915: /></p></span></p>
! 2916:
! 2917: <p><span style='font-size:8.0pt;font-family:"Courier New"'><script type="loncapa/perl"></span></p>
! 2918:
! 2919: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF="<b>
! 2920:
! 2921: F<sub>1</sub> </b>";</span></p>
! 2922:
! 2923: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF1="<b>
! 2924:
! 2925: F<sub>1</sub> </b>";</span></p>
! 2926:
! 2927: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$vF2="<b>
! 2928:
! 2929: F<sub>2</sub> </b>";</span></p>
! 2930:
! 2931: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$mF="|<b>F</b>|";</span></p>
! 2932:
! 2933: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag="|<b>F<sub>1</sub></b>|";</span></p>
! 2934:
! 2935: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F2mag="|<b>F<sub>2</sub></b>|";</span></p>
! 2936:
! 2937: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag="|<b>
! 2938:
! 2939: <font face=symbol>t</font><sub>1</sub></b>|";</span></p>
! 2940:
! 2941: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq2mag="|<b>
! 2942:
! 2943: <font face=symbol>t</font><sub>2</sub></b>|";</span></p>
! 2944:
! 2945: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q1="Q<sub>1</sub>";</span></p>
! 2946:
! 2947: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$Q2="Q<sub>2</sub>";</span></p>
! 2948:
! 2949: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau="<font
! 2950:
! 2951: face=symbol>t</font>";</span></p>
! 2952:
! 2953: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$tau1="<font
! 2954:
! 2955: face=symbol><b>t</b></font><sub>1</sub>";</span></p>
! 2956:
! 2957: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $val=&random(1,4,1);</span></p>
! 2958:
! 2959: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $tp=&choose($val,"her","her","his","his");</span></p>
! 2960:
! 2961: <p><span style='font-size:8.0pt;font-family:"Courier New"'> $sd=&choose($val,"daughter","niece","nephew","son");</span></p>
! 2962:
! 2963: <p><span style='font-size:8.0pt;font-family:"Courier New"'></script></span></p>
! 2964:
! 2965: <p><span style='font-size:8.0pt;font-family:"Courier New"'><startouttext
! 2966:
! 2967: /></span></p>
! 2968:
! 2969: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$trq1mag and $trq2mag
! 2970:
! 2971: are the magnitudes of the torques produced repectively by </span></p>
! 2972:
! 2973: <p><span style='font-size:8.0pt;font-family:"Courier New"'>forces $vF1 and $vF2
! 2974:
! 2975: with respect the pivot P. The magnitudes of $vF1 is </span></p>
! 2976:
! 2977: <p><span style='font-size:8.0pt;font-family:"Courier New"'>$F1mag and that of
! 2978:
! 2979: $vF2 is $F2mag. $Q1 and $Q2 are the locations </span></p>
! 2980:
! 2981: <p><span style='font-size:8.0pt;font-family:"Courier New"'>on a rigid body where
! 2982:
! 2983: $vF1 and $vF2 act. </span></p>
! 2984:
! 2985: <p><span style='font-size:8.0pt;font-family:"Courier New"'><endouttext /></span></p>
! 2986:
! 2987: <p><span style='font-size:8.0pt;font-family:"Courier New"'><optionresponse
! 2988:
! 2989: max="600"></span></p>
! 2990:
! 2991: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2992:
! 2993: <foilgroup options="('Correct','Incorrect','Can not tell')"></span></p>
! 2994:
! 2995: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 2996:
! 2997: <conceptgroup concept="Effect of the moment-arm on the torque"></span></p>
! 2998:
! 2999: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3000:
! 3001: <foil name="1a" value="Incorrect"></span></p>
! 3002:
! 3003: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3004:
! 3005: For $F1mag larger than $F2mag , $trq1mag is larger than $trq2mag</span></p>
! 3006:
! 3007: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3008:
! 3009: </foil></span></p>
! 3010:
! 3011: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3012:
! 3013: <foil name="1b" value="Incorrect"></span></p>
! 3014:
! 3015: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3016:
! 3017: For $F1mag smaller than $F2mag , $trq1mag is smaller than $trq2mag</span></p>
! 3018:
! 3019: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3020:
! 3021: </foil></span></p>
! 3022:
! 3023: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3024:
! 3025: <foil
! 3026:
! 3027: name="1c" value="Correct"></span></p>
! 3028:
! 3029: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3030:
! 3031: For $F1mag larger than $F2mag , $trq1mag can be less than $trq2mag</span></p>
! 3032:
! 3033: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3034:
! 3035: </foil></span></p>
! 3036:
! 3037: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3038:
! 3039: <foil name="1d" value="Correct"></span></p>
! 3040:
! 3041: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3042:
! 3043: For $F1mag smaller than $F2mag , $trq1mag can be larger than $trq2mag</span></p>
! 3044:
! 3045: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3046:
! 3047: </foil></span></p>
! 3048:
! 3049: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3050:
! 3051: </conceptgroup> </span></p>
! 3052:
! 3053: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3054:
! 3055: <conceptgroup concept="For a given pivot, relation of force vector
! 3056:
! 3057: to torque."></span></p>
! 3058:
! 3059: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3060:
! 3061: <foil name="2a" value="Correct"></span></p>
! 3062:
! 3063: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3064:
! 3065: The moment-arm of $vF is the shortest distance from P to the line along $vF
! 3066:
! 3067: .</span></p>
! 3068:
! 3069: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3070:
! 3071: </foil></span></p>
! 3072:
! 3073: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3074:
! 3075: <foil name="2b" value="Incorrect"></span></p>
! 3076:
! 3077: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3078:
! 3079: The moment-arm of $vF is the shortest distance from P to $vF vector.</span></p>
! 3080:
! 3081: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3082:
! 3083: </foil></span></p>
! 3084:
! 3085: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3086:
! 3087: <foil name="2c" value="Correct"></span></p>
! 3088:
! 3089: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3090:
! 3091: The moment-arm of $vF is not the distance from P to Q<sub>1</sub>.</span></p>
! 3092:
! 3093: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3094:
! 3095: </foil></span></p>
! 3096:
! 3097: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3098:
! 3099: <foil name="2d" value="Incorrect"></span></p>
! 3100:
! 3101: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3102:
! 3103: The moment-arm of $vF is the distance from P to Q<sub>1</sub>.</span></p>
! 3104:
! 3105: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3106:
! 3107: </foil> </span></p>
! 3108:
! 3109: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3110:
! 3111: </conceptgroup></span></p>
! 3112:
! 3113: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3114:
! 3115: <conceptgroup concept="Torque is force x moment-arm."></span></p>
! 3116:
! 3117: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3118:
! 3119: <foil name="3a" value="Correct"></span></p>
! 3120:
! 3121: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3122:
! 3123: $trq1mag equals to the product of the moment-arm and $F1mag .</span></p>
! 3124:
! 3125: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3126:
! 3127: </foil></span></p>
! 3128:
! 3129: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3130:
! 3131: <foil name="3b" value="Incorrect"></span></p>
! 3132:
! 3133: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3134:
! 3135: $trq1mag equals to $F1mag times the distance from Q<sub>1</sub>
! 3136:
! 3137: to P.</span></p>
! 3138:
! 3139: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3140:
! 3141: </foil></span></p>
! 3142:
! 3143: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3144:
! 3145: <foil name="3c" value="Correct"></span></p>
! 3146:
! 3147: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3148:
! 3149: $trq1mag is not equal to the product of $F1mag and the distance from Q<sub>1</sub>
! 3150:
! 3151: to P.</span></p>
! 3152:
! 3153: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3154:
! 3155: </foil></span></p>
! 3156:
! 3157: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3158:
! 3159: <foil name="3d" value="Incorrect"></span></p>
! 3160:
! 3161: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3162:
! 3163: $trq1mag is not equal to the product of the moment-arm and $F1mag .</span></p>
! 3164:
! 3165: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3166:
! 3167: </foil></span></p>
! 3168:
! 3169: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3170:
! 3171: </conceptgroup></span></p>
! 3172:
! 3173: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3174:
! 3175: <conceptgroup concept="Pivot point is required to calculate torque"></span></p>
! 3176:
! 3177: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3178:
! 3179: <foil name="4a" value="Correct"></span></p>
! 3180:
! 3181: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3182:
! 3183: $tau1 vector depends on the location of P.</span></p>
! 3184:
! 3185: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3186:
! 3187: </foil></span></p>
! 3188:
! 3189: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3190:
! 3191: <foil name="4b" value="Incorrect"></span></p>
! 3192:
! 3193: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3194:
! 3195: $tau1 vector does not depend on the location of P.</span></p>
! 3196:
! 3197: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3198:
! 3199: </foil></span></p>
! 3200:
! 3201: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3202:
! 3203: <foil name="4c" value="Correct"></span></p>
! 3204:
! 3205: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3206:
! 3207: $tau1 vector has no meaning unless a pivot is selected.</span></p>
! 3208:
! 3209: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3210:
! 3211: </foil></span></p>
! 3212:
! 3213: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3214:
! 3215: <foil name="4d" value="Incorrect"></span></p>
! 3216:
! 3217: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3218:
! 3219: $tau1 vector can be determined without selecting P. </span></p>
! 3220:
! 3221: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3222:
! 3223: </foil></span></p>
! 3224:
! 3225: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3226:
! 3227: </conceptgroup> </span></p>
! 3228:
! 3229: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3230:
! 3231: <conceptgroup concept="torque from 2 forces acting along same line"></span></p>
! 3232:
! 3233: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3234:
! 3235: <foil name="5a" value="Correct"></span></p>
! 3236:
! 3237: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3238:
! 3239: Two equal forces, acting on a body along the same line but at different positions,
! 3240:
! 3241: produce equal torques with respect to a given pivot."</span></p>
! 3242:
! 3243: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3244:
! 3245: </foil></span></p>
! 3246:
! 3247: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3248:
! 3249: <foil name="5b" value="Incorrect"></span></p>
! 3250:
! 3251: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3252:
! 3253: Two equal forces, along the same line, produce equal torques with respect
! 3254:
! 3255: to a given pivot only if they act at the same point on a body."</span></p>
! 3256:
! 3257: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3258:
! 3259: </foil></span></p>
! 3260:
! 3261: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3262:
! 3263: <foil name="5c" value="Incorrect"></span></p>
! 3264:
! 3265: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3266:
! 3267: Two equal forces acting on a body along the same line but at different positions,
! 3268:
! 3269: produce equal torques for only one pivot."</span></p>
! 3270:
! 3271: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3272:
! 3273: </foil></span></p>
! 3274:
! 3275: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3276:
! 3277: </conceptgroup></span></p>
! 3278:
! 3279: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3280:
! 3281: <foil name="6" value="unused"></span></p>
! 3282:
! 3283: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3284:
! 3285: This foil will never display since it is unused.</span></p>
! 3286:
! 3287: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3288:
! 3289: </foil></span></p>
! 3290:
! 3291: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3292:
! 3293: </foilgroup></span></p>
! 3294:
! 3295: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3296:
! 3297: <notsolved></span></p>
! 3298:
! 3299: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3300:
! 3301: <hintgroup></span></p>
! 3302:
! 3303: <p><span style='font-size:8.0pt;font-family:"Courier New"'>Think the definition
! 3304:
! 3305: of the torque. The force and the moment-arm respect to the pivot. </span></p>
! 3306:
! 3307: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3308:
! 3309: </hintgroup></span></p>
! 3310:
! 3311: <p><span style='font-size:8.0pt;font-family:"Courier New"'>
! 3312:
! 3313: </notsolved></span></p>
! 3314:
! 3315: <p><span style='font-size:8.0pt;font-family:"Courier New"'></optionresponse></span></p>
! 3316:
! 3317: <p><span style='font-size:8.0pt;font-family:"Courier New"'></problem></span></p>
! 3318:
! 3319: <h3> </h3>
! 3320:
! 3321: <p> <img border=0 width=432 height=370
! 3322:
! 3323: src="Session%20On2_files/image003.png" v:shapes="_x0000_i1025"> </p>
! 3324:
! 3325: <p><span style='font-size:14.0pt'><b>Fig. 3.1.1</b></span><span
! 3326:
! 3327: style='font-size:14.0pt'> Ð Internal Structure of Homework Handler</span></p>
! 3328:
! 3329: </div>
! 3330:
! 3331: <br
! 3332:
! 3333: clear=ALL style='page-break-before:always;'>
! 3334:
! 3335: <div class=Section2> </div>
! 3336:
! 3337: </body>
! 3338:
! 3339: </html>
! 3340:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>