HP Forums
My first HP Prime PPL Program - Printable Version

+- HP Forums (https://archived.hpcalc.org/museumforum)
+-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html)
+--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html)
+--- Thread: My first HP Prime PPL Program (/thread-253133.html)



My first HP Prime PPL Program - Michael de Estrada - 10-18-2013

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 built-in 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;



Re: My first HP Prime PPL Program - Tim Wessman - 10-18-2013

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


Re: My first HP Prime PPL Program - Michael de Estrada - 10-18-2013

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.




Re: My first HP Prime PPL Program - Walter B - 10-18-2013

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:-)


Re: My first HP Prime PPL Program - Han - 10-18-2013

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 built-in 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})



Re: My first HP Prime PPL Program - Michael de Estrada - 10-18-2013

Thanks. Like I said, I'm very new to this and could definitely improve.


Re: My first HP Prime PPL Program - Eddie W. Shore - 10-18-2013

It is very good for a first attempt Michael. It also fills a much needed gap IMO.


Re: My first HP Prime PPL Program - Michael de Estrada - 10-19-2013

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.


Re: My first HP Prime PPL Program - Han - 10-19-2013

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.


Re: My first HP Prime PPL Program - Michael de Estrada - 10-19-2013

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.