この資料では、**変数のスコープ(有効範囲)**について学びます。特に「局所変数」と「大域変数」の違いを理解することで、プログラムの動作やバグの原因を正しく把握できるようになります。
スコープとは、変数が使える範囲(有効範囲) のことを指します。 変数がどこで宣言されたかによって、使える範囲が決まります。
大域変数(グローバル変数)
関数の外で宣言される変数。プログラム全体から参照可能。
局所変数(ローカル変数)
関数の中で宣言される変数。その関数の中だけで使用可能。
// 大域変数の宣言
文字列型: a ← "A"
〇 add()
// 局所変数の宣言
文字列型: a ← "B"
a を出力する
この場合、add() 内で出力されるのは "B" であり、大域変数
a ではありません。
問題1:局所変数がグローバル変数と同じ名前の場合
文字列型: ch ← "X"
〇 programA()
文字列型: ch
ch ← "A"
〇 programB()
ch ← "B"
〇 main()
ch を出力する
programA()
ch を出力する
programB()
ch を出力する
main() を呼び出したときの出力として正しいものを選びなさい。
ア. A B X イ. B X A ウ. X A B エ. X B A
文字列型: a ← "A"
〇 programB(文字列型: b)
b を出力する
文字列型: a ← b
a を出力する
programB("X") を呼び出したあと、a を出力する。
文字列型: a ← "A"
〇 programC()
a を出力する
a ← "C"
a を出力する
programC() を呼び出したあと、a を出力する。
次の手続 main を呼び出したとき、「X」が何回出力されるかを求めなさい。
文字列型: msg ← "X"
〇 main()
msg を出力する
文字列型: msg ← "Y"
msg を出力する
show(msg)
change()
〇 show(文字列型: value)
value を出力する
文字列型: msg ← value
msg を出力する
〇 change()
msg を出力する
msg ← "Z"
msg を出力する