The Museum of HP Calculators

HP Forum Archive 21

 My first HP Prime PPL ProgramMessage #1 Posted by Michael de Estrada on 18 Oct 2013, 10:37 a.m. 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 ProgramMessage #2 Posted by Tim Wessman on 18 Oct 2013, 10:51 a.m.,in response to message #1 by Michael de Estrada 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 ProgramMessage #3 Posted by Michael de Estrada on 18 Oct 2013, 11:20 a.m.,in response to message #2 by Tim Wessman 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 ProgramMessage #4 Posted by walter b on 18 Oct 2013, 12:11 p.m.,in response to message #3 by Michael de Estrada 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 ProgramMessage #5 Posted by Han on 18 Oct 2013, 7:27 p.m.,in response to message #1 by Michael de Estrada 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 ProgramMessage #6 Posted by Michael de Estrada on 18 Oct 2013, 7:46 p.m.,in response to message #5 by Han Thanks. Like I said, I'm very new to this and could definitely improve.

 Re: My first HP Prime PPL ProgramMessage #7 Posted by Eddie W. Shore on 18 Oct 2013, 9:37 p.m.,in response to message #6 by Michael de Estrada It is very good for a first attempt Michael. It also fills a much needed gap IMO.

 Re: My first HP Prime PPL ProgramMessage #8 Posted by Michael de Estrada on 19 Oct 2013, 11:16 a.m.,in response to message #7 by Eddie W. Shore 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 ProgramMessage #9 Posted by Han on 19 Oct 2013, 1:28 p.m.,in response to message #8 by Michael de Estrada 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 ProgramMessage #10 Posted by Michael de Estrada on 19 Oct 2013, 2:32 p.m.,in response to message #9 by Han 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.

Go back to the main exhibit hall