差分

ナビゲーションに移動 検索に移動

ループ変数

2,980 バイト追加, 2012年11月9日 (金) 06:44
ページの作成:「ループ変数とは(英語:loop variable)とは、繰り返し処理において繰り返した回数を数えるための用いる変数のこと...」
[[ループ変数]]とは(英語:loop variable)とは、[[繰り返し処理]]において繰り返した回数を数えるための用いる[[変数]]のことである。
英語圏では[[ループカウンター]](英語:loop counter)と呼ばれることが多い。

== 変数名 i, j, k ==
ループ変数と言っても普通の[[変数]]であり、どのような[[変数名]]にしようと[[プログラマー]]の勝手だが、古くから i, j, k という文字が広く用いられている。

これは太古の時代に一大勢力を誇った[[Fortran]]では「implicit none」と記述していない場合は変数の型宣言が必要なく、その場合は変数名の頭文字で[[型]]が決定する仕様であり、[[変数名]]の頭文字が a~h および o~z で始まる[[変数]]は[[基本実数型]]、i~n で始まる[[変数]]は[[基本整数型]]となる。これを[[Fortran]]の暗黙の型宣言という。

[[Fortran]]の教科書では[[保守性]]が良くなるので implicit none は必ず使えと書いてあるが、多くの[[プログラマー]]はそんな面倒なことなど無視して暗黙の型宣言を乱用しまくった結果、[[プログラミング言語]]の枠を超えてループ変数は i, j, k, l, m, n の6文字が一大勢力を持つようなったと言われている。

なお、[[Fortran]]以外ではまったく意味のないものであり、[[フォント]]によっては i と j は非常に見分けづらいため、a でも i でも z でも好きなものを使え。そんなものはどうでもいい話である。

== 例 ==
=== C# - forループ ===
[[C Sharp|C#]]によるループ変数 i および j を使ったfor文による[[繰り返し処理]]の記述例を示す。
<source lang="csharp">
int i, j;
for (i = 0; i < 100; i++)
{
for (j = 0; j < 100; j++)
{
same_function(i, j);
}
}
</source>


上記の[[ソースコード]]は[[C Sharp|C#]]では以下のように書くこともできる。ただしこの場合はfor文は1つの[[スコープ]]となるため、ループ変数 j が何度も生成・初期化されてしまい実行速度に影響を及ぼすことがある。しかしながらそのような悪影響を気にしなくても良い場合であれば、変数宣言と利用箇所の近く、スコープ外で不用意に再利用される恐れもないため、こちらの記述方法の方が[[保守性]]は良いとしている教科書もある。なお、逆に変数の宣言が[[関数]]の途中でバラバラに乱立すると[[保守性]]が悪いとする教科書もあるので一概には言えない話である。
<source lang="csharp">
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
same_function(i, j);
}
}
</source>


== 関連項目 ==
* [[変数]]
* [[繰り返し処理]]
* [[イテレーター]]

== 参考文献 ==
{{reflist}}

{{stub}}
匿名利用者

案内メニュー