▼
Posts: 1,665
Threads: 142
Joined: Jan 2009
This is my first ever non RPL program and it took me several hours to figure it out and get it to work, since I'm totally unfamiliar with the language, syntax, conventions and interface. Also, many needed commands are not included or explained in the calculator commands list. For example, I was unable to get the program to run w/o crashing and resetting the calculator until I inserted the LOCAL statement. In other cases I received a syntax error doing a Check of the code when using the exact syntax shown in an example in the User Guide. During the development I encountered numerous sudden resets of the calculator while entering/editing the program, which seems to be commonplace with this calculator. Fortunately, however, I did not corrupt the flash drive this time around.
This program performs 2D polar<>rectangular coordinate conversions, which are not supplied as builtin functions on the Prime. Note that I have substituted "Theta" and "SQRT" in this posting in place of the actual symbols, since they would not display properly.
EXPORT PR_Convert()
BEGIN
LOCAL X1,X2;
CHOOSE(N,"PR_Convert","Polar","Rectangular");
CASE
IF N=1 THEN
INPUT(X1,"To Polar","X =","Enter X",1);
INPUT(X2,"To Polar","Y =","Enter Y",1);
PRINT("R = " +SQRT(X1²+X2²) );
PRINT("Theta = " +ATAN(X2/X1) );
END;
IF N=2 THEN
INPUT(X1,"To Rectangular","R =","Enter R",1);
INPUT(X2,"To Rectangular","Theta =","Enter Theta",1);
PRINT("X = " +X1*COS(X2) );
PRINT("Y = " +X1*SIN(X2) );
END;
DEFAULT
END;
END;
▼
Posts: 1,278
Threads: 44
Joined: Jul 2007
So if you mean there is no R>P command and P>R, you are correct. Those only make sense on a RPN only system that does not assume each command will return only a single result.
The way this is designed is that you can toggle your complex number forms. Type your complex number, then use the [shift] [*] key to toggle between the two representations.
What is missing is a command to do this inside a program.
TW
▼
Posts: 1,665
Threads: 142
Joined: Jan 2009
Thanks, Tim. I hadn't noticed that key. It's a lot easier than the HP 50g, where you have to go into the MODE menu and change the coordinate system. Actually, the last HP calculator to have a proper R<>P key was the HP 33s, which unfortunately HP no longer makes. Doing R<>P coordinate conversions on the HP 35s is very cumbersome.
▼
Posts: 4,587
Threads: 105
Joined: Jul 2005
Quote:
It's a lot easier than the HP 50g, where you have to go into the MODE menu and change the coordinate system. Actually, the last HP calculator to have a proper R<>P key was the HP 33s, which unfortunately HP no longer makes. Doing R<>P coordinate conversions on the HP 35s is very cumbersome.
Did I tell you I recommend a WP 34S here?
d:)
Posts: 709
Threads: 104
Joined: Nov 2005
Quote:
This is my first ever non RPL program and it took me several hours to figure it out and get it to work, since I'm totally unfamiliar with the language, syntax, conventions and interface. Also, many needed commands are not included or explained in the calculator commands list. For example, I was unable to get the program to run w/o crashing and resetting the calculator until I inserted the LOCAL statement. In other cases I received a syntax error doing a Check of the code when using the exact syntax shown in an example in the User Guide. During the development I encountered numerous sudden resets of the calculator while entering/editing the program, which seems to be commonplace with this calculator. Fortunately, however, I did not corrupt the flash drive this time around.
This program performs 2D polar<>rectangular coordinate conversions, which are not supplied as builtin functions on the Prime. Note that I have substituted "Theta" and "SQRT" in this posting in place of the actual symbols, since they would not display properly.
EXPORT PR_Convert()
BEGIN
LOCAL X1,X2;
CHOOSE(N,"PR_Convert","Polar","Rectangular");
CASE
IF N=1 THEN
INPUT(X1,"To Polar","X =","Enter X",1);
INPUT(X2,"To Polar","Y =","Enter Y",1);
PRINT("R = " +SQRT(X1²+X2²) );
PRINT("Theta = " +ATAN(X2/X1) );
END;
IF N=2 THEN
INPUT(X1,"To Rectangular","R =","Enter R",1);
INPUT(X2,"To Rectangular","Theta =","Enter Theta",1);
PRINT("X = " +X1*COS(X2) );
PRINT("Y = " +X1*SIN(X2) );
END;
DEFAULT
END;
END;
For the INPUT command, I believe that you can place multiple inputs using lists. For example,
INPUT({X1,X2}, "Title", { "X1=", "X2=" }, {"Enter X1", "Enter X2" }, {0,0})
▼
Posts: 1,665
Threads: 142
Joined: Jan 2009
Thanks. Like I said, I'm very new to this and could definitely improve.
▼
Posts: 764
Threads: 118
Joined: Aug 2007
It is very good for a first attempt Michael. It also fills a much needed gap IMO.
▼
Posts: 1,665
Threads: 142
Joined: Jan 2009
Hi Eddie,
Thanks for the encouragement. I'm definitely a lightweight in this crowd. I've revised the program code per Han's suggestion and it makes for a better operation. Instead of the inputs appearing separately, they now appear on a single screen, although the number of keystrokes and entries remains unchanged. I also replaced "=" with "==" in the CASE tests for consistency, although it doesn't seem to matter which form is used.
EXPORT PR_Convert()
BEGIN
LOCAL X1,X2;
CHOOSE(N,"PR_Convert","Polar","Rectangular");
CASE
IF N==1 THEN
INPUT({X1,X2},"To Polar",{"X =","Y ="},{"Enter X","Enter Y"},{0,0});
PRINT("R = " + sqrt(X1²+X2²) );
PRINT("theta = " + ATAN(X2/X1) );
END;
IF N==2 THEN
INPUT({X1,X2},"To Rectangular",{"R =","theta ="},{"Enter R","Enter theta"},{0,0});
PRINT("X = " + X1*COS(X2) );
PRINT("Y = " + X1*SIN(X2) );
END;
DEFAULT
END;
END;
Edited: 19 Oct 2013, 12:06 p.m.
▼
Posts: 709
Threads: 104
Joined: Nov 2005
Quote:
Hi Eddie,
Thanks for the encouragement. I'm definitely a lightweight in this crowd. I've revised the program code per Han's suggestion and it makes for a better operation. Instead of the inputs appearing separately, they now appear on a single screen, although the number of keystrokes and entries remains unchanged. I also replaced "=" with "==" in the CASE tests for consistency, although it doesn't seem to matter which form is used.
EXPORT PR_Convert()
BEGIN
LOCAL X1,X2;
CHOOSE(N,"PR_Convert","Polar","Rectangular");
CASE
IF N==1 THEN
INPUT({X1,X2},"To Polar",{"X =","Y ="},{"Enter X","Enter Y"},{0,0});
PRINT("R = " + sqrt(X1²+X2²) );
PRINT("theta = " + ATAN(X2/X1) );
END;
IF N==2 THEN
INPUT({X1,X2},"To Rectangular",{"R =","theta ="},{"Enter R","Enter theta"},{0,0});
PRINT("X = " + X1*COS(X2) );
PRINT("Y = " + X1*SIN(X2) );
END;
DEFAULT
END;
END;
I think we can all empathize with being a lightweight. I had not even messed with the emulator until I got my calculator in late September (only a few weeks ago). There are still lots of things we are all still trying to figure out on the calculator. And you might finding it interesting that = does not always behave like == :) I think your approach is best, though  use == for boolean tests and avoid = when possible.
Good luck programming  I'm just glad the language is very easy to learn and also quite fast.
▼
Posts: 1,665
Threads: 142
Joined: Jan 2009
What I find interesting is that the Help key gives the exact same explanation of "=" and "==" when I select them in the Catalog menu in the toolbox.
