C言語でイベントを勉強してみる。

今回は、C言語でイベントを使って電卓のコンソールアプリケーションを作ってみたいと思います。
縛り条件として「if / switch文を使用禁止」という内容で書きたいと思います。

プログラム構成

まずは大まかな流れを説明したいと思います。
今回使用するのは四則計算(+-×÷)のみです。

  • +が足し算
  • -が引き算
  • *が掛け算
  • /と%を割り算(小数点以下も計算)

という判別で行います。

今回はイベントを勉強したいだけなので、一次式のみ処理可能にします。

符号毎の処理分岐方法は、入力したキーに割り当てられたアスキーコードを配列の添え字としてイベント関数を呼び出します。
結構力業です(笑)

ざっくりとした処理を状態遷移図で表すと以下のように3段階になります。

状態遷移図

それでは、さっそくプログラムを見ていきましょう。
まずはmain関数です。

 

続いてヘッダー。

 

最後に関数ライブラリです。

 

といった感じですね。

 

解説

今回、main.cは見ての通りかなりシンプルです。

6行目で関数を配列へ格納する自作関数「tableCreate関数」を呼び出し、

9行目からイベント関数を呼び出します。

イベント関数の引数としてNULLを渡した際に状態が1(state=0)の時に一番最初の入力待機処理に飛ぶようになっています。

そこから電卓の状態遷移が開始します。

あとは、数値が入力されれば入力待機を繰り返し、演算子で状態が遷移、それ以外の文字列は繰り上げ処理をスキップして入力待機へ戻ります。

この辺は言葉で説明してもややこしいのでプログラムを読んでもらえればと思います。

 

それでは以上で今回のブログを終わります!

実用性には欠ける使用例ですが、もし良かったら遊びで作ってみてください!

カテゴリー: C言語

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です