6.IF文(判断文)             [もくじへ] [トップページへ]

===================================================

プログラム例題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文(繰り返し文)          [もくじへ] [トップページへ]

7.1 その1

===================================================

プログラム例題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 になるまで繰り返します。つまり、この場合 n10 ですから、

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

        ・・・・・

のようにして、nkn の階乗が計算されていきます。

 

 


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 文の中に入れる文は、少し頭下げ(インデント)した方

が見やすくなります。

 

 


8.配列                   [もくじへ] [トップページへ]

8.1 その1(一次元配列)

===================================================

プログラム例題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

ij の二重ループになっています。外側の 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>" で一行分出力した

後、改行します。

 


[もくじへ] [トップページへ] [次ページへ]