1. continue statement

------=_NextPart_000_0010_01BFDB7D.BC098A40
        charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

euphoria should have continue statement like in c to be used in =
while/for loops.

with continue statement you go to beginning of loop when you dont want =
statements after continue to be executed.
in euphoria now you must define switch, and have to check it every time =
in loop, which slows it down

example:
euphoria:
=20
while 1 do
if p then
    k+=3D1
    switch=3D1
end if

if switch=3D1 then --this has to be checked every time
    ...do actions
else
    switch=3D0
end if
end while


-------------------------------------------------------------------------=
-------


with continue statement, like in c:
=20
while 1 do
if p then
    k+=3D1
    continue --goes to top of loop
end if

...do actions
end while

because of these things i sometimes think about going back to c, if only =
compilation time wasnt so long.
i like shortcuts in C

------=_NextPart_000_0010_01BFDB7D.BC098A40
        charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-2" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3401" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>euphoria should have continue statement =
like in c=20
to be used in while/for loops.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>with continue statement you go to =
beginning of loop=20
when you dont want statements after continue to be =
executed.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>in euphoria now you must define switch, =
and have to=20
check it every time in loop, which slows it down</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>example:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>euphoria:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>while 1 do</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>if p then</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; k+=3D1</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
switch=3D1</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>end if</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>if switch=3D1 then --this has to be =
checked every=20
time</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; ...do =
actions</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>else</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
switch=3D0</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>end if</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>end while</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>
<HR>
</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>with continue statement, like in =
c:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>while 1 do</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>if p then</FONT></DIV>
<DIV>&nbsp;&nbsp;&nbsp; k+=3D1</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; continue --goes to =
top of=20
loop</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>end if</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>...do actions</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>end while</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>because of these things i sometimes think about going back to c, if =
only=20
compilation time wasnt so long.</DIV>

------=_NextPart_000_0010_01BFDB7D.BC098A40--

new topic     » topic index » view message » categorize

2. Re: continue statement

On Wed, 21 Jun 2000 12:39:26 +0200, <tone.skoda at SIOL.NET> wrote:

>euphoria should have continue statement like in c to be used in while/for
>loops.
>
>with continue statement you go to beginning of loop when you dont want
>statements after continue to be executed.
>in euphoria now you must define switch, and have to check it every time in
>loop, which slows it down
>
>example:
>euphoria:
>
>while 1 do
>if p then
>    k+=1
>    switch=1
>end if
>
>if switch=1 then --this has to be checked every time
>    ...do actions
>else
>    switch=0
>end if
>end while

