【swift入門】初心者向け基本文法徹底解説「演算子」

さぁ、今回は演算子(えんざんし)についてやっていきましょう!

 

ちなみに演算子ってなぁ〜に?って方もいると思うので、

簡単な説明をばw

 

プログラミングでは,計算のことを演算(えんざん)と呼びます。

演算子は、計算をする際に使われる「+」や「−」などの記号のことです。

で、演算子にはいろいろな種類があって、

定数や変数の宣言時に使った「=」も演算子の仲間。

「=」は、「代入演算子」ってやつです!

 

代入演算子

もうすでにやっていますが、

プログラミングでは、「=」は等号ではなく代入を意味します。

「=」の右側(右辺)を「=」の左側(左辺)に値を代入するってやつでしたね!

 

復習も兼ねて簡単な例を見てみましょう!

Swift
var hensu = 1
let teisu = hensu
hensu = teisu + 1

上の演算では、

1行目で変数のhensuを宣言し、その変数に1を代入しています。

 

2行目では、定数のteisuを宣言し、その定数に1行目で宣言したhensuを代入しています。

teisuの値は、Int型の「1」になります!

 

3行目で、1行目で宣言したhensuに、teisuに1を足したものを代入しています。

結果、hensuは2になります。

 

こんな感じで、右の値を左に代入するのが、

「=」の役割になります。

 

算術演算子

代入演算子の例で出てきた「+」ですが、

これも演算子の1つで、

算術演算子と呼ばれるものです。

 

算術演算子にはいくつかの種類がありますが、

それほど難しくないので、この機会に覚えちゃいましょう!

 

演算子 演算式 説明
+ +a aの正の値
-a aの負の値
+ a + b aとbを足した値
a – b aからbを引いた値
* a * b aにbを掛けた値
/ a / b aをbで割った値
% a % b aをbで割った余りの値

ここで忘れがちなのが%くらいかなぁ?!

あれ?!余りってどうやって出すんだっけ?って

ついついググってしまうのは僕だけかなw

 

まぁ、それはさておき、算術演算子の例を見ていきましょう!

Swift
let a = 1 + 2 * 3
let b = 6 / (5 - 3)
let c = 8 % 3
let d = -10 % 6

1行目ですが、aの値は「7」になります。

説明はいらないと思いますが、2×3で6に1を足して7ですね!

その7を定数aに代入しています。

 

2行目では、プログラミングでもカッコ()の中が優先して計算されるので、

5−3が先に計算され、6÷2でbの値は3になります。

 

3行目は、%は余りを求める演算子でしたよね!

ですので、8÷3の余りは2ですので、cには2が入ります。

 

4行目は、−10を6で割った余りですので、

定数dの値は、−4になります。

 

簡単ですね!

しいて言うならば、ここでのポイントは、

演算子前後の空白を意識しましょう!

 

たとえば、

let a = 1 + 2

これはエラーがでませんが、

let a= 1 + 2

これはエラーがでます。

なぜエラーが出てしまうのがと言いますと、

=と1の間には空白があるのに、aと=の間に空白がないからですね!

 

この場合は、

let a = 1 + 2

もしくは、

let a=1 + 2

let a=1+2

こうすることでエラーがでなくなります。

演算子の前後の空白は入れても入れなくてもいいのですが、

片方だけ入れるのはNGです!

 

おすすめは、見やすさの観点から、

全てに空白を入れるのがいいと思います!

 

あと、正負を表す+やーには、空白は入れないでくださいね!

+aや-aといった感じです。

 

あと、数字の整数と小数が混じった計算も注意が必要かな!

キャストの記事

【swift入門】初心者向け基本文法徹底解説「型の変換」

こちらで説明をしたことに近い内容になるのですが、

Swiftは型に厳密なプログラミング言語ですので、

同じ式内では、型が一緒でなくてはなりません。

 

例で見た方が分かりやすそうですね!

Swift
let a = 1 + (10 / 4)

この例題のaの値は3になります。

えっ?!なんで?って思いますよね!

答えは3.5じゃないの?って。

aの値が3になってしまう理由ですが、

