電卓アプリ

計算して答えを出す

数字が一つ入ったので、もう一つ入れて、それに、四則演算の記号のボタンがあれば、答えが出せる

実際には、一つ目の数字を入れて、次に演算記号を入れて、2つ目の数字を入れて、イコールを押すと計算する。

演算記号を入れたタイミングで、変数Bを変数Aに入れて、新たに2つ目の数字を変数Bに入れれば、計算に必要な要素はすべて揃う。

で、実際の計算。

算術式自体は簡単だけど、四則演算は+-×÷4種類あって、それぞれごとに計算が違う。
これを本に載っていた、Switch〜caseでやってみる。

四則演算のボタンに、どの記号が押されたか識別する名札を貼っておき、計算するときに、名札をみて、行う計算を変える。

@IBAction func pushPlus(sender: UIButton) {
       kigou = "tasu"
}

と、ボタンのアクションに書いておいて、

計算部分のファンクションに、

switch kigou {
       case "tasu": answer = value1 + value2
      
case "hiku": answer = value1 - value2
      
case "kakeru": answer = value1 * value2
       case "waru": answer = value1 / value2
       default: answer = value1 + value2
}

と、名札によって、違う処理を書いた。
defaultがないとエラーが出てしまうので、実際には使わないが、足し算処理を書いておいた。

これで記号にあった計算はできそうだが、次はどのタイミングで計算するか。

普通はイコールボタンを押したら、計算を走らせて、答えを出力する。

でも、ちょっと考えると、イコールボタンを押さなくても、ここまでで計算する要素が、すでに決まっているのだから、計算した結果をすぐに表示できるな、と。
なので、イコールボタンを付けないでやってみる。

あとは、記号を押したときに、その記号を表示するラベルを用意。

実際に組んでみると、ボタンを押すと、どんどん答えが書き変わって、ちょっと楽しい。

演算記号を押すと、答えの値が、変数Aに代入され、変数Bはゼロに戻して、変数Bが入力待ちになる。
そこでボタンを押すと、またあらたに計算が始まる、始まるという仕掛け。

Comments

基本の計算をする- 電卓っぽく入力して表示する


電卓アプリの続き。

基本設計は決まったが、実際にこれを動くようにしないといけない。

今、自分がSwift & Xcodeで知っているのは、変数の扱い、計算と、ボタンの接続、ラベルの書き換えとかぐらい。

数字ボタンを画面に設置しただけでは、勝手に数字が変数に入ってくるわけではない。そこを自分でプログラムしないといけない。

1と書かれたボタンを押したら、変数Bに1を入れる、という処理をする。

@IBAction func pushOne(sender: UIButton) {
value3 = 1
}


これはこんな感じ。

次。

123という3桁の数字を入れるとする。

最初の1を変数Bに入れる。これは簡単。
しかしそのあと、2を押したら、元の1を消さずに12としないといけない。

これを計算で考えると、

最初の数1×10 + 次の数2 = 12

なので、入力したての数を変数Cとすると

変数B = 変数B * 10 + 変数C

でいけそう。

value1 = value1 * 10 + value3

こんな感じか。

変数Bの表示を画面に表示するのは、表示用のラベルに対して、

ラベルB.text  = 変数B

なのだけど、出力は文字列でないとダメっぽいので、

ラベルB.text  = String(変数B)

でいけた。

こんな感じで、数字ボタンを10個作って、それぞれの値を変数Cに入れる。

それを変数Bに入れて、表示すると、電卓っぽく数字を一つずつ入れると、電卓っぽく桁が増えていく表示ができた。
Comments

オリジナル電卓アプリをつくる

少しSwiftを覚え始めたので、何か作ってみたくなる。

入門編ということで、電卓なら、実用できるし、簡単かな、と。
(でも後から考えると、意外と大変だった。)

基本設計を考える。

電卓アプリなので、計算できないといけない。
電卓は、数字ボタンを押すと、例えば、足し算ができる。

