== Rhinoプログラムの作成と実行 ==

Rhinoへの質問(入力)を順に記述したものがプログラムになります。
----
== プログラム ==

コンピュータと会話するときに1つずつ質問を入力しては答を得るのではなく、いくつかまとめて質問できると便利ですね。
質問内容をファイルに記述しておき、そのファイルを読んで処理するように指示できます。
質問(処理)内容を順に記述したものを'''スクリプト'''または'''プログラム'''と呼びます。

 . {{attachment:rhino7.png}}

プログラムの作成はテキストエディタ(テラパッド)を使って行います。

 . {{attachment:editor.png}}

rei.js という名前でproディレクトリの中に保存します。(reiの部分はそのつど変わります)

プログラムの実行は Rhino との会話画面で行います。

 . {{attachment:comm3.png}}

シングルクオートの内側の rei の箇所はそのつど変わります。

上の絵のどの部分と対応しているか確認してください。

----
=== プログラムを実行する ===

プログラムを読み込むには load 命令を使います。
 {{{
JS> load( 'ex0516.js' );
 }}}
のように load( と ); の間にファイル名をシングルクオートで挟んで入力します。

 . {{attachment:load1.png}}

load命令を入力すると、指定されたファイルを読み込んで、ファイルに記述された内容(プログラム)にしたがって処理します。

プログラム内に計算の指示があれば計算が行われ、表示の指示があれば表示が行われます。

処理はプログラム内に記述された順に、1行目から順に行われます。
表示はプログラム内で指示したものだけ行われます。

プログラムに間違いがあったときには、エラーメッセージが表示されるので、プログラムを修正してからもう一度loadを行ってください。

'''例'''
 {{{
JS> load( 'sample.js' );
プログラミング入門
8
 }}}
----

=== プログラムの動作確認 ===

プログラムを作成したら、必ず、正しく実行されるか確かめなければなりません。

実行結果(コンピュータからの反応)が自分の予想した通りになっているか、そうでないかを判断してください。

予想どおりでないときは、なぜ予想とちがうのか考えましょう。

==== エラー対応 ====

会話画面でエラーが出たとき(英文のメッセージが表示される)の対応方法。

メッセージの先頭付近に <stdin> とあるときは、会話画面での入力に誤りがあるか、プログラムが保存されていないかです。
それ以外のメッセージのときは、プログラム内に誤りがあります。
----
=== ちょっと便利な使い方 ===

会話画面で '''↑'''(上向き矢印)を押すと、直前に入力したものと同じ内容が現れます。
この方法を覚えると、何度も load('filename.js'); を打たなくても済みます。

----
=== エラーメッセージ ===

1)
JS> に対して入力した命令( load命令 )に間違いがあったときは
 {{{
js: "<stdin>", line 4: uncaught JavaScript runtime exception:
 }}}
のようにエラーメッセージの先頭が "<stdin>" になります。

2)
入力時の間違いでよく現れるのは次のメッセージです。
 {{{
js: "<stdin>", line 5: Couldn't open file "filename"
 }}}
これはload命令で指定したファイルが見つかりませんというエラーです。
 . {{attachment:rhino4.png}}

3)
load命令は正しいけれども、loadしようとしたプログラムの中に文法的な誤りがあるときは、数行にわたる表示がされます。
 {{{
js: "file1.js", line 4: missing ) after argument list
js: print ( 3b );
js: ..........^
js: "file1.js", line 1: Compilation produced 1 syntax errors.
 }}}
メッセージの先頭部分には処理しようとしているファイル名が示されます。
その右にはエラーが見つかった行番号とエラー内容が表示され、
次の2行を使って、見つかった位置を示しています。
最後の行は文法的なエラーが見つかったというメッセージです。
上の3行が間違いを探す手助けになります。
 . {{attachment:rhino5.png}}


4)
文法的には正しいけれども分らない名前が現れたなどのエラーが発生したときの例です。
 {{{
js> load( 'file2.js' )
練習2
320
js: "file2.js", line 3: uncaught JavaScript runtime exception: ReferenceError: "b" is not defined.
 }}}
エラーが発生した行より前の行まではプログラムが実行され、表示の指示があれば表示も行われます。
エラーメッセージの先頭部分には処理中のファイル名が示され、その右にはエラーが見つかった行番号とエラー内容が表示されます。

3)と4)の違いに注意してください。
プログラムのどこに間違いがあるのか知るためには、エラーメッセージの中から重要な箇所(赤字で示した箇所)を見つけ出せると簡単です。

----
=== デバッグ ===

プログラムの間違いを修正することをデバッグ(虫取り)と言います。

このときには、エディタを使った編集作業と、Rhinoとの会話という2つを切り替えながら行うことになります。
どちらの作業が必要なのか、エラーメッセージや実行結果を見て判断しましょう。
----
=== 注意 ===

保存した .js 形式のファイルはダブルクリックしても開けません。

再度編集したいときは、terapadを起動してから
ファイルメニューを使って開く
ファイルをterapadの画面にdrag&dropする
のどちらかの方法で行います。