Re[4]: Return from nested subroutines (still goto discussion)

new topic     » topic index » view thread      » older message » newer message

Ya,  this  is  what  I mean by decreasing performance. Having to check
return  value  for  each  iteration  (even when the return value is 0)
would consume maybe about 10% of the time.

How  about  using  threads?  I  never  program  in  threads, but is it
possible  to  run  r()  in  seperate  thread  then  kill  the  thread
immediately when the "success" is printed.

Kat wrote:
G> Jumping into/out of proceedures has never been on my wish list, quite the
G> contrary.

GOTO  never  been  necessary for me except for exiting the stack :P
-- without decreasing performance



G> Does this work? I got x = 5 and y = 3. The trick is to use functions
G> and pass down a 'success' value, like here I use 1 for success, 0 for
G> failure. Whenever there is a success (or 1) I exit the current loop
G> and/or return. I've actually gotten used to this style of coding and I
G> prefer it over goto. This just seems more logical that jumping around
G> code all willy-nilly.

G> }}}
<eucode>
G> sequence d
G>     d = {0,0,0,0,0}

G> function sum( sequence x )
G> -- calculate the sum of
G> -- all values in x
G> atom val
G>     val = 0
G>     for i = 1 to length(x) do
G>         val += x[i]
G>     end for
G>     return val
G> end function

G> function r(integer x, integer y)
G>     d[x] = y
G>     if x = 5 then
G>         if sum(d) = 10 then
G>             printf(1, "x = %d\ny = %d\n", {x,y})
G>             puts(1, "success\n")
G>             return 1
G>         end if
G>     else
G>         for i = 0 to 3 do
G>             if r(x+1, i) then
G>                 return 1
G>             end if
G>         end for
G>     end if

G>     return 0
G> end function

G> procedure main()
G>     for i = 0 to 3 do
G>         if r(1, i) then
G>             exit
G>         end if
G>     end for

G>     puts(1, "program end\n")
G> end procedure

G> main()
G> </eucode>
{{{

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu