welcome: please sign in
location: "Rhinoのプログラム"の差分
3と5のリビジョン間の差分 (その間の編集: 2回)
2010-02-19 02:08:21時点のリビジョン3
サイズ: 4113
編集者: masahiko
コメント:
2010-02-19 02:17:47時点のリビジョン5
サイズ: 7294
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 90: 行 90:
----
=== 数の演算 ===

演算記号を用いた数の演算は ECMAscriptでは5種類あります。

加算
 . たし算は + で表します。
 {{{
 js> 2 + 3
 5
 }}}

減算
 . ひき算は - で表します。
 {{{
 js > 10 - 3
 7
 }}}

乗算
 . かけ算は * で表します。
 {{{
 js> 4 * 2
 8
 }}}

除算
 . わり算は / で表します。
 {{{
 js> 12 / 4
 3
 js> 12 / 5
 2.4
 }}}

剰余
 . 余りを求める演算を % で表します。
 {{{
 js> 10 % 3
 1
 js> 1.9 % 0.5
 0.399999999
 }}}
----

=== 演算の順序 ===

+ - より * / % の方が先に計算されます。
 {{{
 js> 2 + 3 * 5
 17
 }}}
3*5 が先に計算され、その結果の15が2に加えられ、答は17になります。
2+3を先に計算したいときは括弧をつかって
 . (2+3) * 5
と書きます。

+ - がいくつか並んでいるときは左から順に計算されます。
 {{{
 js> 6 - 2 + 3
 7
 }}}
* / % がいくつか並んでいるときは左から順に計算されます。
 {{{
 js> 10 / 2 * 3
 15
 js> 3 * 5 % 2
 1
 }}}
----
=== 例 ===
面積を求める問題はつぎのようでした。
 . {{attachment:menseki3a.png}}
赤で示した長方形を考え
 . {{attachment:menseki3b.png}}
a - b - c + d として計算することにします。

 . 長方形 a の面積は (8 + 6) * (6 + 6 + 5)
 . 長方形 b の面積は 8 * 5
 . 長方形 c の面積は 3 * 4
 . 半円 d の面積は 6 * 6 * 3.1416 / 2
で求めることができます。

この計算は式のとおりに
 . (8 + 6) * (6 + 6 + 5)
 . 8 * 5
 . 3 * 4
 . 6 * 6 * 3.1416 / 2
と書けば表すことができますが、計算結果をあとで利用するためには「名前」をつけておく必要があります。

これには「代入文」を使います。
名前は上の図と同じ a, b, c, d を使うことにすると
 {{{
 a = (8 + 6) * (6 + 6 + 5);
 b = 8 * 5;
 c = 3 * 4;
 d = 6 * 6 * 3.1416 / 2;
 }}}
と書けます。

a, b, c, d の値が分かっていれば、面積は a - b - c + d で表せます。
面積にも menseki と「名前」をつけることにすると、この計算は
 {{{
 menseki = a - b - c + d;
 }}}
という代入文になります。

最後に、結果を表示するための print文を追加すればプログラムの完成です。
 {{{#!java
 a = (8 + 6) * (6 + 6 + 5);
 b = 8 * 5;
 c = 3 * 4;
 d = 6 * 6 * 3.1416 / 2;
 menseki = a - b - c + d;
 print ( '面積は', menseki, 'です' );
 }}}
'''プログラムは1行目から順に実行されます。'''
 . 1行目から4行目でa,b,c,dの値が計算され、記憶されます。
 . 5行目ではそれらの値を用いて面積を計算し、mensekiに記憶します。
 . 6行目では求まった(記憶されている)値を表示します。

1~4行目の順序は変わってもかまいませんが、
その後の5行目、6行目はこの順でないと困ります。

実際にエディタを使ってプログラムを入力し、load命令を使って実行して確かめましょう。

Rhinoのプログラム

作成と実行

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

  • [添付]

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

  • [添付]

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

  • [添付]

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


動作確認

プログラムを作成したら、必ず、正しく実行されるか確かめなければなりません。 実行結果(コンピュータからの反応)が自分の予想した通りになっているか、そうでないかを判断してください。

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

エラー対応

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

  • メッセージの先頭付近に <stdin> とあるときは、会話画面での入力に誤りがあるか、プログラムが保存されていないかです。

  • それ以外のメッセージのときは、プログラム内に誤りがあります。

ちょっと便利な使い方

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


プログラムと文

プログラムは日本語の文章に対応します。 文章は文が集まってできています。 それぞれの文の意味と、文の順番で内容が決まります。

