for ループ用の言語キーワード

## 呼出し手順

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

                for element = expression
                    instruction
                    ..
                    instruction
                end

                for element = expression do
                    instruction,
                    ..
                    instruction
                end

## 説明

`expression`が配列（同質か否かを問わない）の場合、`element`とする はその各列に設定される（超行列の場合、as `matrix(expression, size(expression,1), -1))`）を1つずつ.

具体例として,一定間隔の行ベクトルを作成するために コロン演算子を使用し, 典型的な for ループを作成します : `for element = n1:step:n2, ...,end`

`expression` が リストの場合, `element`はこのリストの連続するエントリを 値とします.

Scilabプログラミング言語のコード規約に基づき, 以下が推奨されます:

- 各命令を新しい行で開始する.

- 1行に複数の命令を記述しない.

- 複合命令は,複数行に分割する.

例えば, 以下のようにします:

    for i = 1:5
        disp(i);
    end

以下は推奨されません

    for i = 1:5, disp(i); end

警告: 条件文(if while for または select/case)の本体を定義するために 使用できる文字の数は,16k に制限されています.

## 例

Trivial iterations (over columns of a row vector):

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

    // By decreasing values:
    for j = 4:-1:1
        j
    end

Iterate on the columns of a matrix:

    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]

Loop on the elements of a list:

    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

Common and nested loops:

    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

## 参照

- while
- end
- do

## 履歴

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.
- The number of characters used to define the body of any conditional instruction (`if`, `while`, `for`, or `select/case`) is no more limited to 16k.

2023.0.0 The `expression` can be a hypermatrix. It is then processed by column as `matrix(expression, size(expression,1), -1)`.