電卓アプリ
計算して答えを出す
2015/03/01 21:47 カテゴリ:Swift
数字が一つ入ったので、もう一つ入れて、それに、四則演算の記号のボタンがあれば、答えが出せる
実際には、一つ目の数字を入れて、次に演算記号を入れて、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が入力待ちになる。
そこでボタンを押すと、またあらたに計算が始まる、始まるという仕掛け。
実際には、一つ目の数字を入れて、次に演算記号を入れて、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が入力待ちになる。
そこでボタンを押すと、またあらたに計算が始まる、始まるという仕掛け。
基本の計算をする- 電卓っぽく入力して表示する
2015/02/28 16:48 カテゴリ:Swift
電卓アプリの続き。
基本設計は決まったが、実際にこれを動くようにしないといけない。
今、自分が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に入れて、表示すると、電卓っぽく数字を一つずつ入れると、電卓っぽく桁が増えていく表示ができた。
オリジナル電卓アプリをつくる
2015/02/22 19:27 カテゴリ:Swift
少し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だけに済みそう。
プロにアプリ開発者なら、仕様の設計をしっかりやるんだろうけど、趣味でやっているので、超行き当たりばったりだけど、これが面白い。
レゴでも、大まかなアイデアは最初に考えるけど、細部はその場で考えるのに似ている。
入門編ということで、電卓なら、実用できるし、簡単かな、と。
(でも後から考えると、意外と大変だった。)
基本設計を考える。
電卓アプリなので、計算できないといけない。
電卓は、数字ボタンを押すと、例えば、足し算ができる。
最初に入れた数、と、計算記号を押し、その後、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だけに済みそう。
プロにアプリ開発者なら、仕様の設計をしっかりやるんだろうけど、趣味でやっているので、超行き当たりばったりだけど、これが面白い。
レゴでも、大まかなアイデアは最初に考えるけど、細部はその場で考えるのに似ている。