HP 35s - How to write a for loop
02-11-2020, 05:35 PM
Post: #1
 bxzj Junior Member Posts: 3 Joined: Feb 2020
HP 35s - How to write a for loop
Hi!

I need to create a program to compute Euler's totient function but
i'm stuck in a for loop.
I have to write something like that:
Code:
 for(i = 1; i < n; i++)   // do stuff

I'm aware of the ISG operator and the loop-control number (i.e.
Code:
ccccccc.fffii
)
but i don't known how to integrate it with the i < n part. Is it possible? If so, can someone give
me an example of a for loop?

Thanks
02-11-2020, 08:32 PM
Post: #2
 Maximilian Hohmann Senior Member Posts: 915 Joined: Dec 2013
RE: HP 35s - How to write a for loop
Hello!

If you come from a high level programming language then programming loops and other control structures with calculators that rely on "keystroke programming" can be a very major PIA. But it is possible (to a degree).

(02-11-2020 05:35 PM)bxzj Wrote:  If so, can someone give me an example of a for loop?

This is an online version of the calculator manual: https://www.manualslib.com/manual/257003...228#manual
When you click forward two pages you can see a very simple example.

Have fun with it (so to say...)
Max
02-11-2020, 08:44 PM
Post: #3
 bxzj Junior Member Posts: 3 Joined: Feb 2020
RE: HP 35s - How to write a for loop
(02-11-2020 08:32 PM)Maximilian Hohmann Wrote:  Hello!

If you come from a high level programming language then programming loops and other control structures with calculators that rely on "keystroke programming" can be a very major PIA. But it is possible (to a degree).

(02-11-2020 05:35 PM)bxzj Wrote:  If so, can someone give me an example of a for loop?

This is an online version of the calculator manual: https://www.manualslib.com/manual/257003...228#manual
When you click forward two pages you can see a very simple example.

Have fun with it (so to say...)
Max

The problem with the example provided by the manual is that it works with a “fixed limit”(for instance from 0 to 10 or from 0 to 50), what I want to do is a “dynamic” loop: something like “from 1 to x” with x inserted by the user. But I don’t know if it’s possible.
02-11-2020, 10:39 PM
Post: #4
 Gene Moderator Posts: 1,204 Joined: Dec 2013
RE: HP 35s - How to write a for loop
I think so.

Simply take the user input upper limit and construct the control word.

User keys 499
R/S

Have the program take the 499, divide by 1000, then add one.

The control word would be 1.499 and the ISG loop would repeat the steps with the variable changing from 1 to 499.

If the user entered 50 or 75 or ? the loop would run from 1 to that supplied number of times. Something like this.

LBL T
1E3
/
1
+
STO 00
LBL L
Do something in here
ISG 00
GTO L
STOP

Is this what you are thinking about ?
02-12-2020, 04:21 PM
Post: #5
 bxzj Junior Member Posts: 3 Joined: Feb 2020
RE: HP 35s - How to write a for loop
(02-11-2020 10:39 PM)Gene Wrote:  I think so.

Simply take the user input upper limit and construct the control word.

User keys 499
R/S

Have the program take the 499, divide by 1000, then add one.

The control word would be 1.499 and the ISG loop would repeat the steps with the variable changing from 1 to 499.

If the user entered 50 or 75 or ? the loop would run from 1 to that supplied number of times. Something like this.

LBL T
1E3
/
1
+
STO 00
LBL L
Do something in here
ISG 00
GTO L
STOP

Is this what you are thinking about ?

btw, is there any advantages to use (I)(STO 0) or (J)(STO .) registers instead of A-Z one?
02-17-2020, 10:20 AM
Post: #6
 Csaba Tizedes Senior Member Posts: 495 Joined: May 2014
RE: HP 35s - How to write a for loop
Far better to use DSE instead of ISG, because
• no need to prepare the loop (1000 / 1 + is not required)
• not limited the loop end value to 999

Code:
 LBL T   STO A   STO B   LBL L     RCL B     RCL - A     STOP     DSE A     GTO L RTN

This is do the job also (counts from 0 to N-1). A is the counter register and B is for storing the user data to reverse the counting direction (or maybe it required later).

Csaba
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)