何度も繰り返す(4) 最後に、foreachという制御構文について説明します。 このforeachは、他の制御構文と違い、回数や条件を指定するループ命令ではありません。 リストを反復するという特殊な繰り返しをします。 foreach文 foreach文は、配列の要素の数だけ処理を繰り返します。 perlなどのプログラム言語で取り入れられている構文で、配列やハッシュとの相性は抜群です。
foreach分
    1
    2
    3
    4
    5
    6
    7
    Array = [53,65,324,867,23,87,34];
    x = 0;

    foreach(Array;v)
      Inc(x,v);

    Mes("Arrayの総和は{x}です。");
こんなに簡単に総和が求まります。 上の例のArrayは「リスト変数」と呼び、配列を指定します。 vはリスト変数の要素が切り取られ代入される変数です。 上の例ではvには「53」、「65」...と順番に代入され、「34」が代入されるとループが終了します。 for文を使って書き換えると以下のようになります。
for文を使った書き換え
    1
    2
    3
    4
    5
    6
    7
    8
    Array = [53,65,324,867,23,87,34];
    x = 0;

    c = Count(Array); //要素数を求める
    for(i = 0;i < Count;Inc(i))
      Inc(x,Array[i]);

    Mes("Arrayの総和は{x}です。");
このようになります。foreach文ではリスト変数から要素を抜き出してループしていますが、for文では手動で要素数を取得し、配列の要素も手動で参照します。 foreach文は、ハッシュの操作をするのにも便利な制御構文です。 以下の例を見てください。
集計
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    List = "Spinel
    Frontier
    Delphi
    Spinel
    Spinel
    Delphi";

    foreach(List;v){
      if(TypeOf(Point[v]) != "number")
        Point[v] = 0;
      Inc(Point[v]);
    }

    Mes(Point);
実行してみてください。 このプログラムは、リストにある名前の票を集計するプログラムです。 ハッシュと組み合わせて使うだけで、こんなに簡単に便利なプログラムができてしまいます。 ちなみに、9行目でTypeOfを使っているのは、変数が数値でない場合に処理がうまく行われないためです。 数値でない場合は、新しく0を設定して計算を続けます。

前へ / index / 次へ
プログラム言語「Spinel」
Copyright © 2005 - gabyou All Rights Reserved.
NOTES Software.