From: JB Date: 2006-04-01T10:03:46+09:00 Subject: Re: Learn to Program, by Chris Pine Dave wrote: >JB wrote: >> I too wish the author had put examples, say on some pages in the back or >> something. >But if you ask this group, you can get interactive answers! > >Let's start again with that one. We need a loop counting down from 99. So >first, we need a counter. > >beer = 99 > >Now, we need to count it down. > >beer = beer - 1 > >But we need to do that repeatedly - it goes in a loop. > >beer = 99 >while (something to end the loop?) > beer = beer - 1 >end > >How long should we keep looping? We don't want to go past zero. In other >words, we loop while our counter is zero or more. > >beer = 99 >while beer >= 0 > beer = beer - 1 >end > >OK, now we've got the basic structure of the program - one loop, beer starts >at 99, and decreases until it gets to 0. But there's no output yet. > >See how you go putting some flesh on that skeleton, JB - post back when >you're done. Hi Dave, Okay, here's what I got, and it works too, heh. The 'if' had to be in there, or else it kept ending with negative numbers (usually -2). This way is as good as Bill's, but a lot shorter (not putting you down or anything Bill!). beer = 99 while beer >= 0 beer = beer - 1 if (beer - 1) >= 0 puts beer.to_s + ' ' 'bottles of beer on the wall,' + beer.to_s + ' bottles of beer,' + 'take one down, pass it around,' + (beer - 1).to_s + ' ' + 'bottles of beer on the wall!' end end Now, to clean it up even more...when it gets down to '1 bottle', I don't want it to say '1 bottles...' (plural). How would I do this? I tried with an 'else' in there, but for some reason I either made it an infinite loop or it kept getting the negative numbers all over again. I tried with an 'else (beer - 1) == 1' (no quotes of course and that didn't work either. I do appreciate all the help you guys are giving, and yes, the interactive way will make me work a little harder too to get things right, plus I'm the kind who *needs* that kind of help or I fail miserably and give up, heh.