代入は、変数に値を入れる操作です。
擬似言語では ← を使います。
矢印が出てきたら、右側から左側へ値が入る、と読みます。
変数が「値を入れるための入れ物」なら、代入は「その入れ物に値を入れる作業」です。 基本情報技術者試験の擬似言語でも、代入はほとんどのプログラムで使われます。
右のシミュレーターで、基本の形を確認しましょう。
○main
整数型: x
x ← 3
print(x)
出力は 3 です。
x ← 3 は、x に3を入れるという意味です。
左側にある x が変数で、右側にある3が入れる値です。
ここで大切なのは、← の向きです。
数学の等号のように「左右が同じ」という意味ではありません。
x ← 3 は、「3をxに入れる」と読みます。
矢印の向きに合わせて、右から左へ値が移動すると考えると分かりやすいです。
代入では、数字をそのまま入れるだけでなく、計算した結果を入れることもできます。
○main
整数型: x
整数型: y
x ← 3
y ← x + 7
print(y)
出力は 10 です。
y ← x + 7 では、右側の x + 7 を先に計算します。
このとき、x には3が入っているので、3 + 7 になります。
計算結果は10です。
その10を、左側の y に入れます。
つまり、代入を読むときは、次の順番で考えます。
この順番はとても大切です。 擬似言語のトレースでは、右側を先に処理することを忘れないようにしましょう。
擬似言語では、代入に ← を使います。
一方で、値が等しいかどうかを調べるときは = を使います。
x ← 5
これは、x に5を入れるという意味です。
x = 5
これは、x は5と等しいですか、という比較です。
最初は似ているように感じるかもしれません。 しかし、意味はまったく違います。
代入は「値を入れる」。 比較は「値を比べる」。
この違いを押さえておくと、if文などの条件式を学ぶときにも混乱しにくくなります。
代入では、ある変数の値を別の変数に入れることもできます。
次のコードの出力を予想してから実行してください。
○main
整数型: a
整数型: b
a ← 5
b ← a
print(b)
出力は 5 です。
b ← a では、a に入っている値を b に入れています。
この時点で a は5なので、b にも5が入ります。
ここで、b が a そのものになるわけではありません。
a の中に入っていた値をコピーして、b に入れていると考えると分かりやすいです。
次のコードを見てください。
○main
整数型: a
整数型: b
a ← 5
b ← a
a ← 9
print(b)
出力は 5 です。
b ← a の時点で、b にはそのときの a の値5が入ります。
その後で a が9になっても、b は自動では変わりません。
流れを追うと、次のようになります。
a に5を入れるb に、今の a の値5を入れるa に9を入れるb は5のままb を表示するこの考え方は、擬似言語の問題でとてもよく出てきます。 代入は、その瞬間の値を左側に入れる操作です。
次のような代入もよく出てきます。
○main
整数型: count
count ← 1
count ← count + 1
print(count)
出力は 2 です。
count ← count + 1 は、最初は少し不思議に見えるかもしれません。
左側にも右側にも count があるからです。
この場合も、右側を先に計算します。
count + 1 を見るcount は1count に入れるつまり、count の値が1から2に変わります。
この形は、繰返し処理で回数を数えるときによく使います。 基本情報技術者試験のアルゴリズムでも、カウンタや合計の更新で何度も登場します。
もう少し実用的な例を見てみましょう。
○main
整数型: sum
整数型: score
sum ← 0
score ← 80
sum ← sum + score
print(sum)
出力は 80 です。
sum は合計を入れるための変数です。
最初に0を入れておき、あとから score の値を足しています。
sum ← sum + score は、今の合計に点数を足して、新しい合計に更新するという意味です。
このような代入は、配列や繰返しを学ぶとさらによく出てきます。 今は、「右側を計算して、その結果で左側を更新する」と読めれば大丈夫です。
代入が分かると、プログラムの流れが見えやすくなります。 なぜなら、変数の値は代入によって変わるからです。
擬似言語を読むときは、次のことを意識しましょう。
← を見つけたら代入だと判断する最初は、1行ずつメモしながら読むのがおすすめです。 シミュレーターで実行して、予想した値と出力が合っているか確認しましょう。
代入は、擬似言語の中でも特に基本になる考え方です。 ここをしっかり押さえると、条件分岐や繰返し処理、アルゴリズムのトレースも読みやすくなります。