何度も繰り返す(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 - Giemsa All Rights Reserved.
NOTES Software.