プログラミング学習をするときに必要となる知識はの一つが、インクリメント演算子(えんざんし)です。
インクリメントというのは、英語で書くと「increment」と書くことができ、意味は「増加」「増量」です。つまり「ものが増えること」だよ。
反対の言葉は、デクリメントというよ。
小学生でも分かるように、詳しく説明していくから心配しないでね。
インクリメント演算子ってなに?
インクリメント演算子は、値を1だけ増やしたりするときに使うんだよ。
どんなときによく使うのか?というと「ものを数えるとき」などだよ。
たとえば、縄とびの回数を数えるときに「1、2、3・・・」って1づつ数を増やしながら数えていくよね。
つまり、同じものをカウントするときだね。
書き方は、
オペランド ++:
オペランドというのは、コンピュータにおける値や変数のことだよ。
変数については、下の記事に詳しく書いたから読んでね。
変数 = 変数 + 1:
と、同じ結果になるよ。
イコールの右にある式の答えが、左の値になるんだよ。
算数の問題では、
1 + 1 = 2
と書くよね。
このとき、イコールの左「1 + 1」は式で、右の「2」は答えだよね。
でも、プログラミングの世界では、
式の結果 = 式
となるんだよ。
算数と同じように書いちゃうと、全然違う結果になっちゃうから気を付けてね。
多くの場合は、
変数 = 式
というように、左には「変数」を書くことが多いよ。
そして、こういう処理を「変数に値を代入する」というよ。
変数は箱と同じだから、箱に値を入れるという意味だね。
だから、変数名「縄跳びの回数」に、跳べた数をカウントしていくときは
縄跳びの回数 = 0
縄跳びの回数 = 縄跳びの回数 + 1 // 1
縄跳びの回数 = 縄跳びの回数 + 1 // 2
縄跳びの回数 = 縄跳びの回数 + 1 // 3
縄跳びの回数 = 縄跳びの回数 + 1 // 4
縄跳びの回数 = 縄跳ぴの回数 + 1 // 5
この処理を行ったときの、変数「縄跳びの回数」の値は「5」になるんだよ。
でも、この式を見てどう思う?
何度も「縄跳びの回数」という変数が出てくるから、見づらいよね?
そして、最後の式が「縄跳ぴの回数」となっているのにも気づいた?
これは、記述ミスだね。
だから、さっきの式の答えは、「5」ではなく、「4」になってしまうんだ。
でもミスだから、書いた人は「縄跳ぴ」ではなく「縄跳び」って書いたつもりだから、気づきにくい・・・
結果が違うのに、気づきにくいっていうのは、間違えを探すときに時間がかかる原因となるから、好ましくないんだよ。
もし、これをインクリメント演算子を使った書き方で書くと、
縄跳びの回数 = 0
縄跳びの回数++ // 1
縄跳びの回数++ // 2
縄跳びの回数++ // 3
縄跳びの回数++ // 4
縄跳びの回数++ // 5
だいぶシンプルになったよね?
これなら、間違いに気づきやすい。
インクリメント演算子は、ループ処理で使うことが多いんだ。
縄跳びの回数を数えるときに、回数が「5回」ならソースコードの量も少なくてすむけど、もし「20回」なら?
縄跳びの回数 = 0
縄跳びの回数++ // 1
縄跳びの回数++ // 2
縄跳びの回数++ // 3
縄跳びの回数++ // 4
縄跳びの回数++ // 5
縄跳びの回数++ // 6
縄跳びの回数++ // 7
縄跳びの回数++ // 8
縄跳びの回数++ // 9
縄跳びの回数++ // 10
縄跳びの回数++ // 11
縄跳びの回数++ // 12
縄跳びの回数++ // 13
縄跳びの回数++ // 14
縄跳びの回数++ // 15
縄跳びの回数++ // 16
縄跳びの回数++ // 17
縄跳びの回数++ // 18
縄跳びの回数++ // 19
縄跳びの回数++ // 20
20回も書かなきゃいけない!!
それに、縄跳び「100回」にもなると、1書く数も100回!!
これは面倒だよね・・・
そんなときに使うのが、ループ処理だよ。
縄跳びの回数を数える処理を、ループ処理にすると
while (縄跳びにひっかかるまで) {
縄跳びの回数++
}
というように書くよ。
これなら、縄跳びの回数が「1回」でも、「10回」でも、「100回」でも同じ書き方で処理できるんだ。
ループ処理については、下の記事でくわしく書いたから読んでね。
デクリメント演算子ってなに?
インクリメント演算子が「1づつ増える」のに対して、デクリメント演算子は「1づつ減る」んだ。
書き方は
オペランド −−:
つまり、
変数 = 変数 − 1:
だよ。
たとえば、「お皿の上にクッキーが10個あって、1つづつ食べていったときの残りの数を知りたいとき」などだよ。
皿の上のクッキーの数 = 10
皿の上のクッキーの数−− // たかし君が1枚食べました
皿の上のクッキーの数−− // みりちゃんが1枚食べました
皿の上のクッキーの数−− // ちえちゃんが1枚食べました
皿の上のクッキーの数−− // じゅん君が1枚食べました
たかし君、みりちゃん、ちえちゃん、じゅん君の4人がぞれぞれクッキーを食べると
残りのクッキーは6枚になるね。
ループ処理で表すと
皿の上のクッキーの数 = 10
while (4人がクッキーを食べる) {
皿の上のクッキーの数−−
}
もし後から、かいり君がきてクッキーを食べると、「4」を「5」に変えるだけ
皿の上のクッキーの数 = 10
while (5人がクッキーを食べる) {
皿の上のクッキーの数−−
}
6人でも、8人でも同じように人数を変えるだけでいいんだよ。
前置と後置で結果が変わる
さきほど、1づつ増やすのがインクリメント演算子(えんざんし)は
変数++
1つづ減らすのがデクリメント演算子(えんざんし)は
変数−−
で書くよっていったよね。
じつは、インクリメント演算子、デクリメント演算子は
++変数
−−変数
というふうにも書けるんだ。
どうして2種類あるのか?というとね、
変数の前に「++」や「−−」を付けることを「前置」
変数の後に「++」や「−−」を付けることを「後置」
とよぶんだ。
前置記法
x = 2
y = ++x
のとき、変数「y」には「3」が代入されるんだ
後置記法
x = 2
y = x++
のとき、変数「y」には「2」が代入されるんだ。
どういうことかというと、プログラムというのは、上から書かれたコード順に処理を行っていくんだけど、
前置記法のときは、「++x」が書かれたコードに達したときに「+1」となるんだけど
後置記法のときは、「x++」が書かれたコードを過ぎたときに「+1」となるんだ
図にすると、
前置記法
処理順序
1.xの値「2」がyに代入される(このとき、xもyも「2」)
2.xの値に1が足される(このとき、xは「2」yは「3」)
後置記法
処理順序
1.xの値に1が足される(このとき、xは「3」yは無し)
2.xの値「3」がyに代入される(このとき、xは「3」yは「3」)
前置記法も後置記法もそれぞれの特徴を知って使い分ければ、とても便利に処理をすることができるからね。
まとめ
- 1づつ増やすのがインクリメント演算子(えんざんし)
- 1つづ減らすのがデクリメント演算子(えんざんし)
- インクリメント演算子・デクリメント演算子はループ処理のときに多く使われる
- 前置記法と後置記法では加算されるタイミングが違う
ちょっとまだ難しいなと感じたら、
「++」は「1づつ増やす」
「−−」は「1つづ減らす」
と覚えて、前置記法か後置記法のどちらかだけを使ってみるようにするといいよ。
コメント