型の統一の強制力が働いているからなんですね!

 

この時の定数aの型はInt型になります。

ですので、10÷4の値は強制的にInt型になり、

小数点以下が切り捨てられ2になります。

その2と1を足して3になるといった感じです。

 

aの値を小数点まで求めたい場合は、

宣言時に型をDoubleで宣言するか、

計算式の数字を整数ではなく、小数で記述するか

どちらかがいいと思います。

 

Swift
let a:Double = 1 + (10 / 4)

もしくは、

Swift
let a = 1.0 + (10 / 4)

数字のどれか1つでも小数になっていれば、

定数aの型は、Double型になります。

 

Swiftは書き方の自由度は高いのですが、

型に関しては、厳密に扱われますので注意が必要です。

 

論理演算子

論理演算子とは、Bool値を扱う演算子です。

Bool値とは、trueかfalseのどちらかになるものでしたね!

もちろん、演算結果もBool値を取ります。

 

とりま、例を見てみましょう!

演算子 演算式 説明
&& a && b aとb両方ともtrueのときtrue。
|| a || b aまたはbのどちらか一方でもtrueのときtrue。
! !a aがtrueならばfalse、aがfalseならばtrue。

 

式で表すと下のような感じ

Swift
let a = true
let b = false
let c = a && b
let d = a || b
let e = !a
let f = !b

定数cの値は、bがfalseなのでfalseになります。

 

定数dの値は、aもしくはbのどちらかがtrueならtrueになるので、

aがtrueなのでtrueになります!

 

定数eは、aの逆ですのでfalse。

定数fは、bの逆ですのでture。

 

ここまでOKでしょうか?

では、どんどん進めていきましょう!

 

比較演算子

比較演算子は、その名の通り2つの値の大小を比較するものです。

演算結果は、条件を満たすときtrue、

満たさないときはfalseを取ります。

 

比較演算子の種類は下の通りですので、

この機会にしっかりと覚えちゃいましょう!

演算子 演算式 説明
> a > b aがbより大きいときtrue
< a < b aがbより小さいときtrue
>= a >= b aがb(bを含む)以上のときtrue
<= a <= b aがb(bを含む)以下のときtrue
== a == b aがbと等しいときtrue
!= a != b aがbと等しくないときtrue

比較演算子を使うときは、条件式を使います。

条件で処理を分岐するときですね!

 

たとえば、aがbより大きいときは、この処理ね!

で、aがbより小さいときはこの処理!といった感じで使います。

条件によって処理を変えるときに使います。

 

条件式は後ほど勉強していきましょう!

今回は演算子を確実に覚えちゃいましょう!

 

複合代入演算子

複合代入演算子は、ちょっとややこしいので、

例を出して、簡単に説明しちゃいますね!

Swift
var a = 1
a = a + 1

こんな式があるとします。

1行目のaは1

2行目の左辺のaは2になるのはOKですよね!

これを複合代入演算子を使うともっと簡単に表せます。

上の例題を複合代入演算子を使ったもので書くと、

Swift
var a = 1
a += 1

こんな感じになります。

説明すると難しいのですが、

コードで書いて見て覚えたほうが簡単でしょ?!

 

複合代入演算子の種類もけっこうあるんですが、

今まで勉強してきたものと似たようなものばかりですので、

覚えちゃってください!

演算子 演算式 説明
+= a += b aにbを足した値をaに代入
-= a -= b aからbを引いて値をaに代入
*= a *= b aにbを掛けた値をaに代入
/= a /= b aをbで割った値をaに代入
%= a %= b aをbで割った余りをaに代入

 

こう書くとよく分からないと思うんだけど、

コード例で見た方が分かりやすいかな?!

Swift
var a = 10
a -= 1

この左辺のaは、9になります。

簡単だよねw

一応説明すると、

上記の式を分解すると

var a = 10

a = a – 1

ね!かんたん、かんたんw

じゃ、つぎね!

Swift
var a = 2
a *= 3

2行目の左辺のaの値はなにかな?

そう!6ですね!

var a = 2

a = a * 3

 

じゃ、つぎw

Swift
var a = 6
a /= 2