最初に入れた数、と、計算記号を押し、その後、2つ目の数を入れ、イコールを押すと答えがでる。
つまり3つの変数と、計算記号のボタンがある。

なので、変数Aに、変数Bを足すと、答え変数Cとして出力される、というのが基本と考えればよさそう。

答え変数C = 変数A + 変数B

Swiftで書くとこんな感じ。

answer = value1 + value2

普通の電卓は、入力フィールドも、出力フィールドも同じ窓で行なわれる。
これはこれはこれでシンプルだけど、変数Bを入れている間に、変数Aがなんだったか、不安になることもたまにあるよな、と。

液晶が1行しかない時代の苦肉の索だったとは思うけど、iPhoneのように、リッチな液晶がある時代には、1行表示にこだわらなくてもいいのではないか。
変数A、変数B、答えの全部を同時表示してもいいんじゃない?

というわけで、3行表示の電卓をつくることにした。

でも3つの窓を扱うのは、操作的にはシンプルじゃない。

入力時に使用するのは変数Bだけにして、計算記号を押したら、変数Bの値を変数Aに代入して、変数Bはクリアし、新たに足す側の数字を変数Bに入れる。こうすれば、入力するのは変数Bだけに済みそう。

プロにアプリ開発者なら、仕様の設計をしっかりやるんだろうけど、趣味でやっているので、超行き当たりばったりだけど、これが面白い。
レゴでも、大まかなアイデアは最初に考えるけど、細部はその場で考えるのに似ている。

Comments
7月 2017
6月 2017
5月 2017
4月 2017
3月 2017
2月 2017
1月 2017
12月 2016
11月 2016
10月 2016
9月 2016
8月 2016
7月 2016
6月 2016
5月 2016
4月 2016
3月 2016
2月 2016
1月 2016
12月 2015
11月 2015
10月 2015
9月 2015
8月 2015
7月 2015
6月 2015
5月 2015
4月 2015
3月 2015
2月 2015
1月 2015
12月 2014
11月 2014
10月 2014
9月 2014
8月 2014
6月 2014
5月 2014
4月 2014
3月 2014
2月 2014
1月 2014
12月 2013
11月 2013
10月 2013
9月 2013
8月 2013
7月 2013
6月 2013
5月 2013
4月 2013
3月 2013
2月 2013
1月 2013
12月 2012
11月 2012
10月 2012
9月 2012
8月 2012
7月 2012
6月 2012
5月 2012
4月 2012
3月 2012
2月 2012
1月 2012
12月 2011
11月 2011
10月 2011
9月 2011
8月 2011
7月 2011
6月 2011
5月 2011
4月 2011
3月 2011
2月 2011
1月 2011
12月 2010
11月 2010
10月 2010
9月 2010
8月 2010
7月 2010
6月 2010
5月 2010
4月 2010
3月 2010
2月 2010
1月 2010
12月 2009
11月 2009
10月 2009
9月 2009
8月 2009
7月 2009
6月 2009
5月 2009
4月 2009
3月 2009
2月 2009
1月 2009
12月 2008
11月 2008
10月 2008
8月 2008
5月 2008
4月 2008
3月 2008
2月 2008
1月 2008
12月 2007
11月 2007
10月 2007
9月 2007
8月 2007
7月 2007
6月 2007
5月 2007
4月 2007
3月 2007
2月 2007
1月 2007
11月 2006
10月 2006
9月 2006
5月 2006
2月 2006
1月 2006
12月 2005
10月 2005
9月 2005
8月 2005
7月 2005
6月 2005
5月 2005
1月 2005
11月 2004
10月 2004
8月 2004
7月 2004
5月 2004
4月 2004
3月 2004
2月 2004
1月 2004
12月 2003
11月 2003
10月 2003
9月 2003
7月 2003
5月 2003
3月 2003
11月 2002
9月 2002
8月 2002
6月 2002
1月 2002
11月 2001
10月 2001
5月 2001