11.Visual Basic
Visual Basicとは、オリジナルのBasicをさらに発展させたものでMicrosoft Windows用のアプリケーションを短時間で簡単に作成できるプログラミング言語です。Visual Basicの“Visual”とは、グラフィカルユーザーインターフェイス(GUI)を“ビジュアル”に作成できることを意味し初めてプログラミングをする方でもわずか数個のキーワードを覚えるだけで有効なアプリケーションを開発することができます。本章では、Visual Basicの操作を学び科学技術計算の基礎を修得することを目的としています。
11.1 Visual Basicの基本操作
はじめに、
Visual Basic(以下VBと略)の基本操作について説明しましょう。本章ではVBのバージョン6.0で説明して行きます。スタートボタンから
[プログラム(P)]-[Microsoft Visual Basic 6.0]の順で選択し、[Microsoft Visual Basic 6.0]をクリックし起動します。(図-11.1)「新しいプロジェクト」の選択を行います。ここでは、[標準EXE]を選択し、<開く>ボタンをクリックします。(図-11.2)
図-11.1 図-11.2
VB
を起動すると、図-11.3の画面が表示されます。それぞれの名称と役割を以下に示します。
@メニューバー
コマンドのメニューが表示されています。
Aツールバー
メニューの中で、とくによく使われるコマンドが、アイコン形式で表示されています。
Bツールボックス
VB
で使用する標準コントロールが配置されています。Cフォームデザイナ
コントロールを位置して、アプリケーションのウィンドウをデザインします。
Dプロジェクトエクスプローラ
プロジェクトを構成するファイルの一覧を示します。プロジェクトはVBのアプリケーションを統括するものです。
Eプロパティウィンドウ
フォームやフォーム上に配置されたコントロールのプロパティ(設定値)が表示されます。
Fフォームレイアウトウィンドウ
実行時にフォームを画面上のどの位置に表示するかを示します。
図-11.3 図-11.4
プログラムを製作するには、メニューバーから
[表示(V)]-[コード(C)]を選択します。図-11.4のダイアログウィンドウが表示されますのでそこにプログラム(Basicコード)を入力します。入力が大文字でも小文字でも内容がVBの管理している
Basicコードなら、書き出しが大文字に、それ以降は小文字に自動的に変換されます。また、「,」「=」などの記号の前後には自動的にスペースが挿入されます。図
11.5のように入力途中で表示されるBasicの予約コード一覧の中から選択すると、正確な入力ができます。スペースバーで入力の決定となります。図
-11.511.2 Visual Basicによる統計計算
ある集団の数値データを読みこませて、平均値
(average)、分散(variance)、標準偏差(standard deviation)、最小二乗法による相関係数(correlation coefficient)を計算するプログラムを作成しよう。
Private Sub Form_Load()
'
変数宣言Dim n As Integer, i As Integer, j As Integer, k As Integer '---------(1a)
Dim x() As Single, y() As Single '-----------------------------------(1b)
Dim ave_x As Single, ave_y As Single
Dim sigma_x As Double, sigma_y As Double
Dim sigma_xx As Double, sigma_xy As Double
Dim var_x As Double, var_y As Double
Dim st_x As Double, st_y As Double
Dim a As Double, b As Double
Dim f_name As String
Dim c As Double, cc As Double
Visible = True
Caption = "toukei"
'
データ入力部分f_name = InputBox("input Filename") '--------------------------------(2a)
Open f_name For Input As #1 '----------------------------------------(2b)
Input #1, n, n '-----------------------------------------------------(2c)
ReDim x(n) '---------------------------------------------------------(1c)
ReDim y(n)
For i = 1 To (n) '---------------------------------------------------(3a)
Input #1, x(i), y(i)
Next i
'
最小自乗法による回帰直線式の計算For j = 1 To (n)
sigma_x = sigma_x + x(j)
sigma_y = sigma_y + y(j)
sigma_xx = sigma_xx + (x(j) * x(j))
sigma_xy = sigma_xy + (x(j) * y(j))
Next j
a = (sigma_xx * sigma_y - sigma_x * sigma_xy) / (n * sigma_xx - sigma_x * sigma_x)
b = (n * sigma_xy - sigma_x * sigma_y) / (n * sigma_xx - sigma_x * sigma_x)
'
平均値の計算ave_x = sigma_x / n
ave_y = sigma_y / n
'
標準偏差の計算For k = 1 To n
var_x = var_x + (x(k) - ave_x) ^ 2
var_y = var_y + (y(k) - ave_y) ^ 2
c = c + (x(k) - ave_x) * (y(k) - ave_y)
Next k
var_x = var_x / n
var_y = var_y / n
st_x = Sqr(var_x)
st_y = Sqr(var_y)
c = c / n
cc = c / (st_x * st_y)
Print "
計算結果" '---------------------------------------------------(4a)Print "X Average = "; Format(ave_x, "0.000")
Print "Y Average = "; Format(ave_y, "0.000")
Print "X Variance = "; Format(var_x, "0.000")
Print "Y Variance = "; Format(var_y, "0.000")
Print "X Standard Deviation = "; Format(st_x, "0.000")
Print "Y Standard Deviation = "; Format(st_y, "0.000")
Print "Correlation Coefficient = "; Format(cc, "0.000")
Print "Y = "; Format(a, "0.000"); "X + "; Format(b, "0.000") '------(4b)
Close '-------------------------------------------------------------(2d)
End Sub
平均,標準偏差,相関係数
入力データは,
EXCELのCSV形式(カンマ区切り)を使用します.そのときには,2列に同じ数だけデータを入力し,最初の行にはデータの行数を2列ともに入力してください.変数を宣言するときには
Dim関数を使用します.書式はDim
変数名 As 変数の型です.
(1a)変数名はVBで使われていない単語なら何でもOKです.変数の型は次の5つがよく使われます.また,連続して変数宣言をする場合は次のようにカンマで区切ったあと変数名から変数の型までを入力してください.
Dim
変数1 As 変数の型 , 変数2 As 変数の型行列の場合は,
Dim
変数名(行数) As 変数の型と入力すれば宣言できます.
(1b)ちなみに行数を後から指定したい場合には行数の部分は何も入力しないでください.(変数名()のように書く)行数が決まった場合にはReDim関数を使って宣言します.(1c)ReDim
変数名(行数)
まず,ファイル名を入力しましょう.最初にファイル名を入力するための変数を作っておきましょう.ここでは
f_name = InputBox(“Please Input Filename”)
これは
f_nameにインプットボックスに入力されたものを代入するという意味です.InputBoxの中の””で区切られた中身はインプットボックスに表示される文字です.ファイル名が入力できたら,次はファイルを開きます.
(2b)Open f_name For Input As #1
これは
f_nameというファイルを入力のために開き,ファイル番号は1番であるという宣言です.先ほど指定したf_nameの中身が実際には開かれます.Inputの部分はOutputでもかまいません.このときにはf_nameで指定されたファイルは出力用になります.#の後ろの数字は1〜265まで使うことができます.Open
したファイルからデータを入力するには,Input
ファイル番号, 関数名のように入力します.ファイル番号は
Openしたときの番号(ここでは#1)を入力します.一度のInputで1行読み込むため連続して読み込むときはカンマで区切りましょう.(2c)最後にプログラムの終わりの部分には
Close関数を書いておきましょう.(2d)これは,開いたファイルを閉じる命令です.なにも後ろに入力しない場合は全てのファイルを閉じます.後ろにファイル番号を書けば,そのファイルだけを閉じることができます.ループには回数を指定する
For〜Next文とひたすら繰り返すDo〜Loop文があります.ここでは,比較的簡単なFor〜Next文だけを使います.(3a)For
変数名 = 初期値 To 終了値,,,,,,
Next
変数名ここで使う変数,初期値,終了値は整数型を使いましょう.言葉で
For〜Next文を説明すると,変数名が初期値から1刻みで終了値になるまで,,,,,,の作業を繰り返すということです.ちなみにDo〜Loop文で同じ事をするためにはDo
変数名 = 変数名 + 1
,,,,,,
If
変数名 = 終了値 ThenExit Do
End If
Loop
となります.
Do〜Loop文はDoとLoopの間をひたすら繰り返すだけなので,条件を決めてやめさせなければなりません.そのためにIf文が必要になります.先ほどのIf文は,もし,変数名が終了値だったらExit Do(Doループから抜け出す)をしなさいという意味です.
計算が終わったら出力しなければ意味がありません.
VBで文字を出力するにはPrint文を使います.ただ文字だけを出力したい場合はPrint “
出力したい文字”のように書きます.
(4a)変数の中身を出力したい場合はと書けば出力できます.さらに,数字の桁数にこだわりたい場合には
Print Format(
変数名,”0.000”)と入力すれば,この例では小数点第
3位まで出力するよう指定できます.また,変数と文字など複数のものを1行で出力するにはセミコロンで区切ります.(4b)Print "Y = "; Format(a, "0.000"); "X + "; Format(b, "0.000")
11.3
プロジェクトを保存と実行
図
-11.6 図-11.7製作したプロジェクトを保存するには、メニューバーから
[ファイル(F)]-[名前を付けてプロジェクトの保存(E)]を選択します。すると、図-11.6のダイアログウィンドウが表示されますので、まずフォームの保存を行います。保存する場所(ドライブとフォルダ)を指定し、続いてフォーム名(********.frm)を入力して、[保存]ボタンを押します。デフォルトでフォーム名は「Form1.frm」となっています。次に、図-11.7のダイアログウィンドウが表示されます。ここでプロジェクトの保存を行います。保存する場所とプロジェクト名(********.vbp)を指定して、[保存]ボタンを押します。デフォルトでプロジェクト名は「project1.vbp」となっています。フォームやプロジェクトなどのファイル名は「test.frm」、「Test_1.vbp」のようにアルファベット、数字、アンダーバーを使いましょう。「フォーム.frm」、「例題1.vbp」のように日本語が入ったファイル名をつけると、不具合が生じる場合があります。
プロジェクトの実行は、メニューバーから[実行(R)]-[開始(S)]を選択します。また、単にF5キーを押しても、ツールバーの[開始]アイコンを押しても、実行できます。(図-11.8)
図-11.8 図-11.9
ここで、一度VBで製作したプログラムを実行してみましょう。まだコードは入力されていませんが、フォームが存在するので実行することは可能です。標準EXEを開いた直後の画面から実行すると、フォームが1つ表示されます。
この実行したプロジェクトを終了するには、メニューバーから[実行(R)]-[終了(E)]を選択してください。また、ツールバーの[終了]アイコンを押すか、フォーム左上の終了ボタンを押しても終了できます(図-11.9)。
VB
を終了するには、メニューバーから[ファイル(F)]-[Microsoft Visual Basicの終了]を選択します。保存されていないプロジェクトやフォームがあるときは、終了直前に保存するかどうかを尋ねてきますので指示に従ってください。
付属CD−ROMの内容(
Visual Basic関係)
参考文献
Microsoft Visual Basic
プログラミングガイド マイクロソフト社Microsoft Visual Basic
コンポーネントツールガイド マイクロソフト社Microsoft Visual SourceSafe
ユーザーガイド マイクロソフト社