Repository navigation
fb_name()
-
txtfeedback text -
isOKflag for test result -
nthenamesarray (content of thenamesinput field) -
iindex of the contact/support object whose resolved reaction's name is to be checked -
lonlist of allowed name strings, e.g.["N_A","A","F_A"]
This function checks only whether the name the student assigned to the reaction resolved at index i is one of the allowed names in lon - nothing else. It is deliberately kept separate from Feedback for "contact" (fb_contact()) / fb_bar_name() rather than built into them, so that a question can score and weight the naming convention independently from the geometric/physical correctness of the reaction.
fb_name() does not itself report "no reaction found" or "more than one reaction found": if n[i] is not a list resolving to exactly one load, it silently returns ["", false] with no feedback text. It is meant to be used alongside fb_contact() (or fb_bar()/fb_unidir()) on the same index, which already produces that feedback - fb_name() only adds the naming check on top, once a single reaction is actually resolved there. If there are multiple reactions at object i, the first one is checked.
Checks done by fb_name():
- Does
n[i]resolve to exactly one load? (If not:["", false], no feedback text - see above.) - Is that load's name a member of
lon? If not, the feedback names the offending symbol, e.g. "(A) ist kein passender Name".
fb_name(n,i,lon):=block([name,txt],
name: none,
if listp(n[i]) and not emptyp(n[i]) then name: n[n[i][1]] else return(["", false]),
if member(name,lon) then return( ["",true]) else
return([castext("\\({@name@} \\) ist kein passender Name"), false])
);
Feedback variables:
obj: stackjson_parse(objects);
[text, isOK]: fb_unidir(obj, names, i_SB, "Pendelstütze B: ");
[textn, isOKn]: fb_name(names, i_SB, ["B"]);
PRT node
A separate node testing isOKn = true, with {@textn@} as its feedback - so a wrong direction/position (via fb_contact()/fb_unidir()/fb_bar()) and an unsuitable name are reported, and scored, independently.
For tryout use the Meclib Workbench. It requires a local clone of this repository and a local Maxima installation. The workbench includes a rich editor for STACK questions with fast preview including CAStext and Mathjax rendering.
For older versions of Meclib you can use jsfiddle for tryout.
In order to try code snippets in jsfiddle,
- copy the code from the wiki page to the clipboard
- follow the link for the JSXGraph version you want to try
- Replace the code in the HTML section (contents of
<p id="init">) with the content of the clipboard
The remaining jsfiddle pages don't seem to work any more (as of 04/26)