2023.5.11
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第21回]



●IF THEN ELSE

すでに説明しましたように論理式は多くIF文の条件文として使われます。
ということで今回はIF文の簡単な例を見本として使ってみます。
IF文は
IF 条件式 THEN 実行文1 ELSE 実行文2
の形をしています。
実行文1は条件式の結果が1(真)のときに実行されます。
実行文2は条件式の結果が0(偽)のときに実行されます。
実行文1、実行文2は:(コロン)を用いて複数の文を記述することができます。

簡単なプログラム例とその実行結果です。

条件(a>b)が1(真)の場合のプログラム例です。

下は逆に条件(a<b)が0(偽)の場合のプログラム例です。


ELSE以下は必要がなければ書かなくても構いません。

ELSEがないと条件が満たされないときはすぐに次の行が実行されることに注意してください。
このプログラムでは条件が0(偽)のときにxの値は信用できませんから欠陥プログラムです。

下はそれを修正した例です。

この場合には条件が満たされない場合でも正しい結果が得られます。

THENも省略可能です。

このプログラムも条件が満たされない場合にxに値が入りませんから欠陥プログラムです。
少し上のほうで説明したのと同じです。
ここでは悪いプログラムの例としてこのまま残しておきます。

THENもELSEも省略できますがELSEだけ残してTHENだけを省略することはできません。

40行の文をコンパイラは理解できません。
エラーメッセージを表示してコンパイルを中止します。
この場合的確なエラーメッセージが表示されないかもしれません。

ELSEもTHENも省略してしまって実行文としてGOTO文を書くと IF…GOTO の形になります。
その使用例です。

この形はシンプルでFOR NEXTの代用としてよく使われます。
参考までに同じ内容のプログラムをFOR NEXTを使って書いてみました。

コンパイルされたあとのマシン語プログラムは両者で異なりますが同じ働きをするプログラムになります。

それも参考までに。
コンパイルされたマシン語プログラムリストです。
左がbsift16.list(IF GOTO)で右がbsfnt1.list(FOR NEXT)です。


PICBASICコンパイラ[第21回]
2023.5.11upload

前へ
次へ
ホームページトップへ戻る