Re: How to change the increment of FOR loop? [message #65660 is a reply to message #65589] |
Fri, 13 March 2009 03:31  |
Foldy Lajos
Messages: 268 Registered: October 2001
|
Senior Member |
|
|
On Thu, 12 Mar 2009, Allan Whiteford wrote:
> FĂ–LDY Lajos wrote:
>>
>> On Wed, 11 Mar 2009, Hu wrote:
>>
>>> Hi, there
>>> I got a question relating to the variational increment of FOR
>>> Statement. I used the code like this:
>>> ; ;; begin
>>> increment =20
>>> FOR j = 0, N-1, increment DO BEGIN
>>> IF a gt 0 THEN BEGIN
>>> ;......
>>> increment=10
>>> ENDIF ELSE BEGIN
>>> ;......
>>> increment=12
>>> ENDELSE
>>> ENDFOR
>>> ;; end
>>>
>>> But the increment have not changed according to IF... ELSE ...
>>> statement..
>>> What I want is to change the increment according to different
>>> conditions. that is, if variable a is greater than 0, the increment of
>>> the FOR loop will be 10 , not its default value 20.....
>>>
>>> Is there any solution to this problem?
>>
>>
>> increment is evaluated only once, before the loop starts (and it is copied
>> to a temporary variable you can not reach). You have to create a loop
>> manually:
>>
>> j=0
>> increment=20
>> while 1 do begin
>>
>> IF a gt 0 THEN BEGIN
>> ;......
>> increment=10
>> ENDIF ELSE BEGIN
>> ;......
>> increment=12
>> ENDELSE
>>
>> j=j+increment
>> if j ge n then break
>>
>> endwhile
>>
>>
>> regards,
>> lajos
>
> Although probably something like:
>
> j=0
> increment=20
> while ((j+=increment) lt n) do begin
>
> IF a gt 0 THEN BEGIN
> ;......
> increment=10
> ENDIF ELSE BEGIN
> ;......
> increment=12
> ENDELSE
>
> endwhile
>
> is easier to recognise as a "loop" from the point of view of understanding
> the code later for maintenance.
It is not the same loop :-) j starts from increment insted of 0. In this
form you should use j=-increment.
regards,
lajos
|
|
|