今回はC#を今から勉強する方向けの記事です。
作成するのは電卓です。
電卓ってボタン機能、表示機能があり、
演算処理はクラス化したりと初心者が触るのにぴったりな課題なんです。
ではさくっと作ってみましょう。
1.電卓の仕様について
今回開発環境はVisual Studio 2022を使用しています。
機能は四則演算ができること
表示している値の削除機能は無し
2.プロジェクトの作成
まずはプロジェクトを作成しましょう。
今回は単独アプリの作成をしたいのでWindowsフォームアプリで作成します。
空のプロジェクトから作成するとなにもないプロジェクトが作成されますが、
最初から色々出来ているほうが楽ですのでMFCヘッダーにチェックを入れて作成します。

3.コントロールの配置とプロパティ
次に電卓のUIを作成しましょう。
左のツールボックスからButtonとTextBoxを配置しましょう。

今回、各コントロールのプロパティは「Name」と「Text」を変更します。
各ボタンについては、電卓と同じ配置になるようにTextを変更します。

Nameについては、「コントロール名+機能」としました。
可読性を上げるため細かいことですがこういう作業も必要です。
4.演算の仕方、仕様について
さて、UIが完成したところでここからが人それぞれ個性が出るところです。
計算方法はどのように実装しますか?
以下、2つのパターンを考えてみましょう。
①:ボタンが押されるたびに、データを内部的に保存していくパターン
②:ボタンが押されたらテキストボックスへ表示、「演算ボタン」が押されたタイミングで
テキストボックスに表示されている文字を値として保持するパターン
5.パターン①について検討
このパターンで対応が必要なのは、入力された値をどのように保持していくか。
「1」を押された後に「0」が押されたら内部の値は「10」になりますね?
では保持する変数を整数型として宣言した場合を考えましょう。
単純に、ボタンの値を整数としてとらえると、「1」+「0」をしたら「1」になってしまいます。
押されたタイミングで押したボタンの回数を別変数として保持して、今何桁押されたのか保持し、
「1」×「ボタンを押した回数から桁数を算出」+「0」×「ボタンを押した回数から桁数を算出」
このような形でもできると思います。少し複雑ですが面白い考え方かと思います。
ただ、これは可読性が低く、ぱっとコードを見ただけでは何をやっているかわかりにくいですね。
「ボタンを押した回数から桁数を算出」こちらの処理もちょっと考える必要があります。
では整数型ではなく、文字列として保持するようにしましょう。
String型であれば変数に対して追記していくということができますので
押されるたびに後ろから追記していく形にしましょう。
そして演算ボタンが押されたタイミングで整数変換して演算する。
こちらも悪くないですが、文字列として保持し、文字列を数値に変換して演算するというのは
少し可読性が悪い気がします。
6.パターン②について検討
ボタンが押された時にTextBoxへ押された数値を追記していきます。
演算ボタンが押されたタイミングでTextBoxの文字列を取得し、数値へ変換して内部に保持しましょう。
「5.パターン①について検討」で検討している二つ目のパターンと似ていますが、
各ボタンが押された時の処理が単純になるのはこちらの方ですので
今回はこの案で対応しましょう。
というわけで、内部仕様を簡単にまとめます。
・数字ボタンが押された時、TextBoxへ数字を表示する
・演算ボタンが押された時、TextBoxから文字列を取得、数値へ変換して保持する
7. あとがき
今回は枠の作成、内部仕様の検討を行いました。
次回は表示関係やボタンの処理をコードを見ながら解説したいと思います。
関連記事
-
第1回 Visual C++で作成したDLL内のクラスをC#で利用する方法
こんにちは、ILCです。 Visual C++ (以下 VC++)で作成されたDynamic...
公開日:2024.01.19 更新日:2024.01.19
tag : Windows
-
-
-
第1回 ラズパイを使用したBLE通信 ~ ディスプレイ、キーボード、マウスを接続しないで設定 前編 ~
こんにちは、GTです。よろしくお願いします。 最近業務でラズパイのBluetooth機能を使...
公開日:2021.12.24 更新日:2021.12.24
tag : Bluetooth Raspberry Pi
-
【新機能探訪】Android 13から導入された『アプリごとの言語設定』
こんにちは、KNSKです。よろしくお願いします。 今回は Android13の新機能である『...
公開日:2022.12.09 更新日:2022.12.09
tag : スマートデバイス
-
こんにちは。WwWです。 システム系の開発をしていると様々な問題が起こります。 そこで今回は...
公開日:2023.04.28 更新日:2023.04.28