feedback contingent on response time
David McFarlane
mcfarla9 at msu.edu
Tue Oct 7 15:45:45 UTC 2008
Tracy,
Thank you for including all the necessary script excerpts, I like
that a lot better than having to wade through a complete attached program.
Well, I have a lot to say about this, mostly about programming style,
since in fact I do not see why your script does not work. But I will
propose a solution in the end.
First, since the OverallRT appears in your E-DataAid file, I assume
that you have verified that it does indeed go above 1500 ms in your
debugging runs. Otherwise I would be concerned lest your progam
simply does not allow responses past 1500 ms. Also, note that
without a response you will get a RT of 0, and this will bring the
average down, so you might want to make sure to take care of that
(unless you just left that out of your excerpts), something like
If Stimuls5.RT > 0 Then ' got a response
OverallRT.AddObservation Stimulus5.RT
Else ' no response
OverallRT.AddObservation <maximum possible RT>
End If
Second, look closely at your If... Then... ElseIf cascade, and see
what happens if OverallRT exactly equals 1500, or OverallACC exactly
equals 80. Your If ... Then does not cover those cases, and in that
case your script does nothing. Did you mean to do that? If not,
then somewhere in there you should have some "<=" or ">=" instead of
"<" or ">". Also, good practice dictates that you have a final Else
clause even if your program should never get there (I call this a
"sanity check"), we call practices like this "defensive programming"
(look that up on Wikipedia).
Third, if it were me, instead of modifying object text directly, as in
BlockACC.Text = "Your average accuracy is " & ...
I would use an attribute reference, as in
c.SetAttrib "BlockACC", "Your average accuracy is " & ...
At the very least, an attribute reference in the object alerts the
programmer that this value will be modified at run time, otherwise
the programmer has no clue that text will be modified in script. But
this may come down to a matter of personal programming style.
Fourth, I note that your message always starts with
"Your average accuracy is " & c.GetAttrib("OverallACC") & " % and
your responses are "
I would take advantage of that in clarifying the script with a rewrite.
Fifth, I would say that, unless this is meant just as an
instructional program, your program is over commented. Things like
the .AddObservation method and Debug.Print should be general
background knowledge for anyone using E-Prime, and do not need to be
explained in program comments, that just makes the program harder to
read. Comments should be reserved to answer *specific* questions
that may occur to others reading the script.
So much for my unsolicited $.02. Now, if it were me, I might use an
attribute reference for the text in BlockACC (e.g., [BlockACC]), and
completely rewrite your If... Then script. Let's assume that RT =
1500 is still fast, and ACC = 80 is still good, then the script might
come out like this:
Dim blockACC as String ' just for convenience
' Message always starts the same:
blockACC = "Your average accuracy is " & c.GetAttrib("OverallACC") _
& " % and your responses are "
If c.GetAttrib("OverallRT") <= 1500 Then ' fast RT
blockACC = blockACC & "fast." ' all done if good ACC
If c.GetAttrib("OverallACC") < 80 Then ' poor ACC
blockACC = blockAcc & " Please try harder."
End If
Else ' slow RT
blockACC = blockACC & "slow."
If c.GetAttrib("OverallACC") < 80 Then ' poor ACC
blockACC = " Please try harder."
Else ' good ACC
blockACC = blockACC & " Good Job and please respond quickly."
End If
End If
c.SetAttrib "BlockACC", blockACC
No doubt with a little thought you can improve even further on this.
-- David McFarlane, Professional Faultfinder
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en
-~----------~----~----~----~------~----~------~--~---
More information about the Eprime
mailing list