<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) - INRIA
 * Copyright (C) 2018 - Samuel GOUGEON
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
        xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
        xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
        xmlns:scilab="http://www.scilab.org" xml:id="for" xml:lang="pt">
    <refnamediv>
        <refname>for</refname>
        <refpurpose>palavra-chave de linguagem para laços ("loops") (significa
            "para...")
        </refpurpose>
    </refnamediv>
    <refsection>
        <title>Descrição</title>
        <para>
            Usado para definir laços ("loops"). sua sintaxe é: <literal> for
                variável=expressão ,instrução, ... ,instrução,end
            </literal>
        </para>
        <para>
            <literal> for variável= expressão do instrução, ...
                ,instrução,end
            </literal>
        </para>
        <para>
            Se <literal>expressão</literal> é uma matriz ou um vetor linha,
            <literal>variável</literal> toma como valores os valores de cada coluna da
            matriz.
        </para>
        <para>
            Um caso particular utiliza o operador <link linkend="colon">colon</link> para criar vetores linhas regularmente
            espaçados, e remonta a formas de laço "for" tradicionais : <literal>for
                variable=n1:step:n2, ...,end
            </literal>
        </para>
        <para>
            Se <literal>expressão </literal>é uma lista,
            <literal>variável</literal> toma como valores as entradas sucessivas da
            lista.
        </para>
        <para>Aviso: o número de caracteres usados para definir o corpo de
            qualquer instrução condicional (if, while, for ou select/case) deve ser
            limitado a 16k.
        </para>
    </refsection>
    <refsection>
        <title>Exemplos</title>
        <para>Lacetes iterativos comum :</para>
        <programlisting role="example"><![CDATA[
// laços "for" tradicionais
n=5;
for i = 1:n
    for j = 1:n
        a(i,j) = 1/(i+j-1);
    end;
end
for j = 2:n-1
    a(j,j) = j;
end;
a
]]></programlisting>
        <para>Laço "decrescente" :</para>
        <programlisting role="example"><![CDATA[
for j = 4:-1:1
    j
end
 ]]></programlisting>
        <para>Laço implícito sobre as colunas de uma linha ou de uma matriz :</para>
        <programlisting role="example"><![CDATA[
M = [1 2 ; 3 4 ; 5 6]'
for  c = M, c, end
 ]]></programlisting>
    <screen><![CDATA[
-> M = [1 2 ; 3 4 ; 5 6]'
 M  =
   1.   3.   5.
   2.   4.   6.

--> for  c = M, c, end
 c  =
   1.
   2.

 c  =
   3.
   4.

 c  =
   5.
   6.
]]></screen>
        <programlisting role="example"><![CDATA[
for v = a, write(%io(2),v), end
for j = 1:n, v = a(:,j), write(%io(2),v), end
 ]]></programlisting>
        <para>Laço em listas de entradas :</para>
        <programlisting role="example"><![CDATA[
for l = list([1 2;3 4], (1+%z)^3, 'example', [%F %T]); l, end
 ]]></programlisting>
    <screen><![CDATA[
--> for l = list([1 2;3 4], (1+%z)^3, 'example', [%F %T]); l, end
 l  =
   1.   2.
   3.   4.

 l  =
            2   3
   1 +3z +3z  +z

 l  =
 example

 l  =
  F T
]]></screen>
    </refsection>
    <refsection role="see also">
        <title>Ver Também</title>
        <simplelist type="inline">
            <member>
                <link linkend="while">while</link>
            </member>
            <member>
                <link linkend="end">end</link>
            </member>
            <member>
                <link linkend="do">do</link>
            </member>
        </simplelist>
    </refsection>
    <refsection role="history">
        <title>Histórico</title>
        <revhistory>
            <revision>
                <revnumber>6.0.0</revnumber>
                <revdescription>
                    The for <literal>expression</literal> can now be a vector of graphic handles.
                    <literal>for</literal> is now protected:
                    Assignments like <literal>for=1</literal> are no longer possible.
                </revdescription>
            </revision>
        </revhistory>
    </refsection>
</refentry>
