6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IIT(Iwate Industrial Tecnology)Advent Calendar 2024

Day 20

Java Scriptで電卓システムを作ろう

Last updated at Posted at 2024-12-19

はじめに

 なぜ今回、電卓システムをJavaScriptで作るに至ったかというと、私は以前、C#の方で電卓システムを作り、難しかった記憶があり、それを私はC#の経験をもとに、JSで新しい挑戦してみたいと思い、この計画を立てました。今回は簡易なボタン認識と四則演算のシステムを作っていこうと思います。
 小数の計算については、うまくいかなかったので省かせていただきます。ご了承ください。

完成形
完成形電卓.jpg

codepen
https://codepen.io/black-lacksun/pen/pvzPzOE

HTML

まず最初にHTMLのプログラムを紹介をします。(headの説明は省略)
index_HTML.jpg

class

"calculator"
 電卓全体を囲むコンテナ
"buttons"
 ボタンを配置するエリア
"button"
 各ボタンの定義
appendNumber 0~9の数字
chooseOperator 四則演算
clearDisplay クリア
calculate イコール

id

"expretion"
 計算式を表示するエリア(0は初期値)
"display"
 計算結果を示すエリア(0は初期値)

Java Script

 次にJSのプログラムを紹介します。

変数の初期化

qiita0.jpg
ここでは、それぞれの変数を初期化しています。

関数

qiita1.jpg
 まず1つ目の関数は、数字を押されたときに呼ばれる関数です。
 引数numberに押された数字が渡され、currentNumberに押された数字を追加し、updateDisplay関数を呼び出してディスプレイを更新します。

 次に2つ目の関数は、演算子ボタンが押されたときに呼ばれる関数です。
 引数selectOperatorに押された演算子が渡され、currentNumberが空でない場合に処理を行います。
 また、previousNumberが空でない場合に、calculate関数を呼び出して計算します。
 operatorに選択された演算子を設定し、previousNumberにcurrentNumberを設定します。
 最後にexpressionを更新し、currentNumberをリセットしてディスプレイを更新します。
 qiita2.jpg

 3つ目の関数は、計算を実行する関数です。
 previousNumberとcurrentNumberを整数に変換し、演算子に応じて計算を行い、結果をcalculationに格納します。
 そして、計算式をexpressionに更新し、currentNumberに計算結果を設定します。
 最後に演算子とpreviousNumberをリセットし、ディスプレイを更新します。

qiita3.jpg

 4つ目の関数はディスプレイをクリアする関数です。
 すべての変数を初期化し、ディスプレイを更新します。

 5つ目の関数はディスプレイを更新する関数です。
 ディスプレイび現在の数値や、計算式を表示したり、currentNumberが空の場合は0を表示します。

CSS

 最後にCSSのプログラムを紹介します。
sscccsss.jpg

body

 全体のスタイルを設定しています。
 背景色を薄いグレーにし、ディスプレイをフレックスボックスにして、中央配置にしています。

.calculator

 電卓全体のスタイルを設定しています。
 背景色を白にして、パディング(余白)を追加し、角を丸くし、影を付けました。

.display .expression

 計算結果と計算式を表示するエリアのスタイルを設定しています。
 フォントを大きくし、右揃え、境界線と丸みを追加しています。
計算式エリアの文字は少し小さく灰色になるように設定を追加しています。
###.button, .buttons
 グリッドレイアウトなるものを使用しボタンの列を4列に設定したり、幅を均等にしています。
 ここでも、フォントサイズ、背景色、丸みなどを設定しています。

まとめ

 作ってみての感想ですが、システム自体はC#より単純にできたような感じがします。しかしながら、ボタンの配置について、C#はカーソルでボタン配置ができていたのでCSSの大変さが身に沁みます。今後はもう少しJSなどの言語を勉強してこれより良い電卓システムを作ってみたいものです。

6
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?