JavaScriptによるプログラミング

 

JavaScript では、プログラムを <script>〜</script> の間に記述する。

○文の終わりにはセミコロン(;)をつける。また,セミコロンで区切ることにより、1行に複数の文を記述することができる。

// から行末までと,/* から */ の間はコメントとして扱われる。コメントには、プログラムの注釈(メモ)などを記述し,プログラムとしては実行されない。/* ... */ のコメントは、複数行にまたがることもできる。

 

document.write(msg [, msg...])

document.writeln(msg [, msg...])

指定したドキュメントに文字列や値を書込む。writeln() は、最後に改行コードが送り出される点がwrite()と異なる。HTML内では改行は一文字のスペースになるので,改行させたいときには<br>を記述する。

 

<SCRIPT LANGUAGE="JavaScript">

document.writeln("HELLO Javascript<br>");

document.write("こんにちは");

 </SCRIPT>

 

function func(arg1, arg2, ...) { ... }

関数(あるまとまった計算などの処理)を定義する。下の例のdbl(n)は,nを2倍にする関数である。

 

<SCRIPT LANGUAGE="JavaScript">

document.write(dbl(3));

function dbl(n) {

        n *= 2;

        return n;

}

</SCRIPT>

 

if (expression) statements1 else statements2

expression が真であれば statements1 を、でなければ statements2 を実行する。

 

<SCRIPT LANGUAGE="JavaScript">

var today = new Date();

var hour = today.getHours();

document.write("今、日本は");

if (hour < 12) {

        document.write("午前中");

} else {

        document.write("午後");

}

document.write("です");

</SCRIPT>

 

for (expression1; expression2; expression3) statements

最初に expression1 を実行し、次に、statements と expression3 を expression2 が真である間繰り返す。

 

<SCRIPT LANGUAGE="JavaScript">

for (i = 0; i < 10; i++) {

    document.write(i);

}

</SCRIPT>

 

 

 

演習 n!のプログラムを関数とfor文を使用して作る。

 

<SCRIPT LANGUAGE="JavaScript">

document.write(factorial (3));

function factorial (n) {

        n1=1

for (i = 1; i <= n; i++) {

n1=n1*i

}

        return n1;

}

</SCRIPT>

 

array = new Array()

配列arrayを作成する。

array = new Array(n)

n 個の要素を持つ配列arrayを作成する。

array = new Array(e1, e2, ...)

e1, e2, ...を要素とする配列arrayを作成する。

配列のインデックスは 0 から始まるが,n - 1 を超えても使用可能である。

 

<SCRIPT LANGUAGE="JavaScript">

xx = new Array(3);

xx[0] = "Sun";

xx[1] = "Mon";

xx[2] = "Tue";

document.write(xx[0] + xx[1] + xx[2]);

yy = new Array("Sun", "Mon", "Tue");

document.write(yy[0] + yy[1] + yy[2]);

</SCRIPT>

 

やや難解だが,2次元配列も以下のように使用できる。

<SCRIPT LANGUAGE="JavaScript">

xx = new Array(3);

for (i = 0; i < xx.length; i++) {

    xx[i] = new Array(4);

    for (j = 0; j < xx[i].length; j++) {

        xx[i][j] = i * 10 + j;

        document.write(xx[i][j],"<br>");

    }

}

</SCRIPT>

 


数学関数には次のようなものがある。

 

Math.random() 0以上、1未満の乱数を生成する

Math.ceil(n) n の小数点以下を繰り上げた整数値を返す

Math.floor(n) n の小数点以下を繰り下げた整数値を返す

Math.round(n) n の小数点以下を四捨五入した整数値を返す

Math.abs(n) n の絶対値を返す

Math.sin(x) sin(x)  x はラジアン単位(0度は0、90度はπ/2、180度はπ)

Math.cos(x) cos(x)

Math.tan(x) tan(x)

Math.asin(x) arcsin(x) (-π/2〜π/2)

Math.acos(x) arcos(x) (0〜π)

Math.atan(x) arctan(x) (-π/2〜π/2)

Math.atan2(y, x) 座標 x, y の角度(-π〜π)。

Math.PI円周率π(3.141592,,,)

Math.max(x, y) x と y の大きい方

Math.min(x, y) x と y の小さい方

Math.pow(n, m) n の m 乗

Math.sqrt(n) n の平方根

n の平方根。

Math.SQRT2  2 の平方根(約1.414)

Math.SQRT1_2 1/2 の平方根(約0.707)

Math.E 自然対数 e の値(約2.718)

Math.LN2 e を底とした2の対数(約0.693)

Math.LN10 e を底とした10の対数(約2.302)

Math.LOG2E 2 を底とした e の対数(約1.442)

Math.LOG10E 10 を底とした e の対数(約0.434)

LN2 は、LN10 は、LOG2E は、LOG10E は。

Math.exp(n) e の n 乗。

Math.log(n) e を底とした n の対数。

 

0〜99の乱数を20個発生させる

 

<SCRIPT LANGUAGE="JavaScript">

for (i = 0; i < 20; i++) {

    x = Math.floor(Math.random() * 100);

    document.write(x,"<br>");

}

</SCRIPT>

 

0度から90度までのsinを10度毎に計算

 

<SCRIPT LANGUAGE="JavaScript">

for (i = 0; i < 9; i++) {

    x = Math.sin(Math.PI/180*i*10);

    document.write(x,"<br>");

}

</SCRIPT>

 

演習1 5個の数字の最大値を求めるプログラムを作成せよ。

演習2 5個の数字を大きいものから順に並べるプログラムを作成せよ。

演習3 モンテカルロ法でπの値を求めるプログラムを作成せよ。

0〜1の乱数x,yを多数(たとえば1000回)発生させ,x*x+y*yが1以下になる割合がπ/4に相当することを利用する。