2行目の左辺のaの値はなに?

正解!

そう、3ですね!

var a = 6

a = a / 2

 

つぎは余りね!

気をつけてw

Swift
var a = 9
a %= 5

では、2行目の左辺のaの値はなに?

そう、4ですね!

var a = 9

a = a % 5

 

複合代入演算子を覚えちゃうと

かなりすっきりコードが書けるので

使いこなせるようにしましょう!

 

三項演算子

三項演算子も覚えちゃうとかなり便利で

コードがすっきりするのでしっかりと覚えましょう!

 

と言いたいのですが、

ここではこんなものがあるんだくらいでいいかなw

 

というのも、このあと条件で処理を分岐するif文を勉強していこうと思うのですが、

そのif文をすっきりさせるのに三項演算子は役に立つので

if文を勉強するときに再度合わせてやったほうがいい気がするのでw

 

とりま、例題の式を見てみましょう!

Swift
var heightFlag = true
let cellHeight = heightFlag ? 10 : 50

heightFlagは、trueもしくはfalseをとるBool値とします。

Bool型はもう大丈夫ですよね?!

不安な方はこちらの論理型をもう一度読んでね!

【swift入門】初心者向け基本文法徹底解説「型の種類」

 

まぁ、heightFlagはオン・オフのスイッチみたいなもんだと思ってください。

 

cellHeightは、う〜ん?!このあと勉強していきますが、

説明が難しいw

時計アプリのスクショですが、

そこの高さですwww

スイッチを押すとそこの高さが変わるって感じの簡略版コードですw

 

heightFlagがtrueのとき、cellHeightは10になって

heightFlagがfalseのとき、cellHeightは50になる

って感じです。

 

コードをもう一度見てみましょう!

Swift
var heightFlag = true
let cellHeight = heightFlag ? 10 : 50

 

2行目の、let cellHeight = heightFlag ? 10 : 50

この部分が大事で、三項演算子と呼ばれるものですね!

条件式 ? trueの場合の式 : falseの場合の式

この三項演算子の結果をcellHeightに代入しています。

 

ね!便利でしょ?!って

まだこの便利さが伝わってないと思いますが、

比較なんかにも使えますね!

たとえば、

Swift
let a = 1
let b = 2
let which = a > b ? a : b

なんとなく分かりますかね?

?の左隣りの式がtrueならa

falseならbを取ります!

で、

Swift
let a = 1
let b = 2
let which = a > b ? a + 1 : b * 2

こんな感じでちょっと複雑にもできますw

whichの値が何になるか分かりますか?

 

aとbを比較すると、

bの方が大きいですよね!

なので、a > bは、false

falseのときは、:←これの右側の式を取るので、

b * 2がwhichに代入されます!

そう、答えは4になります。

OKかな?

けっこう便利なんですよ!

まぁ、ここではこんなものもあるくらいで大丈夫です!

 

レンジ演算子

つぎはレンジ演算子!

レンジ演算子も必須なのですが、

ここでは、へぇ〜こんな感じなんだぁ〜!くらいでいいかなw

 

とりま、式いきまーす!

終了値を含まない場合

開始値 ..< 終了値

 

終了値を含む場合

開始値 … 終了値

 

よしとw

何がよしなのか全然分かりませんねw

簡単に説明すると、

レンジ演算子は、数値の範囲を指定できる演算子です。

どういうことかというと、

-5から10の範囲を指定したいとします。

そういった場合に、このレンジ演算子が使えます。

 

では、例によって式を見てみましょう!

Swift
let rangeInt = -5...10

これは10を含む−5から10の整数郡です。

 

Swift
let rangeInt = -5..<10

で、これは10を含まない整数郡になります。

−5から9までね!

OK?

 

これもだいぶ便利な演算子なので、

ここでは、こんな感じなんだなぁ〜くらいにw

頭の片隅にでも置いておいてください!

 

このあと、条件式のif文、for-in文、switch文で使い方を説明しますので、

とりあえず、レンジ演算子はここまでにしましょう!

 

ということで、

つぎは、いよいよ条件式に入っていきます!

ようやくプログラミングっぽくなっていきますね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA