60 lines
3.5 KiB
Markdown
60 lines
3.5 KiB
Markdown
# blocks - loops
|
||
|
||
An introduction to Loops for the Block Editor. #docs
|
||
|
||
We may want to handle the user’s input multiple times or remain waiting for their input for a long time. We use loops to make sure that our code runs multiple times. These can be found in the **Loops** drawer.
|
||
|
||
### Forever loops
|
||
|
||
In the Variables tutorial we utilised a forever loop to create a counter:
|
||
|
||
![](/static/mb/blocks/lessons/blocks-conditions-2.png)
|
||
|
||
This allows our BBC micro:bit to wait for the user to do something forever, for example wait for the user to press the correct button as the example above shows. If you were creating a quiz, you may want to loop forever until the user presses the correct button or answers the question.
|
||
|
||
### Repeat Loops
|
||
|
||
Repeat loops allow code to happen a certain amount of times. You may want to create a quiz that only gives the user a few tries to get the correct answer, for example. The number can be changed to facilitate your code.
|
||
|
||
![](/static/mb/blocks/lessons/loops-0.png)
|
||
|
||
The code above will scroll the message, “Hello world” three times.
|
||
|
||
### While & Until loops
|
||
|
||
The ‘repeat while’ loop allows you to continue looping some code until a condition is met. The empty socket next to the while loop allows you to connect some Logic and construct a statement.
|
||
|
||
![](/static/mb/blocks/lessons/loops-1.png)
|
||
|
||
The code above will scroll the message, “Press it!”, while the user hasn’t pressed the button.
|
||
|
||
* Drag a `set item` block from the **Variables** drawer. Click the **down arrow** and click **New Variable**, and type "pressed". Drag a `0` block from **Maths** to set the variable **pressed** to 0.
|
||
* Drag a `repeat while` block from the **Loops** drawer and attach an `=` block from the **Logic** drawer. Drag `item` from the **Variables** drawer and click the **down arrow**, select ‘pressed’. Drag a `0` block from Maths and connect it to the other side of the equals. This will carry out the code until ‘pressed’ does not equal 0.
|
||
* Add a `show string` block from the **Basic** drawer and change the message to "Press it!"
|
||
* Add an `if` block from the **Logic** drawer, connect a `button pressed` block from the **Input** drawer, and add text from the **Basic** drawer. Change this to A to show we are waiting for button A.
|
||
* Inside the ‘do’ part of the if statement, add a `set` block from the Variables drawer, click the **down arrow** to change it to **pressed** and drag a `1` from the Maths drawer
|
||
* Lastly underneath the while loop, add another `show string` block and fill in the gaps.
|
||
|
||
Test the code above on actual hardware or on the simulator window.
|
||
|
||
We can also change the code in subtle ways to have a completely different effect:
|
||
|
||
![](/static/mb/blocks/lessons/loops-2.png)
|
||
|
||
This time we have to press the button three times to leave the while loop.
|
||
|
||
## Tip
|
||
|
||
You can press the arrow next to a word in a block to change it. For example, you can change Math functions or change a Logic statement.
|
||
|
||
### Count or for loops
|
||
|
||
A count loop allows you to loop a certain amount of times and to change a variable as you do so. For example, we can create a simple counting program:
|
||
|
||
![](/static/mb/blocks/lessons/loops-3.png)
|
||
|
||
The count loop will repeat a certain amount of times whilst changing a variable. You can click the arrow next to **i** to replace it with any of your own variables. So this program will display numbers 1 to 10.
|
||
|
||
This loop allows you to repeat code for the amount of times you want to without worrying about manually changing variables. You could use this for a counting program or a timer.
|
||
|