I'm not sure I follow the above example.  Can switch be something other
than 1 or 0?  If p is non-zero, switch is set to 1 so we 'do actions'.  If
p is zero then switch *might not* be equal to 1 so we set it to zero.  (If
p is zero and switch is zero, then we are stuck in a loop that keeps
setting switch to zero... that part doesn't make sense.)

But I do follow what you are saying in the example below.  On the other
hand, couldn't you accomplish the same thing by doing something like:

while 1 do
  if p then
    k += 1
  else
    ...do actions
  end if
end while

Am I missing something obvious here?

  Brian

>--------------------------------------------------------------------------
>
>
>with continue statement, like in c:
>
>while 1 do
>if p then
>    k+=1
>    continue --goes to top of loop
>end if
>
>...do actions
>end while

new topic     » goto parent     » topic index » view message » categorize

3. Re: continue statement

On Wed, 21 Jun 2000 12:39:26 +0200, =?iso-8859-2?B?qWtvZGE=?=
<tone.skoda at SIOL.NET> wrote:

>euphoria should have continue statement like in c to be used in while/for
loops.
>
>with continue statement you go to beginning of loop when you dont want
statements after continue to be executed.
>in euphoria now you must define switch, and have to check it every time in
loop, which slows it down
>

I too would like this shortcut in the interpreter. I have asked for this
sort of thing before(back in November from memory). I know its a
disguised "goto" and can thus cause subtle bugs, but it can help make
otherwise deeply nested ifs more readable - which is one of the purposes of
source code. Thanks RDS for providing the "exit" statement, which is a
similar type of construct.

An example...

---
integer NextIter
constant DoWork = 0
constant SkipWork = 1
while 1 do
  NextIter = DoWork -- Reset flag.

  if action0() then exit end if
  if P then
    if Q then
      action1()
      if R then
        NextIter = SkipWork -- Set flag to skip further processing.
      end if
    else
      action2()
      NextIter = SkipWork -- Set flag to skip further processing.
    end if

    if NextIter = DoWork then -- If okay, do more processing
      action4()
    end if
  end if

  if NextIter = DoWork then -- If okay, do more processing
    action3()
  end if
end while


--- However with a "continue" or "next" statement...

while 1 do
  if action0() then exit end if
  if P then
    if Q then
      action1()
      if R then
        next -- Start next iteration
      end if
    else
      action2()
      next -- Start next iteration
    end if

    action4()
  end if

  action3()
end while

--- Of course, this is a simple example but in the real world, they can get
a lot more verbose.

-------
Cheers,
Derek

new topic     » goto parent     » topic index » view message » categorize

4. Re: continue statement

On Thu, 22 Jun 2000 05:18:50 -0400, Derek Parnell wrote:

>An example...
>
>---
>integer NextIter
>constant DoWork = 0
>constant SkipWork = 1
>while 1 do
>  NextIter = DoWork -- Reset flag.
>
>  if action0() then exit end if
>  if P then
>    if Q then
>      action1()
>      if R then
>        NextIter = SkipWork -- Set flag to skip further processing.
>      end if
>    else
>      action2()
>      NextIter = SkipWork -- Set flag to skip further processing.
>    end if
>
>    if NextIter = DoWork then -- If okay, do more processing
>      action4()
>    end if
>  end if
>
>  if NextIter = DoWork then -- If okay, do more processing
>    action3()
>  end if
>end while
>
>
>--- However with a "continue" or "next" statement...
>
>while 1 do
>  if action0() then exit end if
>  if P then
>    if Q then
>      action1()
>      if R then
>        next -- Start next iteration
>      end if
>    else
>      action2()
>      next -- Start next iteration
>    end if
>
>    action4()
>  end if
>
>  action3()
>end while
>
>--- Of course, this is a simple example but in the real world, they can get
>a lot more verbose.

I think you'd have to come up with something more complex to convince me
that this is really useful.  I think the following loop does the same thing
and I don't think it's any more or less confusing than haveing a 'next'
or 'continue':

while 1 do
  if action0() then exit end if
  if P then
    if Q then
      action1()
      if not R then
        action4()
        action3()
      end if
    else
      action2()
    end if
  end if
end while

-- Brian
-- ( playing the role of a skeptic; and I'm sure somebody will come up with
an example that will either convince me or will be so complex that I won't
want to try rewriting it. 8^)

new topic     » goto parent     » topic index » view message » categorize

5. Re: continue statement

On Thu, 22 Jun 2000 13:51:03 -0400, I wrote:

>while 1 do
>  if action0() then exit end if
>  if P then
>    if Q then
>      action1()
>      if not R then
>        action4()
>        action3()
>      end if
>    else
>      action2()
>    end if
>  end if
>end while

Ooops... make that:

while 1 do
  if action0() then exit end if
  if P then
    if Q then
      action1()
      if not R then
        action4()
        action3()
      end if
    else
      action2()
    end if
  else
    action3()
  end if
end while

-- Brian
-- (starting to see it's usefullness, mostly to avoid redundancy)

new topic     » goto parent     » topic index » view message » categorize

6. Re: continue statement

Geez, I still have an error in my conversion.  So I've convinced myself and
I'll shut up now...

-- Brian

new topic     » goto parent     » topic index » view message » categorize

7. Re: continue statement

Brian Broker wrote:

> I think you'd have to come up with
> something more complex to convince me
> that this is really useful.

I've had quite a few situations where a continue would be nice. It can be
emulated, but that results in a loss of code clarity. It's been on my wish
list for some time.

-- David Cuny

new topic     » goto parent     » topic index » view message » categorize

8. Re: continue statement

On 22 Jun 2000, at 11:03, Cuny, David@DSS wrote:

> Brian Broker wrote:
>
> > I think you'd have to come up with
> > something more complex to convince me
> > that this is really useful.
>
> I've had quite a few situations where a continue would be nice. It can be
> emulated, but that results in a loss of code clarity. It's been on my wish
> list for some time.

I still say a goto command would cure that. It's an intrinsic "exit loop",
"bypass
codeblock", "terminate process", etc.. And since it will be in the C code
generated by
the Eu-compiler, i still see no reason to not have a goto in the Eu interpreted
code
language.

Kat

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu