第15回 いつも心にカーソルを「2.分岐する」
|
|
15−2 分岐する
コンピュータがプログラムを実行する、特にBASICプログラムの場合、大抵の部分をランタイムが仲介して実行してくれますが、どちらにしてもプログラム側から見た場合には、同時には1つの事しか処理できません。 これは今のコンピュータの仕組み上、仕方がないことですが、それがあまりにも速すぎるため複数同時に動いているように見えるだけです。 同時に1つの動作しか出来ない、ということを言い換えてみるならば、プログラムとはランタイムが実行すべき『道筋』を書き綴ったものだと言えるのではないでしょうか? つまり、1つの処理をすべく、何者かがプログラムを指示通りに順に実行している訳です。 この道筋が、単なる直線道路だったら、それほど問題はありませんが、それでは複雑な処理が出来ませんので、何処か途中で『分かれ道』を用意しなければならない場合があります。 もし、分かれ道が用意できなければ、 「ここまでのデータをセーブしますか?(はい/いいえ)」 などと言う選択の余地はなくなってしまいますね。 このようにプログラム上には、何らかの分かれ道が必要になるのですが、そんなプログラムの『分岐点』を決める代表的なコマンドには、次の2種類が用意されています。 1つは「もし、ある条件が成り立つならば○○、そうでなければ××」という分岐点です。 ある意味、「YESかNOか」というような二者択一のようにも見えますが、むしろ『1対多』と考えた方が使いやすいでしょう。 ある条件が成り立てばA、そうでなければBを実行するという場合『If 〜 Then 〜 Else 〜 End if』というコマンドを使います。 書式は次の通りです。
先にも、If〜Thenは、二者択一というより、1対多になると説明しましたが、これは Elseの部分(Else節、と言います)を省略できるからです。
細かい話になりますが、BASICの歴史上、Else節が登場したのは、If〜Thenに比べてそれほど古くないため1対多のイメージが定着しています。 使う側から見れば、2つまでの条件だったら、Ifを使うと覚えておけば十分です。 Elseの有無に関わらず、Ifで始めて、End Ifで終わる、という基本的なルールを守っていれば、この構造を『入れ子』にすることも可能です。
ただ、見た目があまり「スマート」ではありませんので、『ElseIf』というコマンド(Else If、の場合も有)を搭載したBASICもあるようです。
基本的に、IfとEnd Ifが対になっているのですが、一見すると「このIfはどこまでが範囲なの?」と混乱する場合もあります。あまり複雑な条件分岐には Ifを使わないのが賢い選択です。 一方、多くの条件から1つを決めて分岐させたい場合がないわけでもありません。そんな複数の中から1つを選ぶ場合には『条件選択』の「Select Case〜End Select」を使うのが一般的です。 書式としては以下の通りで、Case Elseの部分は必要なければ省略することができます。
例えば、先ほどの If〜Thenで登場したサンプル、
いくつもボタンがあるPalmですが、Case節によってまとまっているので、それなりに見やすく、また、理解はしやすいですね。 もし、この部分をIf〜Thenで書いたら、とてもゴチャゴチャしたプログラムになることは、お分かり頂けると思います。
その場合、何らかの条件で分岐させる必要がありますが、それらを実現するため If〜Then〜End Ifと、Select Case〜End Selectの2種類のコマンドが用意されています。 それぞれの特徴と違いを理解して適切に使えるようにしましょう。 |
|||||||||||||
第15回 いつも心にカーソルを「2.分岐する」
|