If () Then
If () then
Category Control
Type C

The If () Then block is a Control block and a C block. The block checks its boolean condition. If the condition is true, the blocks held inside it will run, and then the script involved will continue. If the condition is false, the code inside the block will be ignored and the script will move on (unlike in the If () Then, Else block). The condition is only checked once; if the condition turns to false while the script inside the block is running, it will keep running until it has finished.

Before Scratch 2.0, this block was named If ().

Example Uses

The most basic uncertainty in programming is checking conditions. This block is Scratch's main way of doing that; it is therefore used in nearly all projects. Some common uses include:

  • Comparing values
if <(answer) = [5]> then
 say [Correct!]
end
  • Checking if input is given
if <<mouse down?> and <(amount) = [1]>> then
 stamp
end
  • Controlling objects
if <key [space v] pressed?> then
 broadcast [Jump v]
end
  • Making sure a list contains a specific item
if <[list v] contains [1]> then
 stop [all v]
end

Workaround

Main article: List of Block Workarounds

This block can be replicated with the following code:

if <. . .::grey> then
. . .
else
//Leave empty.
end

Another workaround is this:

. . .
broadcast [if statement v] and wait
. . .

when I receive [if statement v]
repeat until <. . .::grey>
stop [this script v]
end
. . .

Common Issue

Some users are confused as to why a script does not work when using the block. One of the most common misconceptions about it is that it repeatedly checks for a condition,[1][2] so some users do not understand why a script isn't working with only the if block. To make it repeatedly check a condition, it simply needs to be put in a forever loop or another kind of repetition.

Note Note: The repeat until and repeat blocks can also be used to make a condition repeat, but only for a finite amount of time.

References

  1. http://scratch.mit.edu/discuss/topic/14843/
  2. http://scratch.mit.edu/discuss/topic/26823/?page=1#post-237085

See Also