08-22-2015, 06:44 PM
Hello all,
As a newbie with my Prime, I am slowly attempting different things to learn how to do programming on it (I'm having great fun with this!).
For most of my programs so far, I have dug out old BASIC programs that I have had running before on other vintage computer systems that I have.
My latest program is a simple one that calculates the value of Pi by adding up the sides of a polygon inscribed within a circle. This program comes from an old article from Creative Computing back in 1978:
[attachment=2464]
Anyway, I am surprised that the author's original method of building up the equation to find the length of a side of the polygon does not work properly in my program. I have built a couple of more equations to compute the side length that work properly, but I remain confused why the original method used by the author of the article does not work properly.
Here's my code:
Please take a look (if you want) and if there is something obvious that I'm missing, please let me know.
TIA,
smp
As a newbie with my Prime, I am slowly attempting different things to learn how to do programming on it (I'm having great fun with this!).
For most of my programs so far, I have dug out old BASIC programs that I have had running before on other vintage computer systems that I have.
My latest program is a simple one that calculates the value of Pi by adding up the sides of a polygon inscribed within a circle. This program comes from an old article from Creative Computing back in 1978:
[attachment=2464]
Anyway, I am surprised that the author's original method of building up the equation to find the length of a side of the polygon does not work properly in my program. I have built a couple of more equations to compute the side length that work properly, but I remain confused why the original method used by the author of the article does not work properly.
Here's my code:
Code:
EXPORT CalcPi()
BEGIN
// Calculate Pi by inscribed ploygons
// Original author:
// George W. Ball, Alfred University
R:=10; // Use a circle of radius 10
N:=4;
S:=R*√(2);
PRINT();
PRINT("Machine value for Pi = " +(4*ATAN(1)));
PRINT("Machine value for Pi = " +PI);
PRINT(" ");
PRINT("Sides Perimiter");
FOR K FROM 1 TO 28 DO
PRINT(N +" " +((S*N)/(2*R)));
// Y:= S*S/4;
// H=√(R*R-Y);
// X:=R-H;
// S:=√(X*X+Y); // does not work
// S:=√((R-(√(R*R-(S*S/4))))*(R-(√(R*R-S*S/4)))+(S*S/4)); // works
S:=√((R-√(R*R-(S/2)^2))^2+(S/2)^2); // works
N:=2*N;
END;
END;
Please take a look (if you want) and if there is something obvious that I'm missing, please let me know.
TIA,
smp