計算して答えを出す

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

実際には、一つ目の数字を入れて、次に演算記号を入れて、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が入力待ちになる。
そこでボタンを押すと、またあらたに計算が始まる、始まるという仕掛け。

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


電卓アプリの続き。

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

今、自分が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に入れて、表示すると、電卓っぽく数字を一つずつ入れると、電卓っぽく桁が増えていく表示ができた。

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

少し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だけに済みそう。

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

Swiftの感想

前は、本の感想になってしまったが、Swiftでアプリ製作をやってみた感想。

基本は、結構簡単で、BASICや、HyperTalk並みの気軽さがあるんだな、というところ。

5年前に、Objective-Cで開発、というときは、カッコが何種類もあるし、記号の使い方もよくわからず、また.hとか.mとか、なんかわからんファイルをいっぱい操作しないと、ということで投げ出してしまった。

今回は、最初はPlaygroundという環境で、1行書くと、すぐその結果が出力される的なものがあって、とっつきやすかった。

変数の代入は、=で、if文の比較は==とか、慣れないこともあるが、徐々に慣れてきた。

今、気づいたが、基本のコマンドみたいなものは、かなり少ないのね。
if、とか、forとか、letとか。

まだまだよくわかっていないけど、それ以外の機能や関数をAppleが用意してたり、自分で用意して、組んでいく、ということか。



絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

Swiftの入門本を買う -絶対に挫折しない iPhoneアプリ開発「超」入門

Swiftでプログラミングの勉強をすると言っても、ガイドなしには、まったく進みそうにない。

なんかしらのガイド本が必要、ということで、amazonを色々と見ていたら、良さそうな本があったので購入。

blog150208_1

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

挫折を経験している自分にとっては、挫折しない、というのは、なかなか魅力的。本当に挫折しないかは、別として、少なくとも素人の挫折ポイントに対して、それなりの工夫がされているという期待は持てる。

結論から言えば、挫折せずに済んだ。
年末に買って、1ヶ月ぐらいで、この本に書かれていることをほとんど試してみることができた。

書いてあることを全てマスターしたか、と言われれば、そこまでは行っていないのだけど、それでも、アプリを作って、iPhoneの実機で動かせている。
iOSアプリにトライしてみようかな、という自分にとっては、かなりの効果があった。

一番のポイントは、説明に飛躍がない、というところか。
解説本の中には、Xcodeのどこを触れば、書いてある通りのことができるのか、ということがわからなくなってしまうものもあるが、この本は丁寧に、こことここをこの順番で操作するとの記述があるので、それに従っていくと、ちゃんと書かれている通りのことができる。

Xcodeの使い方とか、何度もやらないと覚えないことをちゃんと何度もやって覚えるので、身につきはじめている気がする。

この本だけでは、オリジナルのアプリを作るのは、ちょっと無理な気がするが、それでも自分にとっては、より離陸になった。

読むのに1ヶ月かかったのだが、ひとつは本が厚くて、持ち歩けないので、家に帰ってからしか読めない、というのがある。電子書籍版があればよかった。
ただ、今、2冊目の本を電子書籍版で読んでいるのだけど、これはこれで、なかなか頭に入ってこない。iPad miniだと、画面が少し小さい、というのもあるし、パラパラめくって調べたい、ということもある。

一番いいのは、紙の本を買うと、電子版も手に入る、というやつなのだけど。


絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

久しぶりにプログラミング入門 - Swift

前にSwiftが発表された時に、これからアプリを作ってみよう、という人に向いている、というのは出ていて、興味があった。

最近、仕事も落ち着いてきたので、ちょっとチャレンジしてみようかと。

プログラミング経験は、今から30年以上前の小中学生時代にBASICと、大学の時のHyperCardのHyperTalk、Apple Scriptぐらい。
20年ぐらいのブランクがある。ブランクというか、まったくの初心者だな。

以前、Xcodeもインストールしたことがあって、アプリ開発の本も買ったことがあるが、一切身につかず、終わってしまっていた。

iPhone&iPod touchアプリを作ろう! (はじめてのプログラミング)

前に買ったのはこの本かな。2010年だから、5年前らしい。

さて、どうなることやら。