for palavra-chave de linguagem para laços ("loops") (significa "para...")

## Seqüência de Chamamento

                for variable = expression, instruction ; .. ; instruction; end

                for variable = expression
                    instruction
                    ..
                    instruction
                end

                for variable = expression do
                    instruction,
                    ..
                    instruction
                end

## Descrição

Se `expression` for um array (homogêneo ou não), `variable` é definido para cada uma de suas colunas (para uma hipermatriz, como em `matrix(expression, size(expression ,1), -1))`), um por um.

Um caso particular utiliza o operador colon para criar vetores linhas regularmente espaçados, e remonta a formas de laço "for" tradicionais : `for variable = n1:step:n2, ..., end`

Se `expression` é uma lista, `variable` toma como valores as entradas sucessivas da lista.

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 16 kB.

## Exemplos

Iterações triviais (sobre colunas de um vetor linha):

    for i = [2 4 5]
        factorial(i)
    end

    // Iterações sobre valores decrescentes:
    for j = 4:-1:1
        j
    end

Laço "decrescente" :

    for j = 4:-1:1
        j
    end

Laço implícito sobre as colunas de uma matriz :

    M = [1 2 ; 3 4 ; 5 6]'
    for  c = M, c, end

    -> 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.

Iterate on the columns of a cells array:

    C = {%pi, "This is πι" ; %z^2, %t}
    for  c = C, c, end

    --> C = {%pi, "This is πι" ; %z^2, %t}
     C  =
      [1x1 constant  ]  [1x1 string ]
      [1x1 polynomial]  [1x1 boolean]

    --> for  c = C, c, end
     c  =
      [1x1 constant  ]
      [1x1 polynomial]

     c  =
      [1x1 string ]
      [1x1 boolean]

Laço em listas de entradas :

    for l = list([1 2;3 4], (1+%z)^3, 'example', [%F %T]); l, end

    --> 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

Lacetes iterativos comum :

    // 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

    for v = a, write(%io(2),v), end
    for j = 1:n, v = a(:,j), write(%io(2),v), end

## Ver Também

- while
- end
- do

## Histórico

6.0.0 The for `expression` can now be a vector of graphic handles. `for` is now protected: Assignments like `for=1` are no longer possible.
2023.0.0 The `expression` can be a hypermatrix. It is then processed by column as `matrix(expression, size(expression,1), -1)`.