"Goto line" function?

Ok, I’ve read through the forum but I haven’t got my answer. If a value
in my program is true, I want my program to go back to a line like this:

(Example of the program)

  1. puts ’ ’
  2. puts ’ ’
  3. puts ‘****************************’
  4. puts ‘** (Rules of the program) **’
  5. puts ‘****************************’
  6. puts ’ ’
  7. puts ‘Ohh, hello there! What are you named many names?’
  8. names = gets.chomp
  9. if names == ‘2’
  10. puts ’ ’
  11. puts ‘Are you named two names?’
  12. puts ’ ’
  13. answer = gets.chomp
  14. if answer == ‘yes’
  15. (the program continues)
    
  16. BUT if answer == ‘no’
  17.   goto.line.7 (And skip the rules, just restart it and begin
    

from line 7.)

What is the command? I know it’s not “goto.line.X” but what is it? “back
to line.X”? “goto.lineX”? What is the command?

You don’t want to do this. This is an old bad practice from BASIC days
that is thankfully almost forgotten.

You want a while loop around lines 7-20.

In other cases there are other workarounds around goto.

If you must goto, there is a hack with call//cc. I needed it once, you
probably won’t. Ever.

Aur

Check RubyMentor at http://rubymentor.rubyforge.org/

Helgitomas G. wrote:

  1. puts ’ ’
  2. (the program continues)
    
  3. BUT if answer == ‘no’
  4.   goto.line.7 (And skip the rules, just restart it and begin
    

from line 7.)

What is the command? I know it’s not “goto.line.X” but what is it? “back
to line.X”? “goto.lineX”? What is the command?

Addressing just the loop/goto issue, how about summat like:

#!/usr/bin/env ruby
done=false
until done
puts ’ ’
puts ’ ’
puts ‘
puts ‘** (Rules of the program) **’
puts '

puts ’ ’
puts ‘Ohh, hello there! What are you named many names?’
names = gets.chomp
if names == ‘2’
puts ’ ’
puts ‘Are you named two names?’
puts ’ ’
answer = gets.chomp
done = true if answer == ‘yes’
end
end
#This is where “the program continues”
puts ‘the end’

This gives me the output:

lnx:scratch : blah.rb


** (Rules of the program) **


Ohh, hello there! What are you named many names?
2

Are you named two names?

no


** (Rules of the program) **


Ohh, hello there! What are you named many names?
2

Are you named two names?

yes
the end

cheers,

paulv

don’t blame him, I’m still learning TASM and GOTO’s just like JMP

On Sat, Mar 10, 2007 at 07:06:25AM +0900, SonOfLilit wrote:

If you must goto, there is a hack with call//cc. I needed it once, you
probably won’t. Ever.

Less mind-bending is catch/throw, or ‘redo’ within a block.

If you really want to write BASIC programs in Ruby, this was discussed
several years ago in ruby-talk - search the archives :slight_smile: