[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

"Goto line" function?

Helgitomas Gislason

3/9/2007 9:58:00 PM

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?

--
Posted via http://www.ruby-....

3 Answers

SonOfLilit

3/9/2007 10:06:00 PM

0

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.ruby...

On 3/9/07, Helgitomas Gislason <nitrohelgso@hotmail.com> wrote:
> 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?
>
> --
> Posted via http://www.ruby-....
>
>

Paul Van Delst

3/9/2007 11:36:00 PM

0

Helgitomas Gislason wrote:
> 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

--
Paul van Delst Ride lots.
CIMSS @ NOAA/NCEP/EMC Eddy Merckx

Brian Candler

3/10/2007 2:41:00 PM

0

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