"Goto line" function?

  • Thread starter Helgitomas Gislason
  • Start date
H

Helgitomas Gislason

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.
9. names = gets.chomp
10.
11. if names == '2'
12. puts ' '
13. puts 'Are you named two names?'
14. puts ' '
15. answer = gets.chomp
16. if answer == 'yes'
17. (the program continues)
18.
19. BUT if answer == 'no'
20. 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?
 
S

SonOfLilit

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/
 
P

Paul van Delst

Helgitomas said:
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.
9. names = gets.chomp
10.
11. if names == '2'
12. puts ' '
13. puts 'Are you named two names?'
14. puts ' '
15. answer = gets.chomp
16. if answer == 'yes'
17. (the program continues)
18.
19. BUT if answer == 'no'
20. 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
 
B

Brian Candler

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 :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,227
Latest member
Daniella65

Latest Threads

Top