== まとめて質問する == ---- === 面積を求める問題(前回の続き) === 次の図形の(灰色の部分の)面積を計算します。 . {{attachment:menseki3a.png}} 赤い線で示した長方形を考えます。 . {{attachment:menseki3b.png}} このように分割したときのそれぞれの部分の面積を a, b, c, d とすると、灰色の部分の面積は a-b-c+d で求まることがわかります。 . a の面積は (8+6)*(6+6+5) . b の面積は 8*5 . c の面積は 4*3 . d の面積は 6*6*3.1416/2 で求まります。 a,b,c,d4つの変数に値を覚えながら計算するには 次のように入力します。 {{{ JS> a = (8+6)*(6+6+5) ; 238 JS> b = 8*5 ; 40 JS> c = 4*3 ; 12 JS> d = 6*6*3.1416/2 ; 56.5488 JS> a-b-c+d 242.5488 }}} 入力した部分だけをとりだしてみると、このようになります。 {{{ a = (8+6)*(6+6+5); b = 8*5; c = 4*3; d = 6*6*3.1416/2; a-b-c+d }}} 1つずつ質問を入力しては答を得るのではなく、いくつかまとめて質問できると便利ですね。 それには質問内容をファイルに記述しておき、そのファイルを読んで処理するように指示します。 処理内容を記述したものを'''スクリプト'''または'''プログラム'''と呼びます。 例えば、上で示した5行分を ex0516.js というファイルに記述して保存した場合 {{{ JS> load('ex0516.js') }}} と入力することで、このファイルから1行ずつ順に読んで計算してくれます。 . {{attachment:rhino2.png}} しかし、この方法で実行した場合には計算結果は'''表示されません'''。 処理(計算)はされますが、1行ごとの結果は表示しないことになっています。 たくさんの計算をまとめて行うときにはこの方が便利だからです。 結果を表示するには、表示するための指示が必要です。 . {{attachment:rhino1.png}} ---- === print 文 === プログラム(スクリプト)を load すると、1行ずつ順に処理(計算)はされますが、その計算結果は表示されません。 結果を表示するには、 print文(print命令)を使います。 書き方は {{{ print ( 内容 ) ; }}} です。 . {{attachment:rhino3.png}} 以下の説明では、プログラムとして記述する部分は行番号付きで表示しています。 プログラム内に行番号は記述しません。 '''書き方1''' . 内容の部分に計算式を書くと、計算結果を表示します。 例 {{{#!java print ( 6*4/2 ); }}} この内容をテキストエディタで入力し、ファイルsample1.jsに保存した後、 load命令を用いて実行させると次のようになります。 {{{ JS> load( 'sample1.js') 12 }}} '''書き方2''' . 文字を表示するには’(シングルクオート)で挟んで書きます。 . ’で挟んだ部分には日本語を記述することもできます。 . ’を表示したいときは’の代わりに”(ダブルクオート)で挟んで記述します。 例 {{{#!java print ( 'プログラミング入門' ); }}} プログラムをsample2.jsに記述し、load命令を用いて実行させると次のようになります。 {{{ JS> load( 'sample2.js') プログラミング入門 }}} '''書き方3''' . 数行にわたる表示を行いたいときは、行数分のprint 文を書けばよい。 . 記述した順に実行され、順に表示されます。 例 {{{#!java print ( 'プログラミング入門' ); print ( 12 + 3 ); }}} プログラムをsample3.jsに記述し、load命令を用いて実行させると次のようになります。 {{{ JS> load( 'sample3.js') プログラミング入門 15 }}} '''書き方4''' . 文字や計算結果をいくつか同じ行に並べて表示したいときは、,(カンマ)で区切って記述します。 . 3つ以上並べて書くこともできます。 例 {{{#!java print ( '答え', 5*6 ); }}} プログラムをsample4.jsに記述し、load命令を用いて実行させると次のようになります。 {{{ JS> load( 'sample4.js') 答え 30 }}} '''構文''' . {{attachment:print1.png}} 式の部分は、四則演算を用いた計算式か、シングルクオートで挟んで書いた文字列です。他の形の式もあります。 ---- === プログラムの作成 === プログラム(手順を記述したもの)をファイルとして作成します。 プログラムファイルを作成するには'''テキストエディタ'''を使います。 テキストエディタには、Windowsに付属している「メモ帳」の他に「テラパッド」などがあります。 入力ができたら、ファイル名をつけて保存します。 . 保存場所は pro ディレクトリの中です。 . 拡張子は .js にしてください。 「メモ帳」を使っている人は、保存時に「ファイルの種類」を「すべてのファイル」に変更してから「保存」すること。 「テラパッド」を使っている人は、変更の必要はありません。 ---- === プログラムを実行する === プログラムを読み込むには load 命令を使います。 {{{ JS> load( 'ex0516.js' ); }}} のように load( と ); の間にファイル名をシングルクオートで挟んで入力します。 load命令を入力すると、指定されたファイルを読み込んで、ファイルに記述された内容(プログラム)にしたがって処理します。 プログラム内に計算の指示があれば計算が行われ、表示の指示があれば表示が行われます。 処理はプログラム内に記述された順に、1行目から順に行われます。 表示はプログラム内で指示したものだけ行われます。 プログラムに間違いがあったときには、エラーメッセージが表示されるので、プログラムを修正してからもう一度loadを行ってください。 '''構文''' . {{attachment:load1.png}} ---- === エラーメッセージ === 1) JS> に対して入力した命令( load命令 )に間違いがあったときは {{{ js: "", line 4: uncaught !JavaScript runtime exception: }}} のようにエラーメッセージの先頭が''''''になります。 2) 入力時の間違いでよく現れるのは次のメッセージです。 {{{ js: "", 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)の違いに注意してください。 プログラムのどこに間違いがあるのか知るためには、エラーメッセージの中から重要な箇所を見つけ出せると簡単です。 全部を翻訳する必要はありません。