[[Lua演習]]
*制御構文2 ループ処理 [#y1eeccec]
この課ではループ、すなわち繰り返して一定の動作をおこなう処理について学習する。
**ループ処理の必要性について [#t8335c4d]
たとえば、同じ内容の文を10行にわたって表示しようとしたとき、いかのような記述はいかにも冗長である。
 function OnFrame()
 	out(0, "さばとたんかわいいよ");
 	out(1, "さばとたんかわいいよ");
 	out(2, "さばとたんかわいいよ");
 	out(3, "さばとたんかわいいよ");
 	out(4, "さばとたんかわいいよ");
 	out(5, "さばとたんかわいいよ");
 	out(6, "さばとたんかわいいよ");
 	out(7, "さばとたんかわいいよ");
 	out(8, "さばとたんかわいいよ");
 	out(9, "さばとたんかわいいよ");
 end
そこで、このような同じ動作の反復を容易にするための構文がLuaには用意されており、それを用いると以下のように
簡潔な記述が可能となる
 function OnFrame()
 	for i = 0, 9, 1 do
 		out(i, "さばとたんかわいいよ");
 	end
 end
このように同じ内容を反復して実行することをループ処理といい、Luaにはそのための構文が「for」「while」「repeat」の
3種類ある。それぞれの詳細については以下で説明する。

**for文 [#m62d9a2e]
***for文の説明 [#id9196bf]
 function OnFrame()
 	for i = 0, 9, 1 do--0, 9, 1の値は適宜いじるべし
 		out(i, "さばとたんかわいいよ");
 		--i = 100;--ダメ、ゼッタイ
 	end
 end
上の例で用いられているのがfor文である。for文は一定の回数ループを実行するのに向いている。

ループはループ変数(この場合は"i")が初期値(この場合は0)から始まり、終了値(この場合は9)以上になるまで実行される。また、ループ変数は1回ループしてfor文の最初に戻ってくるたびにstep値(この場合は1)ずつ加算される。

ループ変数はループ内部で「今は何回目のループなのか」を取得するために用いることができる。なお、ループ内部でループ変数に代入を行ってはならない。ダメ、ゼッタイ。

また、最初にfor文に到達した時点で初期値が終了値より大きい場合はfor文は一度も実行されない。
***step値の初期値 [#abb31a45]
step値は、特に指定しない、つまり"for i = 1, 9 do"と書いた場合、は1とみなされる。通常のループではこれで足りる場合も非常に多い。
***負のstep値の例外 [#m1f2cf2e]
以下ではstep値が負の場合の例外について説明する。
 function OnFrame()
 	for i = 20, 11, -1 do--適宜いじるべし
 		out(i, "さばとたん、ああさばとたん"); 
 	end
 end
step値に負の値(この場合は-1)を入れた場合、通常とは逆にループ変数が終了値以下になるまでループする。
それ以外は通常と同じである。

前:[[第2課 制御構文1>Lua講座_1_2]] 次:[[第4課 function>Lua講座_1_4]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS