IF文を制する者はBASICを制す

PART 1 IF〜THEN〜の動作の基本について


 BASICで処理速度を上げるためにはできるだけ論理式などを使い、IF文を使わないようにした方がいいと思っている人も多いと思います。しかし、果たしてそれは本当なのでしょうか?
 そのためには、IF文がどのようなものをよく知る必要があります。
 では、最初にIF文がどのように動作しているのかを考えてみましょう。IF(条件式)THEN(実行文)はどのような時にTHEN以下の(実行文)が実行されるのでしょうか。条件式が成立する場合にTHEN以下の実行文が実行されると思っている人が多いことでしょう。しかし、それは厳密に言うと正しくはないのです。
 例えば次のIF文を見てください。

 IF A=1 THEN BEEP 4

 これはどういう場合にTHEN以下(BEEPが鳴る)が実行されるかというと言われなくても分かるようにA=1が成立する場合(つまりAの値が1の場合)ですね。
 それならば、次のIF文はどうでしょう?

 IF A THEN BEEP 4

「条件式が成立した時にTHEN以下が実行される」と思っている人であればイメージしにくいですが、Aの値が0以外になった場合となります。つまり、これはIF A<>0 THEN BEEP 4と同じになっているというわけです。

 では、これを踏まえてIF(条件式)THEN(実行文)というものを見てみるとここでの(条件式)というのは実は論理式と同じと考えることができます。(条件式)の条件を満たせば-1となり0以外になるためにTHEN以下が実行されます。上記をIF 9 BEEP 4に変更すると当然ながら9は0以外なので常にBEEPが鳴ります。
 これを使えば、A=1という条件式を反転させる場合は次のような方法でできます。

 IF 1+(A=1) THEN BEEP 4

 1+(A=1)という式はA=1の時に1+(-1)=0値が0のためTHEN以下は実行されず、A<>1の時は、1+0=1値が0以外のためにTHEN以下が実行されます。素直にIF文の条件式をA<>1とした方が速い上にメモリ節約もできますが、IF文において(条件式)の値が「0」「0以外」かでTHEN以下が実行されるかどうか決まるということを明確に理解するためには、こちらの方が都合が良いためです。

(条件式)の値が 0  ・・・・・ THEN以下が実行されない
(条件式)の値が0以外 ・・・ THEN以下が実行される

 これは基本なのでしっかり覚えておきましょう。

PART2に続く


PART 1 IF〜THEN〜の動作の基本について
PART 2 条件式の簡略化(基本編)
PART 3 IF文は論理式よりも速い!?
PART 4 IF文の簡略化(応用編)
PART 5 IF文の簡略化(実戦編)
PART 6 IF文を制するには・・・

RETURN

inserted by FC2 system