
At the very lowest level, computer circuitry is made of wires, and each wire is either on or off. So the only operations that can be performed at that lowest level are those that operate on single-bit values (just ones and zeros, that is, just ons and offs). These are called logical (or Boolean) functions. (They're predicates, because their range is Booleans, but these are special in that their domain is also Booleans.) There are three Boolean functions in the Operators palette:
True
or False
) as inputs and report a new Boolean value as output. When you use Boolean functions in a program, though, the inputs will usually be expressions such as Instead of dragging a true
or false
block into the input slot of an and
, or
, or not
block, you can click the empty input slot to control a true
/false
toggle:
The and
and not
blocks work exactly the way you'd expect from the meanings of those words in English:
true
, and any other combination of inputs reports false
.or
is a little different in computer science. In English, the word "or" has two different meanings:
or
?AND,
OR, and
NOTand will work exactly the same way as they do in Snap!.
between?
will include the two boundary inputs or not.between?
to create a script that lets you write on the stage in three colors (depending on the height on the stage), using your mouse.true
if num is less than or equal to 23.
true
?
and
function can be represented as TFFF; ii-v) Answers will vary for parts ii and iii. The following table lists the 16 (part iv) possible two-input Boolean operators and their usefulness. The goal is for students to think about usefulness—not for them to accurately categorize each of the functions or even to learn the logic of each one. Unless you have a background in logic or computer science, even you (as teacher with the answer key) are likely to find some of these take a bit of thinking to wrap your mind around.
Useful? | Why? | |
---|---|---|
TTTT | no | always reports true |
TTTF | yes | equivalent to or |
TTFT | yes | equivalent to converse implication (false only when the first input is false but the second input is true; the second input being true implies the first input must be true) |
TTFF | no | reports the value of the first input regardless of the second input, so you could just use the first input as the predicate instead of building this predicate function |
TFTT | yes | equivalent to implication (false only when the first input is true but the second input is false; the first input being true implies the second input must be true) |
TFTF | no | reports the value of the second input regardless of the first input, so you could just use the second input as the predicate instead of building this predicate function |
TFFT | yes | checks whether two inputs are the same (equivalent to = and to XNOR, exclusive NOT OR) |
TFFF | yes | equivalent to and |
FTTT | yes | equivalent to NAND (that is, not (and) ) |
FTTF | yes | checks whether two inputs are the different (equivalent to not(=) and to XOR, exclusive OR) |
FTFT | no | reports the value of the opposite of the second input regardless of the first input, so you could just use the opposite of the second input as the predicate instead of building this predicate function |
FTFF | yes | equivalent to nonimplication (true only when the first input is true but the second input is false; the first input being true implies the second input must be false) |
FFTT | no | reports the value of the opposite of the first input regardless of the second input, so you could just use the opposite of the first input as the predicate instead of building this predicate function |
FFTF | yes | equivalent to converse nonimplication (true only when the first input is false but the second input is true; the second input being true implies the first input must be false) |
FFFT | yes | equivalent to NOR (that is, not(or) ) |
FFFF | no | always reports false |
true
and false
), there are only four combinations of inputs for a two-input Boolean operator. Here are the four combinations shown with the or
operator:or
, the four combinations report true
, true
, true
, and false
in that order. (Check for yourself that this is true.) So, you can represent the or
function as TTTF (using T and F as abbreviations for true
and false
). What are the four letters for the and
function? (Assume the same ordering of the inputs: TT, TF, FT, and FF as shown above with or
.) or
function) is useful, but TTTT is not useful (why not?). Which of the possible two-input Boolean operators do you think would be useful? Discuss why.