前回、電卓の画面をデザインしました。
今回から2回に分けて、電卓の動作に必要なコードを記述していきます。コードの記述は説明が長くなるので、2回に分けます。まず今回は、変数と定数とを定義します。
ActiveX Control Padで電卓アプリケーションの画面のデザインをしました。まだ作成していない方は、まず第7回をご覧ください。
続いて、第6回で作成した仕様をもう一度確認してみましょう。
変数 | 一つ目の数値(演算子の前に入力した数値)を覚えておく変数 |
二つ目の数値(演算子の後に入力した数値)を覚えておく変数 | |
演算子(二つ目の数値の前)を覚えておく変数 | |
直前に押されたキーの種類を覚えておく変数 | |
定数 | 演算子の種類を表す定数 |
直前に押されたキーの種類を表す定数 | |
プロシージャ | 数値が押された時の処理 |
演算子が押された時の処理 | |
=が押された時の処理 | |
C(クリアキー)が押された時の処理 | |
CE(クリアエントリーキー)が押された時の処理 |
プロシージャの概要については、第6回を参照してください。
まずは変数と定数を用意します。なお変数などを用意することを、プログラミングの世界では「変数を定義する」などのように「定義」といいます
変数にはそれぞれ以下のような名前をつけることにします。もちろん自由な名前をつけてもかまいませんが、今回は以下のようにつけることにします。編集の方法はすぐ後に説明します。
変数の用途 | 変数名 | 変数の型 |
---|---|---|
一つ目の数値 | dblPrevNumber | Double |
二つ目の数値 | dblCurrentNumber | Double |
演算子 | intPrevOperation | Integer |
直前に押されたキー | intLastKey | Integer |
それぞれの変数の頭に"dbl"や"int"とついていますが、これは変数の型をあらわしています。
それぞれ、"dbl"は小数を、"int"は整数を記憶するための変数であることを意味します。続いて定数です。定数は次の通りです。電卓では、全ての定数の型は整数型(Integer)です。
定数の分類 | 意味 | 定数 | 値 |
演算子の種類 | 記憶している演算子なし | OP_NO | 0 |
= | OP_EQUAL | 1 | |
+ | OP_PLUS | 2 | |
- | OP_MINUS | 2 | |
* | OP_MULTIPLE | 4 | |
/ | OP_DEVIDE | 5 | |
エラー | OP_ERROR | -1 | |
直前のキーの種類 | 数値 | KEY_NUMBER | 1 |
= | KEY_EQUAL | 2 | |
その他 | KEY_OTHER | 0 |
それでは定数と変数を停止してみましょう。まずは定数から定義します。
プロジェクトエクスプローラでfrmMainを選択し、[コードの表示]ボタンをクリックします(図)。定数は"Const 定数名 As 型 = 値"と書く決まりなので、この図を参考に以下のように入力します。入力するのは上の定数の表に示したもの全てです。
Const OP_NO As Integer = 0 Const OP_EQUAL As Integer = 1 Const OP_PLUS As Integer = 2 Const OP_MINUS As Integer = 3 Const OP_MULTIPLE As Integer = 4 Const OP_DIVIDE As Integer = 5 Const OP_ERROR As Integer = -1 Const KEY_NUMBER As Integer = 1 Const KEY_EQUAL As Integer = 2 Const KEY_OTHER As Integer = 0
続いて変数の定義です。すでに説明したように、今回の電卓では4つの変数が必要です。それらを、定数定義に続いて以下のように入力します。
Dim dblPrevNumber As Double Dim dblCurrentNumber As Double Dim intPrevOperation As Integer Dim intLastKey As Integer
VBScriptとの違いは、変数に型の概念があることです。VBScriptでは定数定義ができなかったので、変数に値を代入するという方法で代用しましたが、Visual BasicではConstを使って定数を定義することができます。また、変数も型付きで定義します。
変数・定数の定義は、以上で終わりです。次回は、プロシージャの定義をします。
瀬尾佳隆 (webmaster@seosoft.net) |