情報学部 | 菅沼ホーム | 目次 | 索引 |
<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
情報学部 | 菅沼ホーム | 目次 | 索引 |