comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Trouble with a loop
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: Trouble with a loop [message #67674] Fri, 14 August 2009 07:02
pgrigis is currently offline  pgrigis
Messages: 436
Registered: September 2007
Senior Member
On Aug 14, 9:14 am, Allan Whiteford
<allan.rem...@phys.remove.strath.ac.remove.uk> wrote:
> David Baker wrote:
>> I'm hoping someone on here maybe able to help me with a problem i'm
>> having trying to construct the following type of loop
>
>> FOR i=0,end DO BEGIN
>>      IF x GT y THEN BEGIN
>>           FOR j=0,end DO BEGIN
>>              some program statements
>>           ENDFOR
>>           end=end-1
>>           b=b+1
>>           i=i-1
>>      ENDIF
>> ENDFOR
>
>> Now the problem i'm facing is that although the i value is correctly
>> changed IDL is unaware that the limits of the for loop have been
>> decrease (i,e the value end doesn't appear to be updated when checking
>> i against it for the for loop thus leaving me in a recurring loop.)
>
>> Does anyone have any advice/ideas?
>
>> Many thanks,
>> David
>
> David,
>
> Using a variable called "end" is a really bad idea from the start, it's
> a reserved word.
>
> That aside, you want a "while" construct rather than a "for" construct:
>
> i=0
> while i++ le endvar DO BEGIN
>       IF x GT y THEN BEGIN
>            FOR j=0,endvar DO BEGIN
>               some program statements
>            ENDFOR
>            endvar=endvar-1
>            b=b+1
>            i=i-1
>       ENDIF
> ENDFOR
>
> It's also poor form and a bit rude to change your loop variable inside
> of a for loop (i.e. your line saying i=i-1) although this is normally
> considered ok inside a while.
>
> I suspect you need to take a step back and ask what you're trying to do
> with this code. It's hard for us to tell because we don't know what
> "some program statements" are and how they relate to x and y. It looks
> to me like it's almost "endvar"/"end" which should be the loop variable.
>
> Hope this helps.
>
> Thanks,
>
> Allan


Also, alternatively, if you need end(var) to decrease,
in IDL you can do something like:

for k=10,1,-1 do stuff

This will make k take the values of 10, 9, ..., 2, 1

Ciao,
Paolo
Re: Trouble with a loop [message #67675 is a reply to message #67674] Fri, 14 August 2009 06:14 Go to previous message
Allan Whiteford is currently offline  Allan Whiteford
Messages: 117
Registered: June 2006
Senior Member
David Baker wrote:
> I'm hoping someone on here maybe able to help me with a problem i'm
> having trying to construct the following type of loop
>
> FOR i=0,end DO BEGIN
> IF x GT y THEN BEGIN
> FOR j=0,end DO BEGIN
> some program statements
> ENDFOR
> end=end-1
> b=b+1
> i=i-1
> ENDIF
> ENDFOR
>
> Now the problem i'm facing is that although the i value is correctly
> changed IDL is unaware that the limits of the for loop have been
> decrease (i,e the value end doesn't appear to be updated when checking
> i against it for the for loop thus leaving me in a recurring loop.)
>
> Does anyone have any advice/ideas?
>
> Many thanks,
> David

David,

Using a variable called "end" is a really bad idea from the start, it's
a reserved word.

That aside, you want a "while" construct rather than a "for" construct:

i=0
while i++ le endvar DO BEGIN
IF x GT y THEN BEGIN
FOR j=0,endvar DO BEGIN
some program statements
ENDFOR
endvar=endvar-1
b=b+1
i=i-1
ENDIF
ENDFOR

It's also poor form and a bit rude to change your loop variable inside
of a for loop (i.e. your line saying i=i-1) although this is normally
considered ok inside a while.

I suspect you need to take a step back and ask what you're trying to do
with this code. It's hard for us to tell because we don't know what
"some program statements" are and how they relate to x and y. It looks
to me like it's almost "endvar"/"end" which should be the loop variable.

Hope this helps.

Thanks,

Allan
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: River lines out of a DEM with IDL
Next Topic: Simple PRO in a loop question

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 09:21:32 PDT 2025

Total time taken to generate the page: 0.00641 seconds