【変数から段階的に学習 第2回】

広告

変数から段階的に学習:第1回|第2回(今ここ)|第3回|[目次へ]


第1回の復習

前回は、プログラムは実行して初めて動くこと、Main がスタート地点であることを学びました。

今回は、Main の中がどう動くかを見ていきます。


プログラムは上から順に実行される

Main の中では、プログラムが上から順番に実行されます。

多くの人は

  • プログラムがどの順番で読まれるか
  • CPUがどのように実行するか

を知らないため混乱します。ここを押さえると、デバッグや動作の理解が楽になります。


ブロックの中は上から下、ブロックの並び順も重要

プログラムでは { }(波かっこ)で囲まれた範囲をブロックと呼びます。

例えば Main の { } の中、if や for の { } の中も、それぞれブロックです。

大切なルールは2つです。

  1. ブロックの中:上から下へ、1行ずつ実行される
  2. ブロックの並び順:上に書いたブロックが先に、下に書いたブロックが後に実行される

つまり、どこに書いたか(上下の位置)が、そのまま実行の順番になります。

同じメソッド内では、例えばこうなります。

static void Main(string[] args)
{
    int score = 80;
    if (score >= 60) { Console.WriteLine("合格"); }   // 上 → 先に評価・実行
    if (score >= 80) { Console.WriteLine("優秀"); }   // 下 → 後に評価・実行
}

実行結果は「合格」「優秀」の順で表示されます。上に書いた if ブロックが先、下に書いた if ブロックが後です。

補足:名前空間、クラス、メソッドの定義も { } で囲まれますが、ここでいう「並び順=実行順序」は、Main の中や if/for の中など、実際に実行される部分に当てはまります。メソッドは「呼ばれたとき」に実行されるので、定義の上下は実行順序に影響しません。

例えば、メソッドを上に書いても下に書いても、呼び出しの順番で実行されます。

static void SayA() { Console.WriteLine("A"); }   // 上に書いても
static void SayB() { Console.WriteLine("B"); }   // 下に書いても

static void Main(string[] args)
{
    SayB();  // 先に呼ぶ → B が先に表示される
    SayA();  // 後に呼ぶ → A が後に表示される
}

イメージ:読書のように上から下へ

本を読むとき、上から下へ、左から右へ進みます。プログラムも同じです。

1行目  ← ここから
2行目
3行目
4行目  ← ここまで順番に

具体例で確認する

static void Main(string[] args)
{
    string name = "山田";      // ① まずここが実行される
    Console.WriteLine(name);   // ② 次にここが実行される
}

実行の流れはこうなります。

① name に "山田" を入れる
    ↓
② name の中身を表示する

順番を変えるとどうなるか

static void Main(string[] args)
{
    Console.WriteLine(name);   // ① ここを先に実行しようとする
    string name = "山田";      // ② その後に name を作る
}

この順番だとエラーになります。

理由は、①の時点ではまだ name が存在しないからです。プログラムは上から順に実行されるため、使う前に作る必要があります。


図解:プログラムの流れ

プログラム開始
    ↓
Main の { の直後
    ↓
1行目を実行
    ↓
2行目を実行
    ↓
3行目を実行
    ↓
...
    ↓
} に到達 → Main 終了
    ↓
プログラム終了

if や for がある場合

if や for があると、実行される行が変わります。

static void Main(string[] args)
{
    int score = 80;           // ① 実行
    if (score >= 60)          // ② 実行(条件チェック)
    {
        Console.WriteLine("合格");  // ③ 条件が true なら実行
    }
    Console.WriteLine("終了");     // ④ 必ず実行
}

流れは次のとおりです。

① score に 80 を入れる
    ↓
② score >= 60 をチェック → true
    ↓
③ 「合格」を表示(if の中に入る)
    ↓
④ 「終了」を表示

ここが理解できると

  • デバッグ:どの行で問題が起きているか追いやすくなる
  • 変数のスコープ:どこで作った変数がどこまで使えるか分かる
  • Main の中の動き:第1回で学んだ Main の中で、上から順に実行されることが分かる

まとめ

ポイント説明
実行順序上から下へ、1行ずつ
ブロックブロックの中は上から下。並び順も上下で決まる
開始地点Main の { の直後(第1回で学んだ Main)
重要ルール使う前に作る(変数は宣言してから使う)

次回

次回は「プログラムは情報整理の歴史」です。変数・配列・クラス・List が、なぜ次々と登場するのかを「生徒名簿」の例で学びます。

訪問数 6 回, 今日の訪問数 6回

広告

C#

Posted by hidepon