Exercise 24: More Practice
You are getting to the end of this section. You should have enough Ruby "under your fingers" to move on to learning about how programming really works, but you should do some more practice. This exercise is longer and all about building up stamina. The next exercise will be similar. Do them, get them exactly right, and do your checks.
You'll notice I added a new thing with the last three lines in this script. The last line uses a C style of inserting variables into Ruby strings that you find in many languages. You don't have to use it, but it's good to understand what it is when you see it.
What You Should See
$ ruby ex24.rb
Let's practice everything.
You'd need to know 'bout escapes with \ that do \n newlines and \t tabs.
--------------
The lovely world
with logic so firmly planted
cannot discern
the needs of love
nor comprehend passion from intuition
and requires an explanation
where there is none.
--------------
This should be five: 5
With a starting point of: 10000
We'd have 5000000 beans, 5000 jars, and 50 crates.
We can also do that this way:
We'd have 500000 beans, 500 jars, and 5 crates.
Study Drills
- Make sure to do your checks: read it backward, read it out loud, and put comments above confusing parts.
- Break the file on purpose, then run it to see what kinds of errors you get. Make sure you can fix it.
Common Student Questions
- Why do you call the variable jelly_beans but the name beans later?
- That's part of how a function works. Remember that inside the function the variable is temporary. When you return it then it can be assigned to a variable for later. I'm just making a new variable named beans to hold the return value.
- What do you mean by reading the code backward?
- Start at the last line. Compare that line in your file to the same line in mine. Once it's exactly the same, move up to the next line. Do this until you get to the first line of the file.
- Who wrote that poem?
- I did. Not all of my poems suck.
- What is <<END called?
- That is called a "heredoc" or "here document". It is used to create a multi-line string, and you use it by starting with << and an all caps word, in this case END. Ruby then reads everything into a string until it sees another END. You can use any word, not just END, so if your string has the word "END" in it, you would use something different like <<BIGDOC and end with BIGDOC. The last thing is the string includes all the indentation.