Rhinoの反応

演習

Rhino処理系に計算式を入力すると、計算をさせることができます。 実験してみましょう。

その結果

予想通りの結果が表示されたもの

の他に予想と違って

１）計算が間違っていると思われるもの

２）何らかのメッセージが表示されるもの

の場合があったと思います。

結果が予想通りでなかったものについて、理由を考えましょう。 できるだけたくさんの種類を見つけなさい。

Rhinoに指示を与える

JS>

の状態でコンピュータに指示を与えると、指示に対応して何か反応があります。 正しい指示を与えると、正しい反応があるでしょう。

指示内容はキーボードで入力し最後にEnterキーを押します。

Rhinoの反応

JS> に入力したときの反応を調べました。 2+3 や 5*8 などと入力すると、計算した結果が表示されました。 他にもいろいろな反応がありました。

いろいろな計算式を入力して確かめたと思います。 XやYを使った数式の変形はできませんでした。 電卓や算盤を思い浮かべた人は、何桁まで計算できるのかを確かめたのではないでしょうか。

計算結果が正しく表示された場合の他に、次のような反応があったでしょう。

反応が無い

メッセージが表示される

数の計算

計算式を入力すると、それを計算して結果を表示してくれます。 例えば

js> 2+35

のようになります。

数の書き方は普通の通りです。

数字を並べて書くと１０進数になります。

小数や負の数の書き方も普段どおりです。

四則演算（ ＋ － × ÷ ）は順に + - * / で表します。

掛け算の記号は * です。２掛ける３は 2*3 と書きます。

割り算は / で表します。１２割る４は 12/4 と書きます。

括弧は（）を使います。

大括弧、中括弧が必要なときも（）を使います。

(1*(2+3))/4 のように（）が何重になってもよい。ただし括弧の対応は正しくなっていること。

演算記号( + - * / )や括弧の前後に空白をはさんでもよい。

括弧の前後の * は省略できません。

(1+2)(3-4) と書くとエラーになります。

(1+2)*(3-4) と書きます。

反応が無いときの対応方法

JS>

に対して入力を行いEnter キーを押すと、何らかの反応ののち再び

JS>

の表示になるはずですが、入力内容によっては何の表示もされなくて、入力が続けて行える状態になることがあります。

JS> 2+

式の途中でEnterを押してしまったときなどに起こります。 こんなときは「; (セミコロン)」を押しEnterを押してください。 「 ; 」は命令の区切りを表します。

エラーメッセージが表示される

英文のメッセージが２行程度表示されたときは、ほとんどがエラーメッセージです。 どこに間違いがあったのか見つけられるようになりましょう。

最も頻繁に現れるのは次の２つでしょう。

１） syntax error

文法的に間違っているときに出るメッセージです。

Compilatiton produced 1 syntax errors.

のような表示も同様です。

２） ReferenceError

分らない言葉が出てきたというメッセージです。

"<stdin>", line 9: uncaught JavaScript runtime exception: ReferenceError: "x" is not defined.

のように表示されます。

計算結果が間違っている

１）割り切れない

10/3 はもちろん割り切れませんね。

小数で書こうとすると3が無限に続くことになります。 3.3333333....

コンピュータは ... なんて表示はしないで、どこかで省略して

3.3333333333333335

のように表示します。

最後の桁の値がおかしいのは２）で。

２）有効桁数を超えた

コンピュータでは小さな数や大きな数を同じように扱うため、浮動小数点という考え方で数を表現しています。

浮動小数点の数では正しく計算できる桁数が制限されます。

大きな数の計算を行ったときには、決まった桁数分についてのおよその値になります。

JS> 1234567890123456789 + 11234567890123456800

この例では上から１７桁分しか正しく計算されていません。

Rhino の表示方法

すごく大きな数や小さな小数については、次のような表示がされます。

１） e を使った表示

0.1234e+25 や 0.987e-15 のように間にeをはさんだ表示になることがあります。

eの後ろにある数は小数点の位置がどれだけずれているかを表しています。

１番目の例は小数点の位置を右に２５桁ずらした 1234000000000000000000000という値を表しています。

２番目の例は小数点の位置を左に１５桁ずらした 0.000000000000000987という値を表しています。

２）無限大

ECMAscriptでは無限大をinfinityで表します。

JS> 5 / 0Infinity

０で割ったときの答として現れます。

負の無限大は -Infinity です。

３）NaN

数のようでもあるし数ではない不思議な値です。

Not a Number の略です。

０を０で割ったり、無限大で割ったりしたときに現れます。

四則演算以外の演算

6^2 や 3~8 や 7! や 6&4 のような式を入力してみた人もいました。 でも予想どおりには計算できなかったようです。

数の演算で普通に使えるのは四則演算だけです。 ^ ~ & ! は論理演算（ビット演算）のための記号として使われます。

８進数、１６進数

先頭に０をつけると８進数として解釈されます。

JS> 012 + 313

012は１０進の十二ではなく８進数で、８の位が１、１の位が２ですから、１０進での値は１０です。 これに３を加えると答は１３になります。

１６進数を入力するときには先頭に0xをつけ、0x7fのように書きます。