10.1 The if Statement
The if
statement is Octave’s decision-making statement. There are three basic forms of an if
statement. In its simplest form, it looks like this:
if (condition) then-body endif
condition is an expression that controls what the rest of the statement will do. The then-body is executed only if condition is true.
The condition in an if
statement is considered true if its value is nonzero, and false if its value is zero. If the value of the conditional expression in an if
statement is a vector or a matrix, it is considered true only if it is non-empty and all of the elements are nonzero. The conceptually equivalent code when condition is a matrix is shown below.
if (matrix) ≡ if (all (matrix(:)))
The second form of an if statement looks like this:
if (condition) then-body else else-body endif
If condition is true, then-body is executed; otherwise, else-body is executed.
Here is an example:
if (rem (x, 2) == 0) printf ("x is even\n"); else printf ("x is odd\n"); endif
In this example, if the expression rem (x, 2) == 0
is true (that is, the value of x
is divisible by 2), then the first printf
statement is evaluated, otherwise the second printf
statement is evaluated.
The third and most general form of the if
statement allows multiple decisions to be combined in a single statement. It looks like this:
if (condition) then-body elseif (condition) elseif-body else else-body endif
Any number of elseif
clauses may appear. Each condition is tested in turn, and if one is found to be true, its corresponding body is executed. If none of the conditions are true and the else
clause is present, its body is executed. Only one else
clause may appear, and it must be the last part of the statement.
In the following example, if the first condition is true (that is, the value of x
is divisible by 2), then the first printf
statement is executed. If it is false, then the second condition is tested, and if it is true (that is, the value of x
is divisible by 3), then the second printf
statement is executed. Otherwise, the third printf
statement is performed.
if (rem (x, 2) == 0) printf ("x is even\n"); elseif (rem (x, 3) == 0) printf ("x is odd and divisible by 3\n"); else printf ("x is odd\n"); endif
Note that the elseif
keyword must not be spelled else if
, as is allowed in Fortran. If it is, the space between the else
and if
will tell Octave to treat this as a new if
statement within another if
statement’s else
clause. For example, if you write
if (c1) body-1 else if (c2) body-2 endif
Octave will expect additional input to complete the first if
statement. If you are using Octave interactively, it will continue to prompt you for additional input. If Octave is reading this input from a file, it may complain about missing or mismatched end
statements, or, if you have not used the more specific end
statements (endif
, endfor
, etc.), it may simply produce incorrect results, without producing any warning messages.
It is much easier to see the error if we rewrite the statements above like this,
if (c1) body-1 else if (c2) body-2 endif
using the indentation to show how Octave groups the statements. See Functions and Scripts.
© 1996–2020 John W. Eaton
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://octave.org/doc/v5.2.0/The-if-Statement.html