今回は「プロシージャ」というのを扱います。 実際の話、プログラミングはプロシージャで成り立っていると言っても過言ではないほどプロシージャが使われています。 またこのプロシージャを使うことでよりファイルサイズの小さい、また効率的なプログラミングが組めるようになります。 ではこの章で「プロシージャ」を学習することでよりActiveBasicで実用的なプログラミングができるようになりましょう。
このプロシージャとはある複数の作業をブロック化し、プログラム中のどこからでも呼べるようにしたものです。 この説明だけでは分からないかもしれませんが、これを使えばプログラムをまとまった見やすいものにし、 また、プログラムを効率化することができます。 それではプログラムのかなめともいえるプロシージャの最初、Subブロックを早速はじめましょう。
'lesson1-3-1
#consoleDim a As Long Input "西暦を入力してください。",a ADtoGng(a) Sleep(3000) End Sub ADtoGng(ByVal a As Long)
Dim b As Long
EndSub
If a>=1989 Then
b=a-1988
ElseIf a>=1926 Then
Print "西暦";a;"年は平成";b;"年です。"
b=a-1925
Else
Print "西暦";a;"年は昭和";b;"年です。"
Print "西暦";a;"年の元号は面倒なので表示しません。"
EndIf
|
C:\ActiveBasicCourse\lesson1-3-1... |
西暦を入力してください。1988■ 西暦 1988 年は昭和 63 年です。 |
大正以前がないのは気にしないでください。 (いちいち調べるのが面倒。しかも明治以前になると数年おきに元号が変わるのでとてもプログラムできない。) で、実際にソースのほうを見てみると、Endの後にも書いてあるので変に感じたかもしれません。 この部分が「プロシージャ」です。 では実際に詳しくソースを見てみましょう。
-*-*-*-*-【説明】-*-*-*-*- |
---|
【使い方】
Sub プロシージャ名 (引数の種類 引数名 As 引数の型 ) command EndSub
【備考】
(1) ")" と"command "、"command "と"EndSub"の間には改行を入れます。
(2)「引数の種類 引数名 As 引数の型 」のかたまりは、「,」で区切ることによって括弧内に何個でも作れます。
またこのかたまりを書かずに"()"という風にすることも可能です。
(3)EndとSubの間は空けても空けなくてもOKです。
【意味】
引数を引数の種類 ・引数の型 である引数名で受け取り、command を実行するプロシージャ名 というサブルーチンを作ります。
【解説】
(1)概説 これ(サブルーチン)を含むプロシージャと呼ばれるものは言わば「プログラムのパッケージ」です。 つまり、このブロックをプログラム中のどこかに作っておけば、 プログラムのどこからでもこのパッケージを呼び出す、すなわちブロック内のcommand が実行できるのです。 これが何の役に立つの?と不思議に思うかもしれません。 しかしパッケージ化すれば……、
(2)プロシージャの置き方 プロシージャをプロシージャの中に置くことはできません (command の中にさらにSub〜EndSubを書くことはできないということです)。 しかしそれ以外の場所ならプログラム本体の前・後・途中のどこにでも置くことができます。
(3)プロシージャ名 ずばりそのブロックにつける名前です。 これは実際にそのプロシージャを呼び出すときに使います。 名前の付け方は変数の名前の付け方と同じですが、加えて以下の場合は使えません。
(4)引数 プロシージャを呼び出すときには、ついでにプロシージャに数字や文字列を与えることができます。 そしてプロシージャにはもらった数字や文字列に合わせた動作をさせることができます。 このプロシージャに渡す数字や文字列のことを引数と言います。 そしてプロシージャを作るときには、どんな引数をもらうかの準備をあらかじめさせる必要があります。 その準備が「引数の種類 引数名 As 引数の型 」のかたまりにあたるわけです。 「引数の種類 引数名 As 引数の型 」のかたまりは受け取る引数の数だけ準備します。 複数書くときや引数を受け取らないときの書き方は備考に書いています。 ちなみに後で書きますが、プロシージャを呼び出すときに引数はこのかたまりと同じ順番で書くようになります。 で、ここからは具体的なことを書きます。
【使い方】
プロシージャ名 (引数 )
【備考】
引数が複数必要な場合は「,」で区切って必要な数だけ書きます。また引数がいらない場合は引数を書かずに"()"のようにします。
【意味】
プロシージャ名 を呼び出します。
【解説】
(1)概説 実際にSubでサブルーチン(プロシージャの一種)を作っても、実際に使わなかったら意味がありません。 そこでここでは実際にどうやって呼び出して使うのかについて書きます。
(2)呼び出し方 呼び出し方は簡単です。 プログラムの中の使いたいところで、使いたいプロシージャの名前と、それに続く括弧の中にそのプロシージャに渡す引数を書けばいいだけです。
(3)引数
引数として数字や文字列を渡すときに知っておいてもらいたいことは次のとおりです。
【意味】
サブルーチンの中で変数の宣言を行うとローカル変数として扱われます。
【解説】
《ローカル変数》 これはサブルーチンなどプロシージャ内のみで使える変数のことです。 特徴は次のとおりです。
|
今回のサブルーチンはどうでしたか? まだよくわからなかったりするかもしれませんが、実際、プログラムのほとんどはプロシージャで成り立っています。 しっかり理解をしましょう。 また説明ばかりで頭がこんがらがってきたら実際に自分で簡単なプログラムを作って実験してみましょう。 こっちのほうが私のこむずかしい説明でイメージするよりも簡単に頭に入ると思います。 分からないことがあれば気軽に掲示板で質問してください。 ではお約束の「やってみよう」です。
-*-*-*-*- やってみよう -*-*-*-*- |
---|
2つの引数を受け取りその2つの和を表示するサブルーチンを作り、
実際にユーザーに2つの数字を入力してもらい、その2数の和を表示するプログラムを作ってみよう。
|