今の運勢を見てみよう・中編 – くらめそちゃんのSwiftパーティー(4)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

kurameso-party

前回のおさらい

前回は、今の運勢を画面に表示するプログラムの流れを考えてみました。

これをプログラムにするためには、これまで覚えてきたことに加えて、何が必要でしょうか?

画面に表示する方法は、もうやりましたね。 残りは…

  • 適当な数字を計算する
  • 数字に応じて、表示する内容を変える

この2つの方法を実現する方法を、今回は覚えていきましょう。

まずはプログラムを書く場所を用意しましょう。 第1回を参考に、新しく playground を作ってもいいですし、第2回を参考に、前回のプログラムを開いてもOKです。

適当な数字をゲットする

arc4random()

何も書いていない行に、このように書いてみましょう。 すると、右側には数字が表示されます。 この文は、0 〜 4,294,967,295(大きな数ですね!) の間のどこかのランダムな数を表示してくれるものです。

スクリーンショット 2015-01-10 22.10.26

試しに、arc4random() の下の行で、空白(スペース)を何回か入力してみましょう。スペースを入れるたびに、文の結果の数字が変わったと思います。文字が入力されるたびに、Xcodeが、プログラム全体を見て、表示する内容を更新してくれているのです。

0, 1, 2 のどれかだけをゲットする

ただ、今回は 0,1,2 の3つの数のどれかを出したいので、数が大きすぎますね。 そこで!余りを計算してみましょう。%という演算子(計算に使う記号)を使います。

(数A) % (数B) = (AをBで割った余り)

arc4random() でゲットした数字を、3で割って、その余りを取り出せば、0, 1, 2 のどれかがゲット出来ます。

arc4random() % 3

これだと、毎回0,1,2のどれかの数が表示されます。

想像がつかないかもしれませんね。少し小さめの数字で考えてみましょう。

  • 15 を 3 で割ると、割り切れているので、余りは 0 です。
  • 31 を 3 で割ると、余りは 1 ですね。
  • 302 を 3 で割ると、余りは 2 ですね。

こんな感じで、どんな大きな数が出てきても、小さな数に変換できるのです。いいですね!

数字に応じて、表示する内容を変える

何かがあったらこんなことをする、他のこんなことがあったら別のことをする。条件に応じて、動きを変えることを、条件分岐、なんて呼びます。 この組み合わせを使うことで、いろんな事ができます。

例えば、iPhoneのミュージックアプリでアルバムの音楽を再生している時を想像してみましょう。

IMG_4138 IMG_4140 IMG_4141

  • 再生中に、早送りボタンを一瞬押すと、アルバム内の次の曲の再生に切り替わります。
  • どんどん押していったらどうなるでしょう?
  • 曲一覧の画面に戻ります。

ミュージックアプリでは、以下の様な感じで条件分岐をしていると考えられます。

  • 早送りボタンが押される度に、アルバム内の曲数と、今再生しているトラック番号を比べる
  • もし、アルバム内の曲数より、再生中のトラック番号が小さければ、次の曲を再生
  • そうじゃなくて、もしアルバム内の曲数と再生中のトラック番号が同じなら、次の曲はないので、曲一覧の画面に戻る

yatta
いつもアプリはこんなことをしていたのね!

「もし」を実現する

この、もし と、そうじゃなくて、もし を、
Swiftでは、ifelse ifいう言葉で表します。

swift004

こんな感じです!上のように書くことで、条件によって、例えば表示する内容を変えたり、ミュージックアプリみたいに、Mac やiPhoneにさせたい動きを変えることができます。

この組み合わせだけで、ものすごくいろんな事ができるんですよ!ミュージックアプリ以外にも、いろんなアプリで使われています。想像してみてくださいね。

if と else を体験

では、実際にSwiftのプログラムを書いてみましょう。aが0の時と、0より大きい時で条件分岐をして、別々の文を表示するプログラムです。

let a = 1
if a > 0 {				// もし a が 0 より大きかったら
 println(“0より大きな数ですね”)
} else if a == 0 { 			// そうじゃなくて、もし a が 0 と等しかったら
 println(“0ですね”)
}

※ // より後の解説文は、書かなくても動きます

0より大きな数ですね と表示されますね。

ここで、 1行目をこう変えてみましょう。

let a = 0

すると、0ですねと表示が変わります。 ちゃんと条件を判断してくれていることがわかりますね。

条件演算子

さて、このプログラムでは、条件を2つ使っています。 2行目の a > 0 と、a == 0 です。それぞれ、a が 0 より大きい と、 a が 0と等しい という意味です。学校で習う数学の記号と同じだったり、似ていたりしますね。

こんな風に、記号を使って書く条件の式を 条件演算子 と読んだりします。

演算子 使用例 意味
> a > b aがbより大きい
>= a >= b aがb以上
< a < b aがbより小さい
<= a <= b aがb以下
== a == b aとbが等しい
!= a != b aとbが等しくない

条件演算子には、主にこんなものがあるんです。今は全部覚えなくても大丈夫ですよ!

まとめ

kurameso

今回は、前回見てきたプログラムの流れを実現するために必要な、Swift の文法を体験してきました。 いよいよ次回は、Swift で今の運勢を表示するプログラムを作っていきます。 今回までの内容をちょっと応用すれば作れるので、もうみんな作っちゃってもいいかも!

またね!くらめそちゃんでした!

記事作成にあたりご協力頂いた方々