Curious Conditionals
A Mu Direction
Learn It
- We've used the browser-based IDE for our Micro:bit, but it's a little nicer working in a proper application when we need to find problems with our code. We're going to use a program called Mu from this point forward. You can use this method, or the web browser version from last lesson with your Micro:bit at home.
- NOTE: You can download Mu for use at home here (All operating systems).
- Start by loading Mu from the Open drive, in this folder:
G:\Computing 2015-2016\Y7\BBC MicroBit
Learn It
- Previously, we looked at how using variables can allow our Micro:bit programs to be more flexible. We'll look today at how using
If
commands and some variables can make our programs more powerful. If
allows you to check if a particular statement is true, then carries out some instructions and then moves to the next instructions outside theIf
block.- We can also add
Elif
andElse
commands with a separate set of instructions to tell the computer what to do in different situations. The pseudocode below gives an example of anIf
block:
hungerLevel = input("From 0-10, how hungry are you? ") IF hungerLevel == 10: PRINT "Eat a proper dinner" ELIF hungerLevel > 5: PRINT "Eat a sandwich" ELIF hungerLevel > 2 : PRINT "Eat an apple" ELSE: PRINT "Wait until later" END IF PRINT "Thank you for using the food guide."
- If the user enters 10, the first
If
statement is true, so the user will be told to eat a proper dinner. The program then leaves theIf
block (Shown by writingEND IF
here) and the user is thanked for using the app. - If they'd entered 9, a sandwich is recommended, then they're thanked.
- Entering 5 would advise the user to eat an apple, then they're thanked. Why is that?
- A user who who chooses 1, -5 or 0 would be advised to wait until later, and is then thanked. This is because none of the other statements in the
If
block were true. - If you're still unsure, this video tutorial gives another example, using Scratch:
Learn It
- Let's write a program to make the Micro:bit work as a simple torch. We can write some simple pseudocode to express what we want to achieve:
WHILE True IF button A is pushed: Turn all LEDs on ELSE IF button B is pushed: Turn all LEDs off ELSE: DO NOTHING END IF END WHILE
- By using IF statements in this way, the LEDs instructions are only carried out when the appropriate button is pushed.
- Let's code it! Clear the example code,then paste this into the Mu window.
from microbit import * while True: if button_a.is_pressed(): display.show(Image.CHESSBOARD) elif button_b.is_pressed(): display.clear()
- Click the
Flash
button at the top of the window to push your program to the Micro:bit. - Did you notice that we didn't add an
else
line to match the one in our pseudocode? As we don't want to take any action if a button isn't pushed, we don't need to write any code. - Challenge: Can you remix the code above to write a happy/sad program? If the user pushes button A, the
HAPPY
image should be loaded onto the screen. If they push B,SAD
should be shown. If they push nothing, the image should change toASLEEP
.
Learn It
- Combining
If
with variables allows us to start to make more useful programs. - We could make a simple counting app to help a toddler learn their first few numbers. Starting at zero, the buttons could be used to show the digits from 0-9 o the display.
- Our pseudocode could be something like:
currentNumber=0 WHILE True: IF buttonA pushed: DECREASE currentNumber BY 1 PRINT currentNumber ELSE IF buttonB pushed: INCREASE currentNumber BY 1 PRINT currentNumber ENDIF WHILE END
Code It
- Copy this code to your Micro:bit…
from microbit import * currentNumber = 0 while True: if button_a.is_pressed(): currentNumber -= 1 display.scroll(str(currentNumber)) elif button_b.is_pressed(): currentNumber += 1 display.scroll(str(currentNumber))
- Question: Why is the
currentNumber = 0
line sat above theWhile True:
line? What would happen if it was inside the WHILE loop? - With this code working, could we improve it?
- I only want the program to show the numbers 0-9, but at the moment it'll give me negative numbers, and will count beyond 9.
- Programmers can add
If
statements inside otherif
statements (we call this nesting) to produce even more powerful programs. We just need to remember to tab in the code correctly to tell the computer which commands are in ourIf
block and which aren't. - If you're finding the concepts tricky, the video tutorial below will walk you through what you need to know:
Badge It
- Silver: Modify the code above to start at 6, and show the 6 times table forwards and backwards. Upload your code to BourneToLearn.com.
- Gold: Change the code back to a counting up and down (one at a time) program, but modify the code so that the user can't make the numbers go above 9 or below 0.
- You should be able to do this with two new lines of code. This might give you a step in the right direction:
if currentNumber >= 1:
- Platinum: Write an app to count down from 10 to 0 (without the Micro:bit needing to be touched), then show a smiley face.
- BONUS CHALLENGE: If the user pushes one of the buttons during the countdown, it should show a sad face instead. Once a button is pushed, the numbers should stop counting.