<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>The do-until Statement (GNU Octave (version 5.1.0))</title> <meta name="description" content="The do-until Statement (GNU Octave (version 5.1.0))"> <meta name="keywords" content="The do-until Statement (GNU Octave (version 5.1.0))"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> <link href="index.html#Top" rel="start" title="Top"> <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Statements.html#Statements" rel="up" title="Statements"> <link href="The-for-Statement.html#The-for-Statement" rel="next" title="The for Statement"> <link href="The-while-Statement.html#The-while-Statement" rel="prev" title="The while Statement"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} blockquote.indentedblock {margin-right: 0em} blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} blockquote.smallquotation {font-size: smaller} div.display {margin-left: 3.2em} div.example {margin-left: 3.2em} div.lisp {margin-left: 3.2em} div.smalldisplay {margin-left: 3.2em} div.smallexample {margin-left: 3.2em} div.smalllisp {margin-left: 3.2em} kbd {font-style: oblique} pre.display {font-family: inherit} pre.format {font-family: inherit} pre.menu-comment {font-family: serif} pre.menu-preformatted {font-family: serif} pre.smalldisplay {font-family: inherit; font-size: smaller} pre.smallexample {font-size: smaller} pre.smallformat {font-family: inherit; font-size: smaller} pre.smalllisp {font-size: smaller} span.nolinebreak {white-space: nowrap} span.roman {font-family: initial; font-weight: normal} span.sansserif {font-family: sans-serif; font-weight: normal} ul.no-bullet {list-style: none} --> </style> <link rel="stylesheet" type="text/css" href="octave.css"> </head> <body lang="en"> <a name="The-do_002duntil-Statement"></a> <div class="header"> <p> Next: <a href="The-for-Statement.html#The-for-Statement" accesskey="n" rel="next">The for Statement</a>, Previous: <a href="The-while-Statement.html#The-while-Statement" accesskey="p" rel="prev">The while Statement</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="The-do_002duntil-Statement-1"></a> <h3 class="section">10.4 The do-until Statement</h3> <a name="index-do_002duntil-statement"></a> <p>The <code>do-until</code> statement is similar to the <code>while</code> statement, except that it repeatedly executes a statement until a condition becomes true, and the test of the condition is at the end of the loop, so the body of the loop is always executed at least once. As with the condition in an <code>if</code> statement, the condition in a <code>do-until</code> statement is considered true if its value is nonzero, and false if its value is zero. If the value of the conditional expression in a <code>do-until</code> statement is a vector or a matrix, it is considered true only if it is non-empty and <em>all</em> of the elements are nonzero. </p> <p>Octave’s <code>do-until</code> statement looks like this: </p> <div class="example"> <pre class="example">do <var>body</var> until (<var>condition</var>) </pre></div> <p>Here <var>body</var> is a statement or list of statements that we call the <em>body</em> of the loop, and <var>condition</var> is an expression that controls how long the loop keeps running. </p> <p>This example creates a variable <code>fib</code> that contains the first ten elements of the Fibonacci sequence. </p> <div class="example"> <pre class="example">fib = ones (1, 10); i = 2; do i++; fib (i) = fib (i-1) + fib (i-2); until (i == 10) </pre></div> <p>A newline is not required between the <code>do</code> keyword and the body; but using one makes the program clearer unless the body is very simple. </p> </body> </html>