===================================================
プログラム例題9
二次方程式 において、a
= 1, b = 4, c = 3 のときの
解をもとめよ。また、 a = 1, b = 3, c = 4 のときは虚数解となるが、判
別式 を求め、d <
0 のときは虚数解と表示せよ。
=========================================================
<HTML>
<HEAD>
<TITLE>例題9</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim a, b, c
dim d, x1, x2
' 入力データ
a = 1
b = 4
c =
3
' 判別式 d の計算
d =
b^2 - 4*a*c
' 解の判断と表示
document.write
"<br>"
If
d<0 Then
document.write
"虚数解"
Else
x1
= (-b + sqr(d))/(2*a)
x2
= (-b - sqr(d))/(2*a)
document.write
"x1=",x1,"<BR>"
document.write
"x2=",x2
End If
-->
</SCRIPT>
</BODY>
</HTML>
a = 1, b = 4, c = 3 のときの、実行結果は、次のようになります。
x1=-1
x2=-3
a = 1, b = 3, c = 4 のときの、実行結果は、次のようになります。
虚数解
二次方程式の解は、
です。
もし、√の中が負のときはエラーになります。これを回避するために
判別式を先に計算し、d<0
のときは虚数解と表示させる
のです。
If d<0 Then
document.write
"虚数解"
Else
x1 = (-b + sqr(d))/(2*a)
x2 = (-b - sqr(d))/(2*a)
document.write
"x1=",x1,"<BR>"
document.write
"x2=",x2
End If
判断文です。もし( If ) d<0 のときは、虚数解と表示します。そうでな
ければ( Else )、2つの解を計算しそれらを表示し、判断を終了( End
If )します。
条件判断の関係演算子には、次の6つがあります。
関係演算子 意味
> 大きい
< 小さい
>= 大きいか等しい
<= 小さいか等しい
= 等しい
<> 等しくない
Else の次に、別の条件を付けることもできます。
ElseIf 条件 Then
・・・・・
End If
のように書きます。このとき、Else と If の間に空白を置いてはいけま
せん。
また、次のように Else は省略できます。
If 条件 Then 〜
このとき、End If は必要ありません。
7.For文(繰り返し文) [もくじへ] [トップページへ]
===================================================
プログラム例題10
10の階乗(10!)を求めよ。
10! = 10×9×8×7×6×5×4×3×2×1
である。
=========================================================
<HTML>
<HEAD>
<TITLE>例題10</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim i, n, nk
' 入力データ
n =
10
' 計算
nk=1
For i = 1 to n
nk = nk*i
Next
document.write
"<BR>"
document.write n," の階乗 = ",nk
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
10 の階乗 = 3628800
For i = 1 to n
繰り返し実行される文
Next
For と Next にはさまれた文を、i の初期値を 1 にして、1 づつ増やし
ながら、n になるまで繰り返します。つまり、この場合 n が 10 ですから、
10 回繰り返します。
繰り返しをループともいいます。
普通の BASIC では、Next i のように Next の後ろに変数を書きますが、
VBScript では書いてはいけません。
nk = nk*i
nk に最初 1 が代入されていますので、
i = 1 のとき、nk = 1 * 1 = 1
i = 2 のとき、nk = 1 * 2 = 2
i = 3 のとき、nk = 2 * 3 = 6
i = 4 のとき、nk = 6 * 4 = 24
i = 5 のとき、nk = 24 * 5 = 120
・・・・・
のようにして、nk に n の階乗が計算されていきます。
7.2 その2(2重ループ) [もくじへ] [トップページへ]
===================================================
プログラム例題11
次のような表を作れ。
i j
1 1
1 2
2 1
2 2
3 1
3 2
=========================================================
<HTML>
<HEAD>
<TITLE>例題11</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim i, j
' 表示
document.write
"<BR>"
document.write
" i j","<BR>"
document.write
"<BR>"
For i = 1 to 3
For j = 1 to 2
document.write i, " ",
j, "<BR>"
Next
document.write
"<BR>"
Next
document.write
"<BR>"
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
i j
1 1
1 2
2 1
2 2
3 1
3 2
For
i = 1 to 3
For j =
1 to 2
document.write
i, " ",
j, "<BR>"
Next
document.write
"<BR>"
Next
i のループの中に j のループが入った入れ子の構造になっています。
このプログラムでは For 文が2重になっているので、2重ループといい
ます。
i = 1 のまま、j = 1
j = 2
i = 2 のまま、j = 1
j = 2
i = 3 のまま、j = 1
j = 2
i が 3 回繰り返す間に、j はそれぞれ 2 回繰り返します。
このように、For 文の中に入れる文は、少し頭下げ(インデント)した方
が見やすくなります。
===================================================
プログラム例題12
次の10個のデータの、合計と平均をもとめよ。
123.43, 123.48, 123.42, 123.40, 123.44
123.41, 123.49, 123.45, 123.47, 123.46
=========================================================
<HTML>
<HEAD>
<TITLE>例題12</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim i, n, s, av
dim d(10)
' 入力データ
n =
10
d(1)=123.43
d(2)=123.48
d(3)=123.42
d(4)=123.40
d(5)=123.44
d(6)=123.41
d(7)=123.49
d(8)=123.45
d(9)=123.47
d(10)=123.46
' 計算
s =
0
For i = 1 to n
s = s + d(i)
Next
av = s/n
document.write
"<BR>"
document.write "合計
= ",s
document.write
"<BR>"
document.write "平均
= ",av
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
合計 = 1234.45
平均 = 123.445
dim d(10)
配列とは、添え字のついた変数のことです。添え字が一個の配列を一次
元配列といいます。配列を用いるにはあらかじめ、いくつ用いるかの宣言
をしなくてはなりません。この場合 d(0) 〜 d(10) まで11個の変数が使え
るようになります。ここでは、d(0) は使用していません。
s = 0
VBScriptでは、変数の宣言をするとデータはクリアされ、数値変数の場合
0 になるのですが、安全のため合計する変数 s に初期値として 0 を代入
しておきます。
For
i = 1 to n
s = s +
d(i)
Next
配列の便利なところは、一つの変数名で多くのデータが扱えるということ
と、添え字に変数が使えるということです。
s = s + d(1), s = s + d(2), ・・・ などとデータの個数の数だけ書かなけ
ればならないところを、このように For 文と組み合わせてわずか3行で書
けます。データの個数がこれ以上になっても同じ行数で済みます。
s = s + d(i) は d(i) の合計のプログラムです。よく使われますので次の
表で理解しておきましょう。
i d(i) s(旧) + d(i) = s(新)
1 123.43 0 + 123.43 = 123.43
2 123.48 123.43 + 123.48 = 246.91
3 123.42 246.91 + 123.42 = 370.33
av = s/n
合計をデータの個数 n で除して、平均を求めます。
8.2 その2(二次元配列) [もくじへ] [トップページへ]
===================================================
プログラム例題13
次の行列AとBの和をもとめよ。
=========================================================
<HTML>
<HEAD>
<TITLE>例題13</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim i, j, n, m
dim a(3,3),
b(3,3), c(3,3)
' 入力データ
n =
3
m =
3
a(1,1)=3
a(1,2)=6
a(1,3)=9
a(2,1)=2
a(2,2)=4
a(2,3)=4
a(3,1)=6
a(3,2)=3
a(3,3)=5
b(1,1)=4
b(1,2)=3
b(1,3)=6
b(2,1)=0
b(2,2)=6
b(2,3)=8
b(3,1)=3
b(3,2)=7
b(3,3)=2
' 計算
For i = 1 to n
For j = 1 to m
c(i,j)=a(i,j) + b(i,j)
Next
Next
' 表示
document.write
"<BR>"
For i = 1 to n
For j = 1 to m
document.write c(i,j),
" "
Next
document.write
"<BR>"
Next
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
7 9 15
2 10 12
9 10 7
dim a(3,3), b(3,3), c(3,3)
3行3列の二次元配列 a, b, c を宣言します。配列は、この例題のような
行列計算でよく用います。測量でも、観測方程式の厳密解を求める計算
などに応用できるでしょう。
a, b, c には、それぞれ 3×3 = 9 個(0行と0列を含めると16 個)のデータ
を格納できます。
For
i = 1 to n
For j =
1 to m
c(i,j)=a(i,j)
+ b(i,j)
Next
Next
i と j の二重ループになっています。外側の i のループは行のループで、
内側の j のループは列のループです。順に追いかけてみると、次のよう
になります。
i = 1 で j = 1 のとき c(1,1) = a(1,1) + b(1,1)
j = 2 のとき c(1,2) = a(1,2) + b(1,2)
j = 3 のとき c(1,3) = a(1,3) + b(1,3)
i = 2 で j = 1 のとき c(2,1) = a(2,1) + b(2,1)
j = 2 のとき c(2,2) = a(2,2) + b(2,2)
j = 3 のとき c(2,3) = a(2,3) + b(2,3)
i = 3 で j = 1 のとき c(3,1) = a(3,1) + b(3,1)
j = 2 のとき c(3,2) = a(3,2) + b(3,2)
j = 3 のとき c(3,3) = a(3,3) + b(3,3)
For
i = 1 to n
For j =
1 to m
document.write
c(i,j), " "
Next
document.write
"<BR>"
Next
配列 c を画面出力させていますが、c(i,j) の後の " " は、数値間にスペ
ースをとるためです。また、document.write "<BR>" で一行分出力した
後、改行します。