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


PICBASICコンパイラ

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

[第18回]



●論理演算

前回は四則計算について説明しました。
今回は論理演算です。
論理演算は別名ブール代数というそうです。
もうその名前だけで頭が痛くなってしまいそうな計算法です。
四則計算は小学校の算数でしたがブール代数は高校の数UBだったか数Vだったかで出てきたように記憶しています。
確か集合とか命題とかなんやらよくわからん数学でした。
論理演算は真と偽、YESとNOの世界です。
極めて単純シンプルな1と0だけの計算なのですが理解を悩ましくするのはそこにAND、OR、NOTの組み合わせが入ってくることです。
単純な組み合わせならまあ理解できるのですがANDとORが混じりあうとよくわからなくなってしまいます。
その点からするととにかく1と0しかない計算ですからコンピュータの最も得意とする世界だといえます。
逆に10進数の計算はコンピュータにとってはなかなかに手間のかかる計算です。
人間の得手不得手を見事に補完しているように思えます。
さてその論理演算ですがBASICプログラムでは一般的に数値の大小を判定するIF文の中で使われます。
IF文の条件式の多くは2数の大小を判別するだけのものですが少し複雑な条件ではそこにAND、ORが使われます。
ということで今回はまずはPICBASICコンパイラの2数の大小判定についてのところを説明します。
2数を比較するには次の関係演算子を使います。

A>B AはBよりも大きい
A>=B AはBよりも大きいか等しい
A<B AはBよりも小さい
A<=B AはBよりも小さいか等しい
A=B AはBと等しい
A#B または A<>B AはBと異なる

A、Bには変数、定数のほか計算式も使うことができます。
条件通りのときに結果の値は1になり条件通りではないときに結果の値は0になります。
以下はテストのために作ったサンプルプログラムとその実行結果です。

最初は小手調べということでa>bのテストです。

a=5でb=3のときにxの値はa>bの判定結果が入りますからxは1になります。
プログラムを実行した結果はその通りになっています。

今までデバッグのためのテスト用のメッセージを外したデモ版を作って当記事用にはそれを使ってきたのですが毎日のようにPICBASICコンパイラについて追加修正や訂正、改変作業をしていますのでそのたびにデモ版を用意するのが負担になってきました。
ですからこれからはデモ版ではなくて現在デバッグ中のPICBASICコンパイラをそのまま使うことにしました。
画面中にそのための表示も出たりしてちょいとわずらわしいところもありますがそのようにご理解願います。

本番用の表示としてもいろいろ工夫改良をしています。
writing..
はコンパイル後のマシン語コードをPICに書き込んでいることを示す表示です。
.1個が32バイトを示します。

上記に加えてa>=b、a<bも追加しました。

この例ではa>=bはa>bと同じく結果は1になります。
a<bについては結果は0になります。

今度はaとbの値を入れ替えたうえであらためてa<bとa<=bとa<>bのテストです。

a<b、a<=bは真(1)、a<>bも真(1)になります。

今度はa=b=5にしたうえでa=b、a#b、a<>bのテストです。

a=5、b=5ですからa=bは真(1)ですがa#b、a<>bは偽(0)になります。
30行はこれでよいのか?と疑問に思われるかもしれませんがそう思うのは人間だからで機械(CPU、プログラム)は迷いません。

ここまで書いてきてまだテストが十分ではないことに気が付きました。
このあたりがブール代数、集合の難しいところです。
上から2番目のところでa=3、b=5の場合とa=b=5の場合について確認していませんでした。
テストプログラムを追加作成して実行します。

プログラムをLOADしてLISTコマンドでリスト表示しました。
このプログラムの一部を変更します。

PICBASICコンパイラは超簡単コンパイラです。
扱い方はインタプリタとほとんど変わりません。

スクリーンエディタが働いていますから表示画面上で簡単に変更できます。
カーソルを[↑][→]キーで目的の位置に移動して数値を書き換えてそこで[Enter]を入力すれば書き換えは完了です。
カーソルを[↓]キーで下のほうの空いているところまで移動してそこで/SAVEコマンドで変更したプログラムをSAVEします。

念のためにLIST表示させました。

ちゃんと書き換わっています。

このあとは/RUNコマンドを実行するだけです。

それだけでコンパイル、マシン語コードの書込みから実行まで全部連続して行なわれます。
超カンタンでありましょう。
結果も正しく表示されています。

今度は同じことをa=b=5にしてテストしてみます。
プログラムの変更作業は同じですから以下は変更したプログラムの実行結果のみ表示することにします。
a=5に書き換えました。

変更したプログラムを実行した結果は正しく表示されました。

3番目のプログラムもa=5、b=3の場合とa=b=5の場合については未確認です。
上と同じようにしてテストしてみます。
もとのプログラムをa=5、b=3に変更して実行しました。

実行した結果は正しく表示されました。

そのあとさらにb=5に変更して実行しました。

実行した結果は正しく表示されました。

4番目のプログラムもa=5、b=3の場合とa=3、b=5の場合については未確認です。
これも上と同じようにしてテストしてみます。
もとのプログラムをb=3に変更して実行しました。

実行した結果は正しく表示されました。

最後のテストです。
a=3、b=5に変更して実行しました。

実行した結果は正しく表示されました。

PICBASICコンパイラ[第18回]
2023.5.5upload

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