Luaレッスン2.2「Luaのforループ」和訳

原典:

http://compasstech.com.au/TNS_Authoring/Scripting/script_tut2.html

レッスン2.2:Luaのforループ

標準的なfor..end構造(TI-NspireのFor.. EndFor構造)についてある程度知っているという前提で説明を進めます。Luaの場合、各構造の末尾はEndForでもEndIfでもなく単にendです。

TI-Nspireのループ

For k, 1, 10

temp := k* (k+1)

EndFor

Luaのループ

for k = 1, 10 do

temp = k* (k+1)

end

どちらの場合も、変数tempは最後に110という同じ結果になります。Luaの構文はTI-Nspireに似ています。Luafor k = from, to [,steps] doという構文です。TI-Nspireの構文はFor k, from, to [,steps] です。TI-Nspireとの違いに注意してください。=、do、endというところが違っています。また、すべて小文字でなければならないという点も違います。どちらの構文もステップ・サイズは指定できます。繰り返しますが、Luaではすべて小文字のコマンドを使います。

下の実行例では、k = 1からk = 10まで実行して10行分の生成と配置とを行っています。こうした構造を使えば、いとも簡単に何行でも表示できます(あくまで合理的な範囲内で、ですが)。

前回のレッスンの簡単な例で学びましたので、各コマンド・ラインの意味はわかるでしょう。フォント、色、文字列幅、文字列高さを定義するコマンド・ライン、文字列を表示するコマンド・ラインが並んでいます。今回はさらに変数tableの各行を作成するコマンド・ラインを追加します。ここではtable[k]という構文で変数tableのk番目の要素を参照します。つまりtable[1]が最初の行や列になるわけです。これはTI-Nspireでリストの要素を定義するのとまったく同じ方法です。

 -------------------------------------------------------------------

(訳註)今回の実行例:

table[k] = "Line #"..kの“..”は文字列を連結する演算子

h*k/(linecount + 1)の意味:

たとえば全部で5行の文字列を縦方向に均等に並べる場合は、縦方向を6分割するわけであるから、(行数の変数linecountに1を加算した数)で(ウィンドウの縦方向の長さであるh)を割って、行番号に応じて順番にkを乗じている。

f:id:ti-nspire:20140919091205j:plain

f:id:ti-nspire:20140919091251j:plain