Rhinoの反応
演習
Rhino処理系に計算式を入力すると、計算をさせることができます。 実験してみましょう。
その結果
- 予想通りの結果が表示されたもの
の他に予想と違って
- 1)計算が間違っていると思われるもの
- 2)何らかのメッセージが表示されるもの
の場合があったと思います。
結果が予想通りでなかったものについて、理由を考えましょう。 できるだけたくさんの種類を見つけなさい。
Rhinoに指示を与える
JS>
の状態でコンピュータに指示を与えると、指示に対応して何か反応があります。 正しい指示を与えると、正しい反応があるでしょう。
指示内容はキーボードで入力し最後にEnterキーを押します。
Rhinoの反応
JS> に入力したときの反応を調べました。 2+3 や 5*8 などと入力すると、計算した結果が表示されました。 他にもいろいろな反応がありました。
いろいろな計算式を入力して確かめたと思います。 XやYを使った数式の変形はできませんでした。 電卓や算盤を思い浮かべた人は、何桁まで計算できるのかを確かめたのではないでしょうか。
計算結果が正しく表示された場合の他に、次のような反応があったでしょう。
- 反応が無い
- メッセージが表示される
数の計算
計算式を入力すると、それを計算して結果を表示してくれます。 例えば
js> 2+3 5
のようになります。
数の書き方は普通の通りです。
- 数字を並べて書くと10進数になります。
- 小数や負の数の書き方も普段どおりです。
四則演算( + - × ÷ )は順に + - * / で表します。
- 掛け算の記号は * です。2掛ける3は 2*3 と書きます。
- 割り算は / で表します。12割る4は 12/4 と書きます。
括弧は()を使います。
- 大括弧、中括弧が必要なときも()を使います。
- (1*(2+3))/4 のように()が何重になってもよい。ただし括弧の対応は正しくなっていること。
演算記号( + - * / )や括弧の前後に空白をはさんでもよい。
括弧の前後の * は省略できません。
- (1+2)(3-4) と書くとエラーになります。
- (1+2)*(3-4) と書きます。
反応が無いときの対応方法
JS>
に対して入力を行いEnter キーを押すと、何らかの反応ののち再び
JS>
の表示になるはずですが、入力内容によっては何の表示もされなくて、入力が続けて行える状態になることがあります。
JS> 2+
式の途中でEnterを押してしまったときなどに起こります。 こんなときは「 ; (セミコロン)」を押しEnterを押してください。 「 ; 」は命令の区切りを表します。
エラーメッセージが表示される
英文のメッセージが2行程度表示されたときは、ほとんどがエラーメッセージです。 どこに間違いがあったのか見つけられるようになりましょう。
最も頻繁に現れるのは次の2つでしょう。
1) syntax error
- 文法的に間違っているときに出るメッセージです。
- Compilatiton produced 1 syntax errors.
- のような表示も同様です。
2) ReferenceError
- 分らない言葉が出てきたというメッセージです。
"<stdin>", line 9: uncaught JavaScript runtime exception: ReferenceError: "x" is not defined.
- のように表示されます。
計算結果が間違っている
1)割り切れない
- 10/3 はもちろん割り切れませんね。
- 小数で書こうとすると3が無限に続くことになります。 3.3333333....
- コンピュータは ... なんて表示はしないで、どこかで省略して
- 3.3333333333333335
- のように表示します。
- 最後の桁の値がおかしいのは2)で。
2)有効桁数を超えた
- コンピュータでは小さな数や大きな数を同じように扱うため、浮動小数点という考え方で数を表現しています。
- 浮動小数点の数では正しく計算できる桁数が制限されます。
- 大きな数の計算を行ったときには、決まった桁数分についてのおよその値になります。
JS> 1234567890123456789 + 1 1234567890123456800
- この例では上から17桁分しか正しく計算されていません。
Rhino の表示方法
すごく大きな数や小さな小数については、次のような表示がされます。
1) e を使った表示
- 0.1234e+25 や 0.987e-15 のように間にeをはさんだ表示になることがあります。
- eの後ろにある数は小数点の位置がどれだけずれているかを表しています。
- 1番目の例は小数点の位置を右に25桁ずらした 1234000000000000000000000という値を表しています。
- 2番目の例は小数点の位置を左に15桁ずらした 0.000000000000000987という値を表しています。
2)無限大
- ECMAscriptでは無限大をinfinityで表します。
JS> 5 / 0 Infinity
- 0で割ったときの答として現れます。
- 負の無限大は -Infinity です。
3)NaN
- 数のようでもあるし数ではない不思議な値です。
- Not a Number の略です。
- 0を0で割ったり、無限大で割ったりしたときに現れます。
四則演算以外の演算
6^2 や 3~8 や 7! や 6&4 のような式を入力してみた人もいました。 でも予想どおりには計算できなかったようです。
数の演算で普通に使えるのは四則演算だけです。 ^ ~ & ! は論理演算(ビット演算)のための記号として使われます。
8進数、16進数
先頭に0をつけると8進数として解釈されます。
JS> 012 + 3 13
012は10進の十二ではなく8進数で、8の位が1、1の位が2ですから、10進での値は10です。 これに3を加えると答は13になります。
16進数を入力するときには先頭に0xをつけ、0x7fのように書きます。