前回、プログラミング言語の重要な概念として、変数、定数、演算子を説明しました。
今回説明するのは、次の2つです。
プロシージャとは、処理の集まりのことです。何度も出てくる処理を毎回記述する代わりに、プロシージャとしてまとめておきます。こうしておくと、必要な時にそのプロシージャを「呼び出す」だけです。
同じ内容を何度も記述する手間を省いたり、ファイルサイズを小さくするというメリットがあります。また、処理の内容に間違いがあった場合、プロシージャを使っていると修正する箇所が1ヶ所で済みます。
Visual Basicでは、プロシージャとして2種類あります。SubプロシージャとFunctionプロシージャです。Subプロシージャは純粋に処理の集まりですが、Functionプロシージャは呼び出し側に演算結果など、何か値を返したい時につい買います。
それぞれの記述は、次の通りです。
<適用範囲> Sub <プロシージャ名>(引数, ...)
〜 プロシージャの中身 〜
End Sub<適用範囲> Function <プロシージャ名>(引数, ...) As <型>
〜 プロシージャの中身 〜
' Function内の任意の場所に必要なだけ記述します
<プロシージャ名> = <返したい値>
End Function
SubプロシージャもFunctionプロシージャも、同様に任意の処理を記述できますが、Functionプロシージャは、呼び出し側に返したい値をプロシージャ名と同じ名前の変数に代入しなければなりません。この代入は必要ならば、何ヶ所で実行してもかまいません。制御構文を使って、条件によって異なる値を返すことも出来ます。
なお、Functionプロシージャにおいて、プロシージャ名と同じ名前の変数は自動的に用意されるので、Dim文で宣言する必要はありませんし、してはいけません。
制御構文とは、コードの実行順序を制御するためのものです。特に指定しなければ(制御構文が内部分は)、コードは上の行から下の行に向かって順に実行されます。特定の条件によってこの流れを変更するのが、制御構文なのです。
Visual Basicに限らず、ほとんどのプログラミング言語には3種類の制御構文があります。判断、分岐、繰り返しの3つです。
判断とは、「もし〜ならば〜する」という条件で処理を分けることです。あまりいい例えではありませんが、60点以上ならば合格、60点未満ならば不合格というように条件ごとに処理を変える場合に使います。
VBScriptでは、
If 条件 Then 処理A Else 処理B
または、
If 条件 Then 処理A Else 処理B End If
のように書きます。条件にあう場合に処理Aを実行し、あわない場合に処理Bを実行します。上の例でいうと、
If nScore >= 60 Then strJudge = "合格" Else strJudge = "不合格" End If
のような感じです。複数の判定が必要な時は、ElseIfと記述することができます。
If nScore >= 60 Then strJudge = "A" ElseIf nScore >= 30 Then strJudge = "B" Else strJudge = "C" End If
また、条件にあわない時は何もしなくていいのであれば、Elseと処理Bはなくてもかまいません。
分岐は、ある物の状態によって処理を振り分けることを言います。
自動販売機を思い出してください。コーヒーのボタンが押されたらコーヒーを出して、オレンジジュースのボタンが押されたらジュースを出して、・・・という処理です。
VBScriptでは次のように書きます。
Select Case 数式 Case 条件A 処理A Case 条件B 処理B Case Else 処理その他 End Select
条件の数が多いときには、「Case 条件」を増やすことができます。Case Elseは、列挙したすべての条件にあわない時に実行されます。そのような処理が必要ない時は、Case Elseと処理その他はなくてもかまいません。
繰り返しは、決められた回数またはある条件が成立している間、同じ処理を繰り返すことを言います。
例えば、野球で9回が終わるまで攻撃と守備を繰り返すのと同じです。スポーツによっては、時計がある時間(制限時間)を過ぎるまでゲームが続くというものもありますが、これも一種の繰り返しと考えられます。
VBScriptでは、以下の繰り返し制御が可能です。
ある条件が成立している間繰り返す場合(1)
Do While 条件 処理 Loop
ある条件が成立している間繰り返す場合(2)
Do 処理 Loop While 条件
ある回数繰り返す場合
For 回数指定 To 上限 Step カウンタの幅 処理 Next
最初の二つの違いは、一番目の場合は条件によっては一度も処理を行わないことがあるのに対して、二番目の場合は必ず一度は処理を行う(始めから条件にあっていないとしても)ということです。Whileの代わりにUntilを使うと、ある条件が成立するまで(条件が成立しない間)繰り返すようにするできます。
回数指定の場合は、カウンタの幅が1ならばStep以降を省略できます。
例えば、このように記述します。
Do While nCount <= 10 処理 Loop Do 処理 Loop Until nCount > 10 For nCount = 1 To 10 Step 2 処理 Next
Visual Basicの文法の基本は、これで終了です。あとは、実際にプログラムを作成しながら、勉強していくことにしましょう。
その前に、作成するプログラム、電卓についてきちんと把握しておくことが必要です。そこで次回は、仕様の作成です。
瀬尾佳隆 (webmaster@seosoft.net) |