<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>ecmaプログラムの書き方</title><revhistory><revision><revnumber>16</revnumber><date>2012-10-07 04:54:59</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2012-10-05 12:01:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2012-10-05 12:01:04</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2012-10-05 11:56:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2012-10-04 13:13:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2012-10-04 13:05:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2012-10-04 13:00:51</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-10-04 12:58:14</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-10-04 12:45:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-10-04 12:36:14</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-10-04 12:33:35</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-10-04 12:27:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-10-04 12:27:17</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-10-04 12:25:45</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-10-04 12:18:57</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-10-03 13:01:14</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>Rhino処理系を使ったプログラムの書き方</title><para>Rhinoはインタプリタで、会話型で利用できます。 </para><para>インタプリタでは入力した命令がただちに実行され、結果がすぐわかります。 これは長所でもありますが、短所でもあります。 入力されたプログラムであっても、実行されない部分は 文法チェックも行われない可能性があります。 このため コンパイラの場合とデバッグ手順が異なります。 </para><para>プログラムは 少しずつ確かめながら作成しましょう。 </para><section><title>例１</title><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/ecma%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9?action=AttachFile&amp;do=get&amp;target=toi1.png"/></imageobject><textobject><phrase>toi1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>やさしい問題におきかえて考える。 次の和のほうが簡単ですね。 </para><itemizedlist><listitem override="none"><para>1+2+3+ ... + 100 </para></listitem></itemizedlist><para>繰り返しの回数が少ない場合で確かめる。 </para><itemizedlist><listitem override="none"><para>問題は１００項までの和ですが、５項、１０項程度で考えてみる。 </para></listitem><listitem override="none"><para>必要に応じ print を挿入して、途中結果を表示させる。 </para></listitem><listitem override="none"><para>ループの最初と最後を確認する。 </para></listitem></itemizedlist><para>結果は正しいのか？ </para><itemizedlist><listitem override="none"><para>項数の少ない場合の正しいを電卓等で計算し、プログラムの出力結果と比較します。 </para></listitem><listitem override="none"><para>問題によっては複数の場合を確かめる必要があります。 </para></listitem></itemizedlist></section><section><title>例２</title><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/ecma%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9?action=AttachFile&amp;do=get&amp;target=toi2.png"/></imageobject><textobject><phrase>toi2.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>こんな問題におきかえて考えましょう。 </para><itemizedlist><listitem override="none"><para>1+3+5+7+9+ ... </para></listitem><listitem override="none"><para>1-3+5-7+9- ... </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>エディタを使った作成と実行</title><para>エディタを使ってプログラムを作成し実行することもできます。 直接実行できるようなプログラムのことをスクリプトと呼ぶこともあります。 </para><para>エディタで作成するときは、 次のような形式で作成し、 拡張子を .js として保存します。 </para><itemizedlist><listitem><para>命令を実行順に並べて記述する。 </para></listitem><listitem><para>使う変数は、初めに var で宣言する。 </para></listitem><listitem><para>必要に応じてコメントをつける。 </para></listitem><listitem><para>インデントを行うこと。 </para></listitem></itemizedlist><para>例 (sample1.js として保存) </para><itemizedlist><listitem override="none"><screen><![CDATA[// 1から9までの和を求める
var sum, i;
sum = 0;
for (i=1; i<10; i++) {
    sum = sum + i;
}
print(sum);]]></screen></listitem></itemizedlist><para>rhinoのプロンプトで load命令を用いて読み込むことで実行します。 </para><itemizedlist><listitem override="none"><screen><![CDATA[[xxx@e217x ~]$ rhino
js> load('sample1.js');
45
js>]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>構文(Cと異なるもの)</title><section><title>var</title><para>変数の宣言。ECMAscriptの文。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/ecma%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9?action=AttachFile&amp;do=get&amp;target=var1.png"/></imageobject><textobject><phrase>var1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section><section><title>print</title><para>表示を行う。rhinoの関数。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/ecma%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9?action=AttachFile&amp;do=get&amp;target=print1.png"/></imageobject><textobject><phrase>print1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section><section><title>load</title><para>ファイルから読み込む。rhinoの関数。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/ecma%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9?action=AttachFile&amp;do=get&amp;target=load1.png"/></imageobject><textobject><phrase>load1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section></section></section></article>