Table Of Contents

Previous topic

16. Finding the right spot

Next topic

18. Hurdles yet again!

This Page

17. Listen to me ... or else ....

While learning how to program may be fun, you should not spend all your time in front of the computer. if it rains, keep reading, otherwise, go outside and play! (Yes, even you grandpa!)

17.1. Two choices...

Let’s rewrite the sentence that starts with if above.:

if it rains,
    keep reading,
otherwise,
    go outside and play

If this were Javascript, we might have written it like this instead:

if ( it_rains() ) {
    keep_reading();
} else {
    go_outside_and_play();
}

Yes, Javascript includes the possibility of more than one choice with the keyword else. Let’s use it with another example. Reeborg can see if there’s a wall right in front him. Consider world Around 1. You will use a new condition, front_is_clear() which Reeborg uses to determine if there’s a wall in front of him or not, together with the if/else pair to write a program that will guide Reeborg around the world. Something like the following:

function move_or_turn () {
    if ( front_is_clear() ) {
        // something
    } else {
        // something else
    }
}

repeat(move_or_turn, 40);

Try it!

Write a program using the code above so that Reeborg goes around world Around 1. After you are done, can you modify the program (by adding one line) so that Reeborg deposits a token at each corner?

17.2. How to think about if/else

We have seen how functions and if statements could be thought of as being (sometimes) equivalent to inserting a code block; the exception was when the condition of the if statement was false, in which case we ignored the code block which is equivalent to deleting it. if/else statements can be thought as inserting one or the other code block. Thus:

move();
if ( true ) {
    turn_right();
} else {
    turn_left();
}
move();

is equivalent to:

move();
turn_right();
move();

whereas:

move();
if ( false ) {
    turn_right();
} else {
    turn_left();
}
move();

is equivalent to:

move();
turn_left();
move();