aboutsummaryrefslogtreecommitdiffstats
path: root/source/lang/else.rst
diff options
context:
space:
mode:
Diffstat (limited to 'source/lang/else.rst')
-rw-r--r--source/lang/else.rst54
1 files changed, 54 insertions, 0 deletions
diff --git a/source/lang/else.rst b/source/lang/else.rst
new file mode 100644
index 0000000..863f21b
--- /dev/null
+++ b/source/lang/else.rst
@@ -0,0 +1,54 @@
+.. highlight:: cpp
+
+.. _lang-else:
+
+if/else
+=======
+
+``if``/\ ``else`` allows greater control over the flow of code than
+the basic :ref:`if <lang-if>` statement, by allowing multiple tests
+to be grouped together. For example, an :ref:`analog input
+<lang-analogread>` could be tested, with one action taken if the
+input was less than 500, and another action taken if the input was 500
+or greater. The code would look like this::
+
+ if (pinFiveInput < 500) {
+ // action A
+ } else {
+ // action B
+ }
+
+``else`` can precede another ``if`` test, so that multiple, mutually
+exclusive tests can be run at the same time.
+
+Each test will proceed to the next one until a true test is
+encountered. When a true test is found, its associated block of code
+is run, and the program then skips to the line following the entire
+if/else construction. If no test proves to be true, the default
+``else`` block is executed, if one is present, and sets the default
+behavior.
+
+
+Note that an ``else if`` block may be used with or without a
+terminating ``else`` block, and vice-versa. An unlimited number of
+such ``else if`` branches is allowed. Here is a code example::
+
+ if (pinFiveInput < 500) {
+ // do Thing A
+ } else if (pinFiveInput >= 1000) {
+ // do Thing B
+ } else {
+ // do Thing C
+ }
+
+Another way to express branching, mutually exclusive tests, is with a
+:ref:`switch/case <lang-switchcase>` statement.
+
+See Also
+--------
+
+- :ref:`if <lang-if>`
+- :ref:`switch/case <lang-switchcase>`
+
+
+.. include:: cc-attribution.txt