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.5

11.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

 

平均,標準偏差,相関係数

入力データは,EXCELCSV形式(カンマ区切り)を使用します.そのときには,2列に同じ数だけデータを入力し,最初の行にはデータの行数を2列ともに入力してください.

  1. 変数宣言

変数を宣言するときにはDim関数を使用します.書式は

Dim 変数名 As 変数の型

です.(1a)変数名はVBで使われていない単語なら何でもOKです.変数の型は次の5つがよく使われます.

また,連続して変数宣言をする場合は次のようにカンマで区切ったあと変数名から変数の型までを入力してください.

Dim変数1 As 変数の型 , 変数2 As 変数の型

行列の場合は,

Dim 変数名(行数) As 変数の型

と入力すれば宣言できます.(1b)ちなみに行数を後から指定したい場合には行数の部分は何も入力しないでください.(変数名()のように書く)行数が決まった場合にはReDim関数を使って宣言します.(1c)

ReDim 変数名(行数)

 

  1. データ入力
  2. まず,ファイル名を入力しましょう.最初にファイル名を入力するための変数を作っておきましょう.ここではf_nameとしておきます.(2a)

    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で指定されたファイルは出力用になります.#の後ろの数字は1265まで使うことができます.

    Openしたファイルからデータを入力するには,

    Input ファイル番号, 関数名

    のように入力します.ファイル番号はOpenしたときの番号(ここでは#1)を入力します.一度のInput1行読み込むため連続して読み込むときはカンマで区切りましょう.(2c)

    最後にプログラムの終わりの部分にはClose関数を書いておきましょう.(2d)これは,開いたファイルを閉じる命令です.なにも後ろに入力しない場合は全てのファイルを閉じます.後ろにファイル番号を書けば,そのファイルだけを閉じることができます.

  3. ループ
  4. ループには回数を指定するForNext文とひたすら繰り返すDoLoop文があります.ここでは,比較的簡単なForNext文だけを使います.(3a)

    For 変数名 = 初期値 To 終了値

    ,,,,,,

    Next 変数名

    ここで使う変数,初期値,終了値は整数型を使いましょう.言葉でForNext文を説明すると,変数名が初期値から1刻みで終了値になるまで,,,,,,の作業を繰り返すということです.ちなみにDoLoop文で同じ事をするためには

    Do

    変数名 = 変数名 + 1

    ,,,,,,

    If 変数名 = 終了値 Then

    Exit Do

    End If

    Loop

    となります.DoLoop文はDoLoopの間をひたすら繰り返すだけなので,条件を決めてやめさせなければなりません.そのためにIf文が必要になります.先ほどのIf文は,もし,変数名が終了値だったらExit DoDoループから抜け出す)をしなさいという意味です.

     

  5. データの出力

計算が終わったら出力しなければ意味がありません.VBで文字を出力するにはPrint文を使います.ただ文字だけを出力したい場合は

Print “出力したい文字

のように書きます.(4a)変数の中身を出力したい場合は

Print 変数名

と書けば出力できます.さらに,数字の桁数にこだわりたい場合には

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関係)

  1. 四則演算
  2. 台形の面積計算
  3. 三角関数の表示(フォーム出力型)
  4. 三角関数の表示(ダイレクト出力)
  5. 平均、分散、標準偏差、相関係数の計算
  6. 静定梁のせん断力、モーメントの計算
  7. ニュートンラプソンによる非線形方程式の解法

 

参考文献

Microsoft Visual Basic プログラミングガイド     マイクロソフト社

Microsoft Visual Basic コンポーネントツールガイド  マイクロソフト社

Microsoft Visual SourceSafeユーザーガイド      マイクロソフト社