1. Unusually clear pseudocode example
- Posted by DB James <larch at adelphia.net> Oct 24, 2005
- 485 views
- Last edited Oct 25, 2005
Hi, Found this on the web while searching on "pseudocode" -- it seems like a good clear example of a presention of an algorithm. A collection of such algorithms, done consistently in form, would be valuable. As it is, the pseudocode on the web seems a mish-mash that ranges widely in value. Even this example is mildly biased toward C++. Ideally there would be no program bias. I did use this in writing a slope and intercept function. ------------------------------------------------------------------ from: http://www.mines.edu/Academic/courses/math_cs/macs261/LABS/F00/lab7.html LEAST SQUARES LINE PURPOSE: Find the equation of the least squares line for a set of n data points (x,y). Slope is its slope, and YIntercept it its y intercept. SumX, SumY, SumX2, and SumXY are the sums of the x's, the y's, the squares of the x's, and the products x*y. XMean and YMean are the means of the x's and the y's, respectively INPUT: A collection of data points (x,y) OUTPUT: The equation of the least squares line ALGORITHM: Step 1 Initialize n, SumX, SumY, SumX2, SumXY all to 0. Step 2 Read the x-coordinate of the first data point x. Step 3 While the end of data has not been encountered, do the following Step 4 Read the y-coordinate of the data point, y. Step 5 Increment n by 1. Step 6 Add x to SumX Step 7 Add x^2 to SumX2 Step 8 Add y to SumY Step 9 Add x*y to SumXY Step 10 Read the next data point x,y End while Step 11 If n > 0 then call CalculateSlopeIntercept and display least squares line Step 12 Else Display a message that no data points were read. End If/Else End Main PROCEDURE: CalculateSlopeIntercept INPUT: SumX, SumY, SumX2, SumXY, n OUTPUT: Slope of least squares line, and YIntercept of least squares line. ALGORITHM: Step1 calculate XMean = SumX/n and YMean = SumY/n Step2 calculate Slope = (SumXY - SumX*YMean)/(SumX2 - SumX*XMean) Step3 calculate YIntercept = YMean - Slope * XMean Step4 return Slope and YIntercept The algorithm assumes a main portion and a function call to a procedure called ComputeSlopeIntercept. In C++ this would be a main() function and a void function ComputeSlopeIntercept with 5 value parameters and 2 reference parameters. Step 4 in the procedure algorithm, return Slope and YIntercept is achieved through assignment of the reference parameters. No explicit return statement is needed. The output of the program is bracketed by an if/else structure to avoid calling the procedure ComputeSlopeIntercept with no data points. The output should include the format of a line in slope-intercept form y = mx + b. This equation should be displayed on the screen. ---------------------------------------------------------------------- --Quark
2. Re: Unusually clear pseudocode example
- Posted by Jason Gade <jaygade at yahoo.com> Oct 25, 2005
- 493 views
DB James wrote: > > > Hi, > > Found this on the web while searching on "pseudocode" -- it seems like a good > clear example of a presention of an algorithm. A collection of such > algorithms, > done consistently in form, would be valuable. As it is, the pseudocode on the > web seems a mish-mash that ranges widely in value. Even this example is > mildly > biased toward C++. Ideally there would be no program bias. I did use this > in writing a slope and intercept function. > > ------------------------------------------------------------------ > from: > <a > href="http://www.mines.edu/Academic/courses/math_cs/macs261/LABS/F00/lab7.html">http://www.mines.edu/Academic/courses/math_cs/macs261/LABS/F00/lab7.html</a> > > LEAST SQUARES LINE > > PURPOSE: Find the equation of the least squares line for a set of n data > points (x,y). Slope is its slope, and YIntercept it its y intercept. > SumX, SumY, SumX2, and SumXY are the sums of the x's, the y's, the squares of > > the x's, and the products x*y. XMean and YMean are the means of the x's > and the y's, respectively > > INPUT: A collection of data points (x,y) > > OUTPUT: The equation of the least squares line > > > ALGORITHM: > > Step 1 Initialize n, SumX, SumY, SumX2, SumXY all to 0. > > Step 2 Read the x-coordinate of the first data point x. > > Step 3 While the end of data has not been encountered, do the following > > Step 4 Read the y-coordinate of the data point, y. > > Step 5 Increment n by 1. > > Step 6 Add x to SumX > > Step 7 Add x^2 to SumX2 > > Step 8 Add y to SumY > > Step 9 Add x*y to SumXY > > Step 10 Read the next data point x,y > > End while > > > Step 11 If n > 0 then call CalculateSlopeIntercept > and display least squares line > > Step 12 Else Display a message that no data points were read. > > End If/Else > > End Main > > PROCEDURE: CalculateSlopeIntercept > > INPUT: SumX, SumY, SumX2, SumXY, n > > OUTPUT: Slope of least squares line, and YIntercept of least > squares line. > > ALGORITHM: > > Step1 calculate XMean = SumX/n and YMean = SumY/n > > Step2 calculate Slope = (SumXY - SumX*YMean)/(SumX2 - SumX*XMean) > > Step3 calculate YIntercept = YMean - Slope * XMean > > Step4 return Slope and YIntercept > > The algorithm assumes a main portion and a function call to a procedure called > ComputeSlopeIntercept. In C++ this would be a main() function and a void > function > ComputeSlopeIntercept with 5 value parameters and 2 reference parameters. Step > 4 in the procedure algorithm, return Slope and YIntercept is achieved through > assignment of the reference parameters. No explicit return statement is > needed. > > The output of the program is bracketed by an if/else structure to avoid > calling > the procedure ComputeSlopeIntercept with no data points. The output should > include > the format of a line in slope-intercept form y = mx + b. This equation should > be displayed on the screen. > ---------------------------------------------------------------------- > > --Quark I haven't worked on it for awhile, but I wish that I had clear explanations like this for the Great Computer Language Shootout code... it would make the task much easier. What I do now is translate from C or whatever other language is the most clear but I still don't always understand what I'm doing. If I had clearer explanations I would be able to see how to use Euphoria's strengths better. j.