Re: Could you please explain me whats happening in this code.Posted by webmaster Guido on July 03, 2003 at 16:34:29: In Reply to: Could you please explain me whats happening in this code. posted by p12297 on July 01, 2003 at 18:32:01: : Could you please explain me whats happening in this code. : if (abs (err)>epsilon) OR (abs (Overshoot)>epsilon) then In order to analyze the code, I rearranged it slightly so that we can have a look at the structure. if (Abs(Err) > Epsilon) or (Abs(Overshoot) > Epsilon) then
begin
if Sign(Err) = Sign(Overshoot) then
begin
if Abs(Err) > 0 then
MyForm.Info.Lines.Append(S + ' ')
else
MyForm.Info.Lines.Append(S + ' -');
Overshoot := - Sign(Overshoot) * Epsilon;
end
else
Overshoot := Err;
end
else
if Overshoot = 0 then
Overshoot := Err;
I suppose that "Err" contains an error value, a positive or negative deviation from
some reference value. "Epsilon" seems to be a positive constant, to which "Err" and "Overshoot" are
compared. Looks like the code is written to be called repeatedly for different values of "Err", to recalculate Overhoot each time. In pseudo code: if (absolute value of Err) > Epsilon or
(absolute value of OverShoot) > Epsilon then
begin
if Err and Overshoot have the same sign then
begin
invert sign of Overshoot, multiply result by Epsilon
// also add a line to memo-component "Info"
if (abs value of Err) > 0 then
add string S followed by a space
else // (abs value of Err) = 0
add string S followed by space and minus sign
end
else // Err and Overshoot have different signs
Overshoot := Err
end
else // neither of the absolute values is greater than Epsilon
if Overshoot = 0 then
Overshoot := Err
// else don't change Overshoot
Hope that this is what you're asking for... please correct me if I'm wrong :) [ DelphiLand: free Delphi source code, tips, tutorials ] |
|