プログラムも文の集まりです。 それぞれの文はなんらかの処理を表しており、文の並び方で手順を表します。 日本語で説明を書くときと同様に、行われる順に書いていきます。

  • print文や代入文の終わりには ; (セミコロン)を書きます。
  • print文や代入文は1行に1つ書くようにしましょう。

演習で使用している Rhino では、自動的に「;」を補ってくれる機能があります。(いつも正しく補われるかどうかは分かりません) プログラムの間違いを少なくするためには、補完機能にたよらず、記述するようにしましょう。


プログラムの構成要素

日本語の文章は単語と、。「」などの記号を並べて書かれます。

プログラムは

  • 名前
  • 記号
  • リテラル

を並べて記述されます。

名前は値を記憶、参照するための変数などを表すのに使います。

記号は = + - * / など、それぞれに意味があります。

リテラルは値を直接記述したものです。

数値リテラル

  • 数値は123, 5.67, -89, 0.54 のように記述しました。
  • 1番目の例は10進数でヒャクニジュウサンという値を表します。

文字リテラル

  • 文字の並びそのものをデータ(値)として扱いたいことがあります。
  • このときは '(クオート)または"(ダブルクオート)で挟んで記述します。
  • '123' と書くと文字1、文字2、文字3がこの順に並んだものを表します。


プログラムは文の集まりです。 これまでに出てきた文は次の2種類です。

代入文

  • 式の値を計算し、名前に対応させます(代入という)。
  • namae2.png

print文

  • 式の値を計算し、表示します。
  • print1.png


数の演算

演算記号を用いた数の演算は ECMAscriptでは5種類あります。

加算

  • たし算は + で表します。
     js> 2 + 3
     5

減算

  • ひき算は - で表します。
     js > 10 - 3
     7

乗算

  • かけ算は * で表します。
     js> 4 * 2
     8

除算

  • わり算は / で表します。
     js> 12 / 4
     3
     js> 12 / 5
     2.4

剰余

  • 余りを求める演算を % で表します。
     js> 10 % 3
     1
     js> 1.9 % 0.5
     0.399999999


演算の順序

+ - より * / % の方が先に計算されます。

  •  js> 2 + 3 * 5
     17

3*5 が先に計算され、その結果の15が2に加えられ、答は17になります。 2+3を先に計算したいときは括弧をつかって

  • (2+3) * 5

と書きます。

+ - がいくつか並んでいるときは左から順に計算されます。

  •  js> 6 - 2 + 3
     7

* / % がいくつか並んでいるときは左から順に計算されます。

  •  js> 10 / 2 * 3
     15
     js> 3 * 5 % 2
     1


面積を求める問題はつぎのようでした。

  • menseki3a.png

赤で示した長方形を考え

  • menseki3b.png

a - b - c + d として計算することにします。

  • 長方形 a の面積は (8 + 6) * (6 + 6 + 5)
  • 長方形 b の面積は 8 * 5
  • 長方形 c の面積は 3 * 4
  • 半円 d の面積は 6 * 6 * 3.1416 / 2

で求めることができます。

この計算は式のとおりに

  • (8 + 6) * (6 + 6 + 5)
  • 8 * 5
  • 3 * 4
  • 6 * 6 * 3.1416 / 2

と書けば表すことができますが、計算結果をあとで利用するためには「名前」をつけておく必要があります。

これには「代入文」を使います。 名前は上の図と同じ a, b, c, d を使うことにすると

  •  a = (8 + 6) * (6 + 6 + 5);
     b = 8 * 5;
     c = 3 * 4;
     d = 6 * 6 * 3.1416 / 2;

と書けます。

a, b, c, d の値が分かっていれば、面積は a - b - c + d で表せます。 面積にも menseki と「名前」をつけることにすると、この計算は

  •  menseki = a - b - c + d;

という代入文になります。

最後に、結果を表示するための print文を追加すればプログラムの完成です。

  •    1  a = (8 + 6) * (6 + 6 + 5);
       2  b = 8 * 5;
       3  c = 3 * 4;
       4  d = 6 * 6 * 3.1416 / 2;
       5  menseki = a - b - c + d;
       6  print ( '面積は', menseki, 'です' );
    

プログラムは1行目から順に実行されます。

  • 1行目から4行目でa,b,c,dの値が計算され、記憶されます。
  • 5行目ではそれらの値を用いて面積を計算し、mensekiに記憶します。
  • 6行目では求まった(記憶されている)値を表示します。

1~4行目の順序は変わってもかまいませんが、 その後の5行目、6行目はこの順でないと困ります。

実際にエディタを使ってプログラムを入力し、load命令を使って実行して確かめましょう。

Rhinoのプログラム (最終更新日時 2011-12-19 07:16:39 更新者 masahiko)