| 情報学部 | 菅沼ホーム | 目次 | 索引 |
<SCRIPT TYPE="text/javascript"> <!-- ここに,JavaScript のプログラム //--> </SCRIPT>
使用例1( use1.htm )
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>文書内記述</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 </HEAD>
09 <BODY CLASS="white">
10 <H1 CLASS="center">文書内記述</H1>
11 <SCRIPT TYPE="text/javascript">
12 document.write("JavaScript によって出力<BR>\n");
13 alert("文書内記述");
14 let w = window.open("", "", "width=300, height=100");
15 w.document.open();
16 w.document.write('<HTML>\n');
17 w.document.write(' <HEAD>\n');
18 w.document.write(' <TITLE>新しい Window</TITLE>\n');
19 w.document.write(' </HEAD>\n');
20 w.document.write(' <BODY>\n');
21 w.document.write(' 新しい Window の生成も可能<BR>\n');
22 w.document.write(' </BODY>\n');
23 w.document.write('</HTML>\n');
24 w.document.close();
25 </SCRIPT>
26 </BODY>
27 </HTML>
使用例2( use2.htm )
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>文書内記述(関数)</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 <SCRIPT TYPE="text/javascript">
09 function func()
10 {
11 alert("文書内記述(関数)");
12 }
13 </SCRIPT>
14 </HEAD>
15 <BODY CLASS="white">
16 <H1 CLASS="center">文書内記述(関数)(<SPAN onClick="func()">ここをクリック</SPAN>)</H1>
17 </BODY>
18 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>外部ファイル</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript" SRC="control.js"></SCRIPT> 09 </HEAD> 10 <BODY CLASS="white"> 11 <H1 CLASS="center">外部ファイル(<SPAN onClick="func()">ここをクリック</SPAN>)</H1> 12 </BODY> 13 </HTML>
function func()
{
alert("外部ファイル");
}
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>要素内記述</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 </HEAD>
09 <BODY CLASS="white">
10 <H1 CLASS="center">要素内記述</H1>
11 SPAN 要素 <SPAN onClick="JavaScript: alert('alert 1');alert('alert 2')">ここをクリック</SPAN><BR><BR>
12 A 要素 <A HREF="JavaScript: alert('alert 2');alert('alert 1')">ここをクリック</A>
13 </BODY>
14 </HTML>
let x1 = 12345; let x2; var y1 = 12.5; var y1; z1 = 12; z1;
±1.7976931348623157 × 10308
-253(-9,007,199,254,740,992) ~ 253(9,007,199,254,740,992)
let x = "<SPAN STYLE='red'>赤</SPAN>"
let x = "<SPAN STYLE="red">赤</SPAN>"
let x = "<SPAN STYLE=\"red\">赤</SPAN>"
| Seq. | 説明 |
|---|---|
| \b | バックスペース |
| \t | 水平タブ |
| \v | 垂直タブ |
| \n | 改行 |
| \r | 復帰 |
| \f | 改ページ |
| \' | シングルクォーテーション |
| \" | ダブルクォーテーション |
| \` | バッククォート |
| \\ | バックスラッシュ |
| \0 | NULL文字 |
| \xXX | 2桁の16進数が表すLatin-1文字 |
| \uXXXX | 4桁の16進数が表すUnicode文字 |
| \u{XXXXXX} | 16進数のコードポイントが表すUnicode文字 |
+ : 加算 : どちらかが文字列の場合は,文字列の結合 - : 減算 * : 乗算 / : 除算 : 整数同士の割り算であっても,小数点以下が切り捨てられません. % : 余り : 被除数,除数は共に制限はありません.除算の結果を整数として,その余りを結果とします. 例えば,7.3 % 2.3 の結果は 0.4 となります( 7.3 / 2.3 の演算結果は,3 余り 0.4 ). = : 代入 ++ : インクリメント演算子( 1 だけ増加) -- : デクリメント演算子( 1 だけ減少)
01 #include <stdio.h>
02
03 int main()
04 {
05 // データの入力
06 double x, y;
07 printf("2つのデータを入力して下さい ");
08 scanf("%lf %lf", &x, &y);
09 // 和と差の計算
10 double wa = x + y;
11 double sa = x - y;
12 // 結果の出力
13 printf("和は=%f 差は=%f\n", wa, sa);
14
15 return 0;
16 }
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>加算と減算</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <SCRIPT TYPE="text/javascript">
08 /****************************/
09 /* 2つのデータの加算と減算 */
10 /* coded by Y.Suganuma */
11 /****************************/
12 function run() {
13 // データの取得
14 let x = parseFloat(document.getElementById("x").value);
15 let y = parseFloat(document.getElementById("y").value);
16 // 和と差の計算
17 // let wa = eval(document.getElementById("eq1").value);
18 let wa = x + y;
19 let sa = x - y;
20 // 結果の表示
21 document.getElementById("plus").value = wa;
22 document.getElementById("minus").value = sa;
23 console.log("x " + x + " y " + y + "\n");
24 }
25 </SCRIPT>
26 </HEAD>
27 <BODY STYLE="font-size:130%">
28 <P STYLE="text-align:center">
29 x : <INPUT TYPE="text" ID="x" SIZE="5" STYLE="font-size:120%">
30 y : <INPUT TYPE="text" ID="y" SIZE="5" STYLE="font-size:120%">
31 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
32 <INPUT TYPE="text" ID="eq1" SIZE="10" VALUE="x + y" STYLE="font-size:120%"> =
33 <INPUT TYPE="text" ID="plus" SIZE="10" STYLE="font-size:120%"><BR>
34 <INPUT TYPE="text" ID="eq2" SIZE="10" VALUE="x - y" STYLE="font-size:120%"> =
35 <INPUT TYPE="text" ID="minus" SIZE="10" STYLE="font-size:120%">
36 </P>
37 </BODY>
38 </HTML>
x * x + y * y Math.pow(x, 2) + Math.pow(y, 2)

> より大きい a > b 式 a の値が式 b の値より大きいとき真 < より小さい a < b 式 a の値が式 b の値より小さいとき真 >= 以上 a >= b 式 a の値が式 b の値以上のとき真 <= 以下 a <= b 式 a の値が式 b の値以下のとき真 == 等しい a == b 式 a の値と式 b の値が等しいとき真 === 等しい a === b 式 a の値と式 b の値が等しいとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) != 等しくない a != b 式 a の値と式 b の値が等しくないとき真 !== 等しくない a !== b 式 a の値と式 b の値が等しくないとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) || 論理和 x || y 式 x が真か,または,式 y が真のとき真 && 論理積 x && y 式 x が真で,かつ,式 y が真のとき真 ! 否定 ! x 式 x が偽のとき真
3 < x < 5
3 < 2 < 5
(3 < x) && (x < 5)
let a = "abc";
let b = "abc";
let c = new String("abc");
let d = new String("abc"); a == b ? → true c == d ? → false a == c ? → true
char a[] = "abc";
char b[] = "abc";
string c = "abc";
string d = "abc";
string *e = new string("abc");
string *f = new string("abc"); a == b ? → false // ポインタの比較? c == d ? → true e == f ? → false // ポインタの比較 *e == *f ? → true // 内容の比較 a == c ? → true a == *e ? → true c == *e ? → true
| 論理和 x | y 対応するビットのいずれかが 1 のとき真. & 論理積 x & y 対応するビットの双方が 1 のとき真 ^ 排他的論理和 x ^ y 対応するビットが異なるのとき真 ~ 1の補数 ~ x ビット毎に 1 と 0 を反転する << 左にシフト x << 3 3 ビット左にシフト.x を 23 倍することに相当. >> 右にシフト x >> 3 3 ビット右にシフト.x を 23 で割ることに相当. >>> 右にシフト x >>> 3 3 ビット右にシフト( C++ における符号無しの整数を右シフトする場合に相当).
11001111 → 3 ビット左にシフト → 01111000
(1)符号付き 11001111 → 3 ビット右にシフト → 11111001 (2)符号なし 11001111 → 3 ビット右にシフト → 00011001
new let obj = new Date() オブジェクトの生成 delete delete obj オブジェクトの削除(配列の要素も可能) 例 delete a[2]; delete['xyz']; // 連想配列 typeof() typeof(x) 変数などの型 in 数値 in obj オブジェクト内に指定した値が含まれていれば真 例 let a = new Array(1,2,3); document.write(5 in a);
if (論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) }
if (論理式1) {
・・・・・・
if (論理式2) {
・・・・・・
}
else {
・・・・・・
}
・・・・・・
}
else {
・・・・・・
}
01 if (a == b) {
02 max = y;
03 min = z;
04 if (min < 0.0) {
05 min = 0.0;
06 a = b;
07 }
08 }
09 else {
10 max = s;
11 min = g;
12 }
13 x = 9;
14 y = 10;
if (論理式1) {
if (論理式2)
文1;
}
else
文2; if (論理式1) if (論理式2) 文1; else 文2;
if (論理式) {
文1(複数の文も可)
}
else {
文2(複数の文も可)
} if (論理式1) if (論理式2) 文1; else 文2;
if (論理式) { 文1(複数の文も可) } else if (論理式) { 文2(複数の文も可) } ・・・ else { 文n(複数の文も可) }
switch (式) { [case 定数式1 :] [文1] [case 定数式2 :] [文2] ・・・・・ [default :] [文n] }
switch (data) {
case 0 :
( data の値が 0 の時の処理)
break;
case 1 :
( data の値が 1 の時の処理)
break;
case 2 :
( data の値が 2 の時の処理)
break;
default :
( data の値がいずれでもない時の処理)
}
for (初期設定; 繰り返し条件; 後処理) {
文(複数の文も可)
}
・・・
while (繰り返し条件) {
文(複数の文も可)
} do { 文(複数の文も可) } while (繰り返し条件) ;
初期設定;
while (繰り返し条件) {
文(複数の文も可)
後処理;
}
for (変数名 in オブジェクト名) { 文(複数の文も可) }
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>for in</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 </HEAD>
09 <BODY CLASS="white">
10 <H1 CLASS="center">for in の使用例</H1>
11 <SCRIPT TYPE="text/javascript">
12 document.write("配列 a の各要素の値<BR>");
13 let a = new Array(5, 2.3, "abc"); // let a = [5, 2.3, "abc"];
14 for (let x in a)
15 document.write(" " + x + " " + a[x] + "<BR>");
16
17 document.write("連想配列 b の各要素の値<BR>");
18 let b = {'xx':5, 'yy':2.3, 'zz':"abc"}; // let b = {xx:5, yy:2.3, zz:"abc"};
19 document.write(" " + b['xx'] + " " + b.xx + "<BR>");
20 document.write(" " + b['yy'] + " " + b.yy + "<BR>");
21 document.write(" " + b['zz'] + " " + b.zz + "<BR>");
22 for (let x in b)
23 document.write(" " + x + " " + b[x] + " " + b.x + "<BR>");
24
25 document.write("document オブジェクトのプロパティとメソッド等<BR>");
26 for (let x in document)
27 document.write(" " + x + "<BR>");
28 </SCRIPT>
29 </BODY>
30 </HTML>
with (オブジェクト名) {
オブジェクト内で行う処理
}
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE>with</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
</HEAD>
<BODY CLASS="white">
<H1 CLASS="center">with の使用例</H1>
<SCRIPT TYPE="text/javascript">
document.write("with の外側<BR>");
with (document) {
write("with の内部<BR>");
}
</SCRIPT>
</BODY>
</HTML>
let x1 = new Array(); // 要素数は未定 let x2 = new Array(100); // 要素数が100の配列 let x3 = new Array(1, 2.3, "abc"); // 初期設定も実施 let x4 = [1, 2.3, "abc"]; // 上と同様
let u1 = new Array(1, "abc", 2); let u2 = new Array(1, "abc", 2); let u3 = u1;

int a1[3] = {1, 2, 3};
int a2[3] = {1, 2, 3};
int a3[3] = a1; // 許されない
int *u1 = new int [3] {1, 2, 3};
int *u2 = new int [3] {1, 2, 3};
int *u3 = u1;
[プログラム例 5.1] 1 次元配列(要素の追加と削除) (表示)
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>1 次元配列</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 </HEAD>
08 <BODY CLASS="white">
09 <SCRIPT TYPE="text/javascript">
10 // 初期状態と追加後の出力
11 let x4 = new Array(1, 2.3, "abc");
12 x4[4] = 100; // 5 番目の要素を追加
13 for (let i1 = 0; i1 < x4.length; i1++)
14 document.write(" x4[" + i1 + "] " + x4[i1]);
15 document.write("<BR>");
16 for (let x in x4)
17 document.write(" x4[" + x + "] " + x4[x]);
18 document.write("<BR>");
19 // 3 番目の要素を削除( delete )
20 delete x4[2];
21 for (let i1 = 0; i1 < x4.length; i1++)
22 document.write(" x4[" + i1 + "] " + x4[i1]);
23 document.write("<BR>");
24 for (let x in x4)
25 document.write(" x4[" + x + "] " + x4[x]);
26 document.write("<BR>");
27 // 3 番目の要素を削除( delete )
28 x4.splice(2, 2);
29 for (let i1 = 0; i1 < x4.length; i1++)
30 document.write(" x4[" + i1 + "] " + x4[i1]);
31 document.write("<BR>");
32 for (let x in x4)
33 document.write(" x4[" + x + "] " + x4[x]);
34 document.write("<BR>");
35 </SCRIPT>
36 </BODY>
37 </HTML>
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>平均点以下の人数</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <SCRIPT TYPE="text/javascript">
08 /****************************/
09 /* 平均点以下の人数 */
10 /* coded by Y.Suganuma */
11 /****************************/
12 function run() {
13 // データの取得
14 let y = document.getElementById("point").value;
15 while (true) {
16 let z = y.search("\n");
17 if (z < 0)
18 break;
19 else
20 y = y.replace("\n", " ");
21 }
22 let x = (y.trim()).split(" ");
23 for (let i1 = 0; i1 < x.length; i1++)
24 x[i1] = parseInt(x[i1]);
25 // 平均点の計算
26 let mean = 0.0;
27 for (let i1 = 0; i1 < x.length; i1++)
28 mean += x[i1];
29 mean /= x.length;
30 // 平均点以下の人数をカウント
31 let ct = 0;
32 for (let i1 = 0; i1 < x.length; i1++) {
33 if (x[i1] <= mean)
34 ct++;
35 }
36 // 結果の表示
37 document.getElementById("result").value = ct;
38 }
39 </SCRIPT>
40 </HEAD>
41 <BODY STYLE="font-size:130%">
42 <P STYLE="text-align:center">
43 結果 : <INPUT TYPE="text" ID="result" SIZE="3" STYLE="font-size:120%"> 人
44 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
45 点数 : <TEXTAREA TYPE="text" ID="point" COLS="30" ROWS="5" STYLE="font-size: 90%"></TEXTAREA>
46 </P>
47 </BODY>
48 </HTML>
let v1 = new Array(2); v1[0] = new Array(10, 20, 30); v1[1] = new Array(40, 50, 60); let v2 = new Array(2); v2[0] = new Array(10, 20, 30); v2[1] = new Array(40, 50, 60); let v3 = v1;

let vp1 = v1[0]; // v1,v3 の 1 行目 let vp2 = v1[1]; // v1,v3 の 2 行目
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>複数クラスの試験</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <SCRIPT TYPE="text/javascript">
08 /****************************/
09 /* 複数クラスの試験 */
10 /* coded by Y.Suganuma */
11 /****************************/
12 function run() {
13 // データの取得
14 let n = document.getElementById("n").value;
15 let y = document.getElementById("point").value;
16 while (true) {
17 let w = y.search("\n");
18 if (w < 0)
19 break;
20 else
21 y = y.replace("\n", " ");
22 }
23 let z = (y.trim()).split(" ");
24 for (let i1 = 0; i1 < z.length; i1++)
25 z[i1] = parseInt(z[i1]);
26 // 2 次元配列への変換と全体平均の計算
27 let m = new Array(); // 各クラスの人数
28 let x = new Array();
29 let mm = 0; // 全体の人数
30 let mean = 0.0;
31 let k = 0
32 let k1 = 0;
33 while (k < z.length) {
34 m[k1] = z[k]; // クラスの人数
35 x[k1] = new Array(); // 2 次元配列
36 mm += m[k1];
37 k++;
38 for (let i1 = 0; i1 < m[k1]; i1++) {
39 x[k1][i1] = z[k];
40 mean += z[k];
41 k++;
42 }
43 k1++;
44 }
45 mean /= mm;
46 // 各クラスの平均点以下の人数
47 let res = "";
48 for (let i1 = 0; i1 < n; i1++) {
49 let ct = 0;
50 for (let i2 = 0; i2 < m[i1]; i2++) {
51 if (x[i1][i2] <= mean)
52 ct++;
53 }
54 res += "クラス" + (i1+1) + ": " + ct + " 人\n";
55 }
56 // 結果の表示
57 document.getElementById("result").value = res;
58 }
59 </SCRIPT>
60 </HEAD>
61 <BODY STYLE="font-size:130%">
62 <P STYLE="text-align:center">
63 クラス数 : <INPUT TYPE="text" ID="n" SIZE="2" STYLE="font-size:120%">
64 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
65 点数 : <TEXTAREA TYPE="text" ID="point" COLS="30" ROWS="5" STYLE="font-size: 90%"></TEXTAREA>
66 結果 : <TEXTAREA TYPE="text" ID="result" COLS="20" ROWS="3" STYLE="font-size: 90%"></TEXTAREA>
67 </P>
68 </BODY>
69 </HTML>
3 // 1 番目のクラスの人数 10 20 100 // 各人の点数 2 // 2 番目のクラスの人数 40 90 // 各人の点数
res = res + "クラス" + (i1+1) + ": " + ct + " 人\n";
let color = {'red' : '赤', 'blue' : '青'};
let color = {red : '赤', blue : '青'}; // 上と同様 let color = new Array(); color['red'] = '赤'; color['blue'] = '青';
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>連想配列</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 </HEAD>
09 <BODY CLASS="white">
10 <H1 CLASS="center">連想配列</H1>
11 <SCRIPT TYPE="text/javascript">
12 let color = {'red' : '赤', 'blue' : '青'};
13 // let color = ['red' : '赤', 'blue' : '青']; // エラー
14 color['green'] = '緑';
15 document.write(color['red'] + " " + color.red + "<BR>\n");
16 document.write(color['blue'] + " " + color.blue + "<BR>\n");
17 document.write(color['green'] + " " + color.green + "<BR>\n");
18 // document.write(color[0] + "<BR>\n"); // undefined
19 for (let english in color)
20 document.write(" " + english + " は " + color[english] + " です<BR>\n");
21 // document.write(" " + english + " は " + color.english + " です<BR>\n"); // undefined
22 </SCRIPT>
23 </BODY>
24 </HTML>
function 関数名 (引数, ・・・) { 処理 }
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>関数(様々な引数)</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 <SCRIPT TYPE="text/javascript">
09 // クラス Complex
10 class Complex {
11 // コンストラクタ
12 constructor(a, b)
13 {
14 this.x = a;
15 this.y = b;
16 }
17 }
18 // 関数 func
19 function func(a, b, c, d, e = 5)
20 {
21 d.x = -100;
22 a += 10;
23 c[0] = 30;
24 return (a + b + e); // 計算結果を返す
25 }
26 </SCRIPT>
27 </HEAD>
28 <BODY CLASS="white">
29 <H1 CLASS="center">関数(様々な引数)</H1>
30 <SCRIPT TYPE="text/javascript">
31 let x = 1;
32 let y = 2;
33 let z = new Array(10, 20);
34 let w = new Complex(100, 200);
35 document.write("関数を呼ぶ前:<BR>\n");
36 document.write(" x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + "<BR>\n");
37 let r = func(x, y, z, w);
38 document.write("関数を呼んだ後:<BR>\n");
39 document.write(" x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + " r:" + r + "<BR>\n");
40 </SCRIPT>
41 </BODY>
42 </HTML>
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>関数(関数名)</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 </HEAD>
08 <BODY>
09 <SCRIPT TYPE="text/javascript">
10 function add(s1, s2) {
11 let s = s1 + s2;
12 return s;
13 }
14
15 function sub(s1, s2) {
16 let s = s1 - s2;
17 return s;
18 }
19
20 function add_sub(fun, s1, s2) {
21 let s = fun(s1, s2);
22 return s;
23 }
24
25 document.write("add(2,3) " + add(2,3) + "<BR>\n");
26
27 let kasan = add;
28 document.write("kasan(2,3) " + kasan(2,3) + "<BR>\n");
29
30 document.write("add_sub(add, 2, 3) " + add_sub(add, 2, 3) + "<BR>\n");
31 document.write("add_sub(sub, 2, 3) " + add_sub(sub, 2, 3) + "<BR>\n");
32 </SCRIPT>
33 </BODY>
34 </HTML>
--- Complex オブジェクト ---
// Complex オブジェクト function Complex(a, b) { this.x = a; this.y = b; } // Complex オブジェクトのメンバー関数 add Complex.prototype.add = function(b) { let cp = new Complex(this.x + b.x, this.y + b.y); return cp; }
--- Complex クラス ---
// Complex クラスの場合
class Complex [ extends 基底クラス名] {
#x = 0;
#y = 0;
// コンストラクタ
constructor(a, b)
{
this.s = "Complex";
this.#x = a;
this.#y = b;
}
// メソッド add
add = function(b)
{
let cp = new Complex(this.#x + b.#x, this.#y + b.#y);
return cp;
}
// メソッド out1( x や y を出力するため)
out1 = function()
{
document.write("add = (" + this.#x + " , " + this.#y + ")<BR>\n");
}
// メソッド out2
out2 = function()
{
document.write("s = " + this.s + "<BR>\n");
}
}
/*
// メソッド out2(このように,クラス定義の外に記述することも可)
Complex.prototype.out2 = function() // 「 Complex.prototype. 」の部分が異なる
{
document.write("s = " + this.s + "<BR>\n");
}
*/
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>オブジェクト</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 <SCRIPT TYPE="text/javascript">
09 // Complex オブジェクト(プロパティ)
10 function Complex(a, b)
11 {
12 this.x = a;
13 this.y = b;
14 this.r = this.rep();
15 }
16 // Complex オブジェクト(メソッド add )
17 Complex.prototype.add = function(b)
18 {
19 let cp = new Complex(this.x + b.x, this.y + b.y);
20 return cp;
21 }
22 // Complex オブジェクト(メソッド rep )
23 Complex.prototype.rep = function()
24 {
25 let r = "(" + this.x + " , " + this.y + ")";
26 return r;
27 }
28 </SCRIPT>
29 </HEAD>
30 <BODY CLASS="white">
31 <H1 CLASS="center">新規オブジェクトの定義と利用</H1>
32 <SCRIPT TYPE="text/javascript">
33 let cp1 = new Complex(1, 2);
34 let cp2 = new Complex(3, 1);
35 let cpa = cp1.add(cp2); // cp2.add(cp1) でも同じ
36 document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.y + ")<BR>\n");
37 document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n");
38 </SCRIPT>
39 </BODY>
40 </HTML>
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>クラス</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08 <SCRIPT TYPE="text/javascript">
09 // クラス Complex
10 class Complex {
11 static name = "Complex Number";
12 #y = 0;
13 // コンストラクタ
14 constructor(a, b)
15 {
16 this.x = a;
17 this.#y = b;
18 this.r = this.rep();
19 }
20 // メソッド add
21 add = function(b)
22 {
23 let cp = new Complex(this.x + b.x, this.#y + b.#y);
24 return cp;
25 }
26 // メソッド sub
27 static sub = function(a, b)
28 // static sub = function(b)
29 {
30 let cp = new Complex(a.x - b.x, a.#y - b.#y);
31 // alert("name: " + this.name + " x: " + this.x); // x に対しては,undefined
32 // let cp = new Complex(this.x - b.x, this.#y - b.#y);
33 return cp;
34 }
35 // メソッド rep
36 rep = function()
37 {
38 let r = "(" + this.x + " , " + this.#y + ")";
39 return r;
40 }
41 }
42 // クラス Real
43 class Real extends Complex {
44 static name = "Real Number";
45 // コンストラクタ
46 constructor(a)
47 {
48 super(a, 0);
49 this.r = this.rep();
50 }
51 // メソッド rep
52 rep = function()
53 {
54 return this.x;
55 }
56 }
57 </SCRIPT>
58 </HEAD>
59 <BODY CLASS="white">
60 <H1 CLASS="center">クラスの定義と利用</H1>
61 <SCRIPT TYPE="text/javascript">
62 // Complex
63 document.write(" ***" + Complex.name + "***<BR>\n");
64 let cp1 = new Complex(1, 2);
65 let cp2 = new Complex(3, 1);
66 let cpa = cp1.add(cp2); // cp2.add(cp1) でも同じ
67 let cps = Complex.sub(cp1, cp2);
68 // document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.#y + ")<BR>\n"); // エラー
69 document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n");
70 document.write(cp1.r + " - " + cp2.r + " = " + cps.r + "<BR>\n");
71 // Real
72 document.write(" ***" + Real.name + "***(Complex.name: " + Complex.name + ")<BR>\n");
73 let re1 = new Real(10);
74 let re2 = new Real(20);
75 let rea = re1.add(re2); // re2.add(re1) でも同じ
76 let res = Real.sub(re1, re2);
77 document.write(re1.r + " + " + re2.r + " = " + rea.x + "<BR>\n");
78 document.write(re1.r + " - " + re2.r + " = " + res.x + "<BR>\n");
79 </SCRIPT>
80 </BODY>
81 </HTML>
01 <!DOCTYPE HTML>
02 <HTML>
03 <HEAD>
04 <TITLE>変数の有効範囲(スコープ)</TITLE>
05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07 <SCRIPT TYPE="text/javascript">
08 /****************************/
09 /* 変数の有効範囲(スコープ) */
10 /* coded by Y.Suganuma */
11 /****************************/
12
13 str = "";
14 z = 30;
15
16 /************************/
17 /* オブジェクト Example */
18 /************************/
19 function Example() { // class Example {
20 this.x = 1000; // constructor() { this.x = 1000; }
21 }
22
23 Example.prototype.sub = function() { // sub = function() {
24 str += "sub member( x ) " + this.x + "\n";
25 }
26
27 /************/
28 /* 関数 run */
29 /************/
30 function run() {
31 // ブロック
32 let x = 10;
33 var a = 100;
34 if (x > 5) {
35 // str += "then block x " + x + "\n"; // 許されない
36 str += "then block a " + a + "\n";
37 let x = 15;
38 if (x > 7) {
39 let x = 20; // OK
40 str += "then block block x " + x + "\n";
41 }
42 var a = 200;
43 let b = -100;
44 var y = 20;
45 str += "then block x " + x + "\n";
46 str += "then block a " + a + "\n";
47 str += "then block b " + b + "\n";
48 str += "then block y " + y + "\n";
49 }
50 else {
51 str += "else block x " + x + "\n";
52 str += "else block a " + a + "\n";
53 x = -15;
54 str += "else block x " + x + "\n";
55 }
56 // let x = 100; // 許されない
57 // var a = 300; // 許される
58 // str += "w " + w + "\n"; // 許されない
59 sub();
60 str += "w " + w + "\n"; // グローバル変数
61 str += "x " + x + "\n";
62 str += "a " + a + "\n";
63 // str += "b " + b + "\n"; // 許されない
64 str += "y " + y + "\n"; // ブロック内の定義が有効
65 // 最初の x が 1 の時は undefined
66 // オブジェクト
67 let ex = new Example();
68 ex.sub();
69 str += "member( x ) " + ex.x + "\n";
70 //
71 // 結果の設定
72 //
73 document.getElementById("tx").value = str;
74 }
75
76 /************/
77 /* 関数 sub */
78 /************/
79 function sub()
80 {
81 // str += " sub x " + x + "\n"; // 許されない
82 let x = 40;
83 str += " sub x " + x + "\n";
84 str += " sub z " + z + "\n"; // グローバル変数
85 w = 50;
86 }
87 </SCRIPT>
88 </HEAD>
89 <BODY STYLE="font-size:130%">
90 <P STYLE="text-align:center">
91 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
92 <TEXTAREA TYPE="text" ID="tx" COLS="30" ROWS="10" STYLE="font-size: 100%"></TEXTAREA>
93 </P>
94 </BODY>
95 </HTML>
01 x = 10;
02 function run() {
03 alert(x); // undefined
04 var x = 20;
05 alert(x);
06 var x = 30;
07 alert(x);
08 // let x = 40; // 定義済みエラー
09 ・・・・・
10 }
01 x = 10;
02 function run() {
03 // alert(x); // 未定義エラー
04 let x = 20;
05 alert(x);
06 // let x = 30; // 定義済みエラー
07 // var x = 30; // 定義済みエラー
08 }
01 x = 10;
02 function run() {
03 alert(x);
04 x = 20;
05 alert(x);
06 }
// 32 行目の x が 10 のとき 35 then block a 100 39 then block block x 20 44 then block x 15 45 then block a 200 46 then block b -100 47 then block y 20 82 sub x 40 83 sub z 30 59 w 50 60 x 10 61 a 200 63 y 20 // 32 行目の x が 1 のとき 50 else block x 1 51 else block a 100 53 else block x -15 82 sub x 40 83 sub z 30 59 w 50 60 x -15 61 a 100 63 y undefined
sub member( x ) 1000 member( x ) 1000
, (多次元:
)

| 情報学部 | 菅沼ホーム | 目次 | 索引 |