Table of Contents
Student Specification of Non-Numerical Parameters
Now that we have seen how to let the student specify a number, let's see how to ask the student to tell us his or her name or nickname to permit us to communicate by name:
The -storea- command is a judging command which will store alphabetic information as distinguished from numeric information. The Qa,name> is the embedded form of the statement âshowa nameâ which will display alphabetic information. This unit will feed back to you any name you give it. Notice that you can't enter a name of more than 8 characters because of the -long- command. TUTOR stores a capital letter as a âshiftâ character plus the lower-case letter, so if capitalized, the name must be shorter because a capital letter counts as two characters. (Insert a âforce longâ statement anywhere before the -storea- if you would like judging to start upon hitting the -long- limit, without having to press NEXT.)
A statement of the form âstorea name,3â will store just the first three characters of the student's response. You can get and keep a character count of the length of the student's name, including âshiftâ characters, by referring to the system variable âjcountâ, which is a count of the number of characters in the copy of the student response used for judging - hence the âjâ. With these facts in mind, change the -storea- to:
This will store the whole response and save the length. Be sure to define both ânameâ and ânamingâ, but do not define âjcountâ or you will override TUTOR's definition of its function. Also, to show the precise number of characters, change the embedded -showa- to:
The reason for saving the present value of âjcountâ in ânamingâ is that âjcountâ will change at each -arrow- in the lesson, whereas throughout the lesson you will repeatedly use âshowa name,namlngâ or <a, name,namlngl> to call the student by name. So, you want ânamingâ to keep the name length. Incidentally, a -showa- with only a single argument (such as âshowa nameâ) will show ten characters, which is the number of characters (including shift characters) that will fit in one of your variables.
It is possible to store alphabetic information which is longer than ten characters. Change the âlong 8â to âlong 20â. Suppose you've defined name In this case, you must make sure that you are not using v25, and change your defines if necessary. The 20-character name will need both v24 and v25 since each variable can hold only ten characters. With these changes it is possible to enter a long name (e.g., Benjamin Franklin, which is 19 characters counting shift characters).
Difference Between Numeric and Alphabetic Information
When we were studying the desk calculator unit, we defined a variable âbob-=v30â for the student. Suppose the student responds with the word âbobâ. If we use a numeric -store-, we will get the number presently contained in v30, which might be 529.3. If we use an alphabetic -storea-, we will get the string of characters âbobâ which is simply a name and nothing more. Perhaps the distinction is most easily seen with an example, which you should write and try out at a PLATO terminal:
Consider various responses. For example, â2bobâ should give a numeric 2Ï (6.2832) and an alphabetic â2bobâ. Most often, we speak of âalphanumericâ information (letters and numbers) in the latter case. The response â3-4/5â yields a numeric 2.2 and an alphanumeric â3-4/5â.
In other words, a storea/showa combination feeds back exactly the alphanumeric text entered by the student. However, a -store- involves a numerical evaluation of the student's response, and a later -showconverts this numerical result into appropriate characters to display on the screen (so that you can read the result). You might interchange the ânumâ and ânameâ arguments on the -store- and -storea- commands to see the unusual things that happen if you pair -store- with -showa- (instead of -show-) or if you pair -storea- with -show- (instead of -showa-).
To sum up, if you accept numeric information with a -store-, display it with a -show-. If you accept alphanumeric information with a -storea-, display it with a -showa-.
More On -answer- and -wrong- (Including -list- and -specs-)
There are some additional features of -answer- (and -wrong-) which should be pointed out. First, -answer- will not only handle word or sentence responses but will also handle numbers:
This -answer- will be matched by a student response of the form â14/2 women and 3+2 menâ because simple expressions such as 14/2 or 3+2 are evaluated by the -answer- command. Currently, the -answer- command will not handle very complicated numerical expressions.
(Later we will discuss the -ansv- and -wrongv- commands which handle expressions as complicated as those handled by -store- but without the sentence capabilities of -answer- arid -wrong-. There are also -ansu- and -wrongu- commands which are similar to -ansv- and -wrongvbut treat scientific units on a dimensional basis.)
If the student says â37 women and 5 men,â the incorrect number 37 will have xx under it, whereas the response â6.5 women and 5 menâ will have the 6.5 underlined since it is nearly correct (similar to a misspelling of a word). Normally -answer- and -wrong- consider numbers off by less than 10% to be âmisspelled.â You can alter these specifications by preceding the list of -answer- and -wrong- commands with a -specscommand:
The -specs- command is a judging command which affects the operation of other judging commands which follow it. Here it has been used to specify that a âtoleranceâ of 1% is permitted and that âno difference will be allowed for underliningâ (normally 10%). Having specified both âtolerâ and ânodiff,â any expressions within 1% of 7 and 5 will be accepted, but expressions with larger discrepancies will not be underlined.
Note carefully that since -specs- is a judging command, it terminates the processing of regular commands. Among other things, this means that a -long- command must precede the -specs-, not follow it. If -long- comes after -specs-, TUTOR could not prevent the student from entering a longer response (since it could not see the -long- command before it paused for the student's response).
Here are some other useful applications of -specs-:
This allows the student to capitalize words, and specifies that misspellings are to be considered ok. Note that if the -answer- tag contains capitalized words, the student must also capitalize those words. The âokeapâ makes capitalization optional only for those words you have not capitalized. You can use -specs- to ignore extra words:
This states that it is ok to have extra words, so that âIt was George Washingtonâ will be an acceptable response. The following is another example of -specs- capabilities:
This specifies that no particular word order is required. Note the absence of commas in the -answer- tag. (Such punctuation marks are not allowed there, but all punctuation marks are ignored in the student's response, so he or she may use commas). Also, note that âanswer apples, pears and peachesâ would represent two synonymous answers, and the student could respond either with âapplesâ or with âpears and peachesâ. There exists a much less powerful -exact- command (as well as other techniques) for judging particular punctuation when that is necessary. For example, it is possible to use the -change- command to redefine the comma to be a âwordâ rather than a punctuation mark. In that case, some otherwise unused character must be defined to take the place of the comma in specifying synonyms.
Here we specify that no âokâ or ânoâ be displayed beside the student's response, contrary to the normal situation. (As an alternative, the -okword- and -noword- commands can be used to change the words TUTOR uses from âokâ and ânoâ to something else.) (For other -specs- capabilities see reference material described in Appendix A.) Another important feature of -specs- (in addition to its use in specifying various options) is that it marks a place to return to after judging. Consider the following unit. You do not define the system variable âspellâ.
Suppose the student types âWASHINGTONâ. TUTOR starts judging just after the -arrow- and encounters -specs-, a judging command. The tag (âbumpshiftâ) tells TUTOR to change the response to âwashingtonâ for judging purposes. (Incidentally, this operation changes âjcountâ, the character count of the judging copy of the student's response, from 20 to 10 because the âshiftâ characters are knocked out.) Moreover, TUTOR makes a note that it encountered a -specs- command as the fourth command in unit âpresiâ, and this marker will be used in a moment. TUTOR skips the following -at- and -writec- because regular commands are skipped in the judging state.
Next, TUTOR encounters âanswer washingtonâ which matches the student's (altered) response, and this terminates judging. The succeeding regular commands are processed as usual. In this case, there is only a âwrite Good old Georgeâ before we run into another judging command (âanswer adamsâ) which stops the processing.
Actually, processing has not completely stopped. It is at this point that TUTOR asks one last question: âDid I pass a -specs- command in processing this response?â The answer is yes (at the fourth command in unit âpresiâ). TUTOR now processes any regular commands following that -specs- marker. In this case, TUTOR does an âat 2508â and a -writec- before finally being stopped (really stopped this time) by the first -answer- command.
The -writec- refers to the system variable âspellâ which is true (-1) if the spelling is correct, and false (0) if a misspelling has been detected. The variable âspellâ is -1 if there are no underlined words, but there may be X'ed words (words that are completely different).
The usefulness of the marker property of -specs- is that you can specify a central place to put messages and calculations, which should be done no matter which judging command is matched. We will see additional applications of this useful feature of -specs-. Notice that a later -specs- command will override an earlier -specs- marker in a manner analogous to the way a later -help- command overrides an earlier setting of the âhelpâ marker. Note, too, that if no regular commands follow the -specs-, TUTOR finds nothing to do when it comes there after being nearly stopped as described above. This was the situation in our previous examples such as:
In this example, there are no regular commands between the -specs- and the -ok-.
Let us return for a moment to the -answer- command. We had examples involving synonyms such as (right,rt) or (Va,Virginia). A convenient way to specify synonym lists which occur frequently in a lesson is to define a -list-:
Here âaffirmâ is the title of a list of synonyms (âaffirmâ is not itself a member of that list). With this definition, which should be placed at the very beginning of your lesson along with your -define- statement, you can write:
These are equivalent to:
Note that âanswer we affirmâ does not imply this list of synonyms, just as a single important word by itself does not refer to a list. You can use the list equally well to specify optional words, as in:
Here «affirm» is equivalent to <yes,ok,yep,yeah,sure,certainly>. Note that <affirm> merely refers to the single word âaffirmâ. Double marks are needed to refer to the list whose title is âaffirmâ. You can combine references to synonym lists with individual words. For example:
The following list might also be particularly useful:
This covers the main capabilities of the -answer- and -wrongcommands and their associated -list- definitions. The -specs- command may be used to modify how -answer- works and also serves as a useful marker. The marker function of -specs- is not limited to -answer- but holds for any judging commands which follow it, including -ok- and -no-
The -answer- (or -wrong-) command can nicely handle responses which involve a relatively small vocabulary of words. It is, therefore, adequate when the context limits the diversity of student responses (such as foreign language translation drills where there are only a few permissible translations of the sentence and each such sentence contains a rather small number of allowable words). The detailed markup of the response provides the student with useful feedback in such a drill.
The -answer- command is not well-suited to a more free dialog with the student where the context is broader and where the vocabulary used by the student may encompass hundreds of words. In the next section we discuss the -concept- command which can cope with more complexity.