スコープとは? ― C#と情報技術者試験の疑似言語で理解する
プログラミングをしていると、こんなことが起こります。
if (true)
{
int x = 10;
}
Console.WriteLine(x); // エラー
「さっき x を作ったのに、なぜ使えないの?」
今日はこの理由を理解します。
■ スコープとは何か?
スコープ(scope)とは
その名前が使える範囲
のことです。
変数が「どこまで生きられるか」を決めるルールです。
■ C# の場合
C#では
波かっこ {} の中がひとつの範囲
です。
if (true)
{
int x = 10;
Console.WriteLine(x); // OK
}
Console.WriteLine(x); // エラー
x は {} の中だけで使えます。
外では存在しません。
■ 情報技術者試験の疑似言語では?
基本情報技術者試験などで使われる疑似言語でも
考え方は同じです。
例:
if 条件 then
x ← 10
endif
x を表示する
このとき、
x は if の中で定義された変数
と考えるのが正解です。
外で使うとエラーになる、と考えます。
■ 疑似言語でも「範囲」は存在する
疑似言語は簡略化されていますが、
- 手続き(procedure)
- 関数(function)
- 繰り返し
- 条件分岐
の中で定義された変数は、
基本的にその中でのみ有効です。
つまり
C#と同じ発想
なのです。
手続き(procedure)は値を返さない処理、関数(function)は値を返す処理です。C#ではどちらもメソッドですが、
void Show()
{
}
は表示するだけの手続き、
int Add(int a, int b)
{
return a + b;
}
は結果を返す関数に当たります。違いは「戻り値があるかどうか」です。
■ なぜこのルールが必要?
もしどこでも変数が使えたら:
- 同じ名前がぶつかる
- どこで変更されたかわからない
- 読みにくい
大規模開発では致命的です。
だからスコープという概念があります。
■ 試験問題で気を付けるパターン
疑似言語ではこういうサンプルがあった場合
procedure Sample()
x ← 5
endprocedure
x を表示する
答え:
x は Sample の外では使えない
これがスコープの理解です。
■ 今日覚えること
- スコープ=使える範囲
- C#では {} が境界
- 疑似言語でも手続きの中が範囲
- 内で作った変数は外では使えない
■ なぜ今これをやるのか?
- クラス
- メソッド
- static
- 名前空間
を学びます。
そのすべての土台が
スコープの理解
です。




ディスカッション
コメント一覧
まだ、コメントがありません