Annotation of doc/gutshtml/SessionOn2.html, revision 1.3
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:
1.3 ! albertel 2025: precedence over the the normal env settings of these, use &Apache::lonxml::whichuser()
1.2 bowersj2 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:
1.3 ! albertel 2311: style='font-family:"Courier New";color:black'>$env{'request.course.id'}</span><span
1.2 bowersj2 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:
1.3 ! albertel 2325: style='font-family:"Courier New";color:black'>$env{'user.domain'}</span><span
1.2 bowersj2 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:
1.3 ! albertel 2339: style='font-family:"Courier New";color:black'>$env{'user.name'}</span><span
1.2 bowersj2 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:
1.3 ! albertel 2353: style='font-family:"Courier New";color:black'>$env{'user.home'}</span><span
1.2 bowersj2 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:
1.3 ! albertel 2359: style='color:black'>. If no value is passed to store/restore the value in %env
1.2 bowersj2 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>