プログラム例で挙げたスタック電卓2について説明します。スタック処理の詳細は,スタックの項を参照してください。 電卓プログラムは色々なデータの処理や計算をプログラム無しで,対話的に行うものです。勿論本格的な処理を行うには,プログラムを書いてそれを実行させるのが最適です。しかし,単純な処理の場合はプログラムを書かないでも,十分対応することが出来ます。 Tiny Basic はコマンドラインをサポートしてますから,Basic に標準で組み込まれている機能については,コマンドラインで実行するのが最も適しています。しかし,特別な機能をプログラミングして,それを電卓的に使いたいこともあるかも知れません。Tiny Basic のコマンドラインでそのようなことも実は可能なのですが,ここでは独自に電卓用にプログラムを作ることにします。 電卓用プログラムを作ると,自分の好みに合わせた操作法を実現することが出来ます。 このプログラムはスタック処理を基本にしています。このスタック処理を使うと,プログラミングも簡単で,操作や機能向上が簡単に可能です。
スタック電卓ですから,まずスタックを利用します。ここでは数値スタックを使うことにします。より文字列操作を含むような処理をする場合は,文字列スタックを利用するのも良いでしょう。 ここで使うスタックは配列 NStk() で構成され,要素は
です。 このプログラムの基本部分は次の3つの要素から成ります。
以下これらの説明をします。
データやコマンドを入力する方法は,ソフトウエアより色々あります。Tiny Basic でもデータ入力の方法は色々あります。 今回のスタック電卓は, Tiny Basic Ver.1.1 で可能になったコントロール画面のビジュアルな機能を使って作ってみました。 以下が起動画面です。 左上側にある大きな TextBox はスタックの内部を表示するためのもので,下にあるTextBoxがデータ入力用のものです。 右側にあるボタン群がコマンドを担当します。 データ入力は,データ入力用の TextBox に入力されたものを,データ入力ボタンを押すことによってスタックに積みます。 入力用のTextBox は,CTextBox(2) を使います。 また,入力用のボタンは,上から順にボタン番号をつけているので,CButtin(17)です。ですから,入力処理は,以下のように単純なものです。
ここで, PrintStackは,スタックの内容を更新して,表示用の TextBox にスタックデータの内容を表示する Sub で次のようになります。これも比較的単純です。
コマンドは各ボタンを押すことで実行しますから,各ボタンごとに実行用のSub をCall すればよいだけです。 例えば,加法ボタンが押されたときは次のSub がまず呼ばれます。
これも単純です。
各コマンドごとに,Sub を書くわけですが,例えば,類似なコマンドはまとめて引数によって処理を区別します。 加減乗 Sub は次です。
2,3行はエラー処理です。加法減法乗法の演算は2個の引数が必要ですから,スタックに実際に2個以上の数があるか確認します。スタックに積んである数の個数は(スタックポインタ或いはスタックトップ) NumTop と言う Public 変数に入っています。ですから, NumTop <= 1 なら,演算が実行できません。この場合はエラー表示して,Sub を抜けます。 そうでない場合,演算を実行します。実行する場合の引数はスタックに積まれていますから,スタックからPop をしてそれをそれぞれA, Bとします。Bが先にあるのは,スタックがLIFO(後入れ先出し)で順序が逆になるからです。そして 渡された引数に応じて,A+B,A-B, A*B を計算して,それを Push します。 一般に,コマンド用のSub は次の様な形をしています。
このプログラム全体はここにあります。 全体は500行近くあり,小さいものではありませんが,それらは小さな機能を並べているだけで,プログラム構造自身は単純です。 またこのプログラムは,コントロール画面の使い方の基本的例になっています。このプログラムを1つの枠組みとして,自分の好みのプログラムへと変身させてみて下さい。 |