Luaレッスン4.2「LuaとTI-Nspireとをうまく組み合わせる」和訳

原典:

サポート・ファイルをダウンロード

レッスン4.2「LuaとTI-Nspireとをうまく組み合わせる」

前回の最後に疑問点を3つ示しました。ここでは主に、その最初の疑問に取り組みます。TI-Nspireの変数とLuaページの変数とは連携できるのです。

このレッスンのサポート・ファイルをダウンロードし(http://compasstech.com.au/TNS_Authoring/Scripting/script_tut4.zip)、script_tut4.tnsという名前のドキュメントを開いて中身をよく見てください。これは、TI-Nspireの変数とLuaの変数との間の連携を示す、代数試験問題用の簡単なドキュメントです。line1、line2などの変数がTI-Nspire側で定義されていることに気づくでしょう。この例のようにNotesウィンドウ(スプリット画面を境界線が下すぎて隠れているかもしれません)を使ってもよいし、短いプログラムを記述してそれをNotesウィンドウに隠すという方法でも構いません。今回示した例では、単語"Multiply"や無作為に表示される試験問題などの各値がTI-Npire側で定義されています。

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

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

今回のサンプルでは、a、bという2つの乱数を生成します。ほかはほとんどすべてはquiz()という名前の短いプログラムで生成しますが、この乱数の生成についてだけは、非表示にしたNotesウィンドウで行うのが最適です。仮に乱数をほかのもっと一般的なプログラムで定義した場合は、そのプログラムが呼び出されるたびに乱数が生成されてしまいます。その場合、値を入力するなどしてページに変更を加えるたびに、試験問題が書き換えられてしまうことになります。このような事態は避けなければなりません。新規の試験問題をいつ生成するかは、プログラム制作者の側で制御したいからです。その手段として、newという名前の変数を定義します(名前は何でもよい)。そうして、サンプルに示したように、乱数計算の一部にnewを組み込みます。組み込むときの簡単な方法の一つは、newを足してnewを引くことです。こうすれば、生成される乱数の値には影響しない一方で、newが変化するたびに、a、bの値も変化します。

今回示した短いプログラムquiz()では、ほかに以下のような処理が行われます。

page 1.3では、line1:="Add"、line1:="Multiply"などのように、line1、line2、line4という各変数に何を代入するのかを定義しています。line3は、ユーザーが入力した値(解答)が代入される変数ですので、定義する必要はありません。

さらにcheckという名前の変数も定義しています。この変数は、解答(変数line3の内容)が正解の場合は1が代入され、それ以外の場合は0が代入されます。もちろん、画面の一番下に表示されるメッセージは、正解の場合と不正解の場合とで変えなければなりません。今回のサンプルでは次のような条件を使いました。まず、変数line2の内容(文字列で表現された試験問題)をexpr(line2)で数式に変えて正答を算出します。次いで、変数line3の内容(文字列で表現された解答)をexpr(line3)で数式に変えます。そうしてこの両者を比較するという条件を用いまた。

変数newおよび変数checkに代入された各値がLuaスクリプトに取り込まれ、条件の違いによって実行される処理が決定されます。これについては次回説明します。