<一覧に戻る

擬似言語の未定義

未定義は、変数にまだ値が入っていない状態を表します。

空っぽ、というより、まだ決まっていない状態だと考えると分かりやすいです。

擬似言語では、変数を使う前に宣言します。 しかし、宣言しただけでは、まだ具体的な値が入っているとは限りません。

整数型: x

このように書くと、x という変数を使う準備はできています。 ただし、まだ x に値を代入していないため、値は未定義です。

基本情報技術者試験の擬似言語でも、変数の値がいつ決まるのかを追うことは大切です。 未定義の状態を理解しておくと、トレースのミスを減らしやすくなります。

宣言した直後は未定義

まずは、未定義の動きを見てみましょう。 次のコードを右のシミュレーターで実行してください。

○main
整数型: x
print(x)

出力は 未定義 です。

x を宣言しましたが、まだ値を代入していないからです。

ここで行っているのは、次の2つです。

  • x という整数型の変数を用意する
  • x を表示する

しかし、x にはまだ値が入っていません。 そのため、表示しようとしても、具体的な数値は出てきません。

値を入れてから表示する

次に、値を入れてから表示します。

○main
整数型: x
x ← 5
print(x)

出力は 5 です。

今度は、x ← 5x に5を入れています。 そのあとで print(x) を実行しているので、5が表示されます。

流れを1行ずつ読むと、次のようになります。

  • x という整数型の変数を用意する
  • x に5を入れる
  • x を表示する

このように、変数は宣言しただけでは使える値が入っているとは限りません。 値を使う前に、代入されているかを確認することが大切です。

未定義のまま計算しない

未定義の値を使って計算しようとすると、何を計算すればよいか分かりません。

○main
整数型: x
整数型: y
y ← x + 1
print(y)

このコードはエラーになります。 x に値が入っていないからです。

y ← x + 1 では、右側の x + 1 を先に計算しようとします。 しかし、x が未定義なので、x + 1 の計算ができません。

つまり、次のような状態です。

  • x は宣言されている
  • でも、x に値は入っていない
  • その x を使って計算しようとしている
  • 何を足せばよいか分からない

エラーが出ても、あわてなくて大丈夫です。 診断欄を見て、どの変数が未定義なのか確認しましょう。

先に代入すれば計算できる

先ほどのコードは、x に値を入れてから計算すれば動きます。

○main
整数型: x
整数型: y
x ← 4
y ← x + 1
print(y)

出力は 5 です。

x に4が入っているので、x + 14 + 1 として計算できます。 結果は5なので、y に5が入ります。

このように、変数を計算に使う前には、その変数に値が入っている必要があります。

未定義と0は違う

未定義は、0とは違います。

整数型: x

この時点の x は未定義です。 0が入っているわけではありません。

0を入れたい場合は、はっきり代入する必要があります。

整数型: x
x ← 0

この場合、x には0が入っています。 未定義ではありません。

この違いは大切です。 未定義は「まだ値が決まっていない状態」。 0は「0という値が入っている状態」です。

合計を求める処理では、最初に sum ← 0 のように書くことがあります。 これは、合計の初期値として0を入れているという意味です。

未定義になりやすい場面

未定義は、次のような場面で起こりやすいです。

  • 変数を宣言しただけで表示する
  • 値を入れる前に計算で使う
  • 条件によって代入されない場合がある
  • 変数名を間違えている

特に、少し長い擬似言語では、どこで値が入ったのか分からなくなることがあります。 そのため、変数の値を上から順に追うことが大切です。

シミュレーターでエラーが出たときは、まず「使う前に値が入っているか」を確認しましょう。

未定義を防ぐために値を初期化する

未定義を防ぐために、最初に値を入れておくことがあります。 これを初期化と呼ぶことがあります。

例えば、合計を求める変数なら、最初に0を入れます。

整数型: sum
sum ← 0

個数を数える変数でも、最初に0を入れることがあります。

整数型: count
count ← 0

このようにしておくと、あとから sum ← sum + score のような計算をするときに、未定義のまま使うことを防げます。

ここでは、言葉を難しく覚えなくても大丈夫です。 まずは、「使う前に値を入れる」と考えておきましょう。

未定義を読むときのポイント

未定義で大切なのは、使う前に値を入れることです。

変数を見たら、次のように確認しましょう。

  • その変数は宣言されているか
  • その変数に値は代入されているか
  • 代入される前に表示や計算で使っていないか
  • 0と未定義を混同していないか

擬似言語を読むときは、変数の名前だけでなく、今その変数に何が入っているかを追う必要があります。

未定義は、プログラムのミスを見つけるうえでも大切な考え方です。 シミュレーターで実行しながら、どのタイミングで値が決まるのかを確認していきましょう。

まずは、未定義は変数にまだ値が入っていない状態と覚えておきましょう。

このトピックの他のセクション:

  1. 擬似言語の整数型
  2. 擬似言語の実数型
  3. 擬似言語の文字列型
  4. 擬似言語の論理型
  5. 擬似言語の未定義(現在表示中)

出力結果:


            

診断:


            

変数: