CGIはPerl,sh,Cなどをプログラムをサーバー内に置いて実行されるので,サ ーバーやUNIXの知識が必要であるため,利用するには作成者に多くの負担がかか る。セキュリティーホールになり得ることから多くのサーバーでCGIの利用を禁 止されているなど問題点も多い。
JavaScriptはHTMLドキュメントの中にテキストファイルとして埋め込まれ,解 釈実行するのはクライアント側のブラウザーである。このためネットワークにつ ながなくても実行でき,とりあえずブラウザーとエディターだけで開発に取り掛 かるこどが可能であり。特定なCPUやOSに依存しないことなどの特長がある。
JavaもまたCPUやOSに依存しないインタラクティブなホームページを作成する ことが出来る言語であるが,特別な開発環境が必要なこと,本格的なオブジェク ト指向言語であることから,簡単に自分のホームページに取り込むには難しい言 語である。
以上ように,JavaScriptは普通のエンドユーザーがインタラクティブなホーム ページを作る上で最も適したプログラム言語と思われる。
f(x)=sin(x)-0.5 A=0 B=1実行している。(方程式sin(x)=0.5(0<x<1)を解
く)
<!-- 2bunfr.htm --> <HTML> <HEAD> <TITLE>frame</TITLE> </HEAD> <FRAMESET COLS="40%,*"> <FRAME SRC="2bun.htm" NAME="jWin" SCROLLING="y"> <FRAME SRC="dummy.htm" NAME="Result"> </FRAMESET> </HTML>
<!-- 2bun.htm --> <HTML> <HEAD> <TITLE>JavaScript AND Math 1 </TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- HIDE FROM OTHER BROWSER var FX; var A,B,C,x; function set(f){ FX=f.fx.value; A=eval(f.a.value); B=eval(f.b.value); } function F(A){ var Y; x=A; with (Math) { Y = eval(FX); } return Y; } function display(r) { r.document.write("<TR ALIGN='right'>"); r.document.write("<TD>",A ,"</TD> <TD>",B," </TD> <TD>" ,C,"</TD>"); r.document.writeln("</TR>"); r.document.writeln("<TR> </TR>"); r.document.writeln("<TR> </TR>"); } function check(A,B) { if ( F(A) * F(B) > 0 ) { alert("A,Bの選びかたが間違っています"); return 1; } return 0; } function main(f){ var I; set(f); if ( check(A,B)==0 ) { r=parent.Result; r.document.writeln("<HTML>"); r.document.writeln("<BODYB GCOLOR='#000000' TEXT='#FFFF00' >"); r.document.writeln("<H1>結果</H1>"); r.document.writeln("<TABLE>"); for( i=1; i >0 ; ){ C = (A+B)/2; if (Math.abs(A-C)< 0.00001 ) { break; } if ( F(A)*F(C) > 0 ) { A = C; } else { B = C; } display(r); } r.document.writeln("</TABLE>"); r.document.writeln("<BR> <BR>"); r.document.writeln("</BODY>"); r.document.writeln("</HTML>"); r.close(); } }// STOP HIDING FROM OTHER BROWSER --> </SCRIPT> </HEAD> <BODY BGCOLOR="#000000" TEXT="#FFFF00" LINK="#FF0000" > <H1> 2分法</H1> <H4>2分法で方程式f(x)=0の解を求めます。<p> 下を入力してからボタンを押して下さい。 </H4> <FORM name="gauss.form"> f(x)=<INPUT TYPE="text" name="fx" SIZE="20" > <p> A=<INPUT TYPE="text" name="a" SIZE="4" > <p> B=<INPUT TYPE="text" name="b" SIZE="4" > <p> f(A)f(B)<0となるようにA,Bを選んで下さい。<P> <INPUT TYPE="button" name="bu" VALUE="Calc" onClick="main(this.form)"> </FORM> </BODY> </HTML>
<!-- dummy.htm --> <HTML> <HEAD> <TITLE>Result</TITLE> </HEAD> <BODY BGCOLOR="#000000" TEXT="#FFFF00" LINK="#FF0000" VLINK="#800000" ALINK="#000080"> <H1> ここに結果が表示されます</H1> </BODY> </HTML>
このように最初の値だけで自動的に実行させるのではなく,生徒自身に途中の 判断(2分法ならば,次にどの値をA,Bとするか)させるなど改良も考えられる。
これらは,http://server.bshs.gakushuin.ac.jp/math.htmで公開する予定であ る。
(実践者 学習院高等科 町田規雄)