プログラムは3つしかない
プログラミングを学び始めると、
- if
- for
- while
- メソッド
- クラス
など、多くの文法が登場します。
その結果、
覚えることが多すぎる
難しい
と感じてしまう人が少なくありません。
しかし視点を少し変えると、プログラムの流れは非常に単純な構造で成り立っています。
結論から言うと、
プログラムの流れは3つしかありません
- 順次
- 選択
- 反復
この3つです。
これらはまとめて
基本制御構造
と呼ばれます。
どんな複雑なプログラムでも、この3つの組み合わせで動いています。
■ 順次(sequence)
最も基本的な形です。
上から順に処理が実行されます。
x ← 10
y ← 20
z ← x + y
print z
一本道の流れです。
特別な分岐も繰り返しもありません。
日常の行動に例えるなら、
- 起きる
- 顔を洗う
- 朝食を食べる
のような順番通りの動きです。
■ 選択(selection)
条件によって処理が分かれる形です。
if score >= 60 then
print "合格"
else
print "不合格"
endif
分かれ道のような流れです。
条件の結果によって進む方向が変わります。
ここで重要なのは、
特別な処理ではない
という点です。
単に「流れが分岐している」だけです。
■ 反復(iteration)
同じ処理を繰り返す形です。
for i ← 1 to 5
print i
endfor
ぐるぐる回る流れです。
回数や条件が満たされるまで続きます。
これも新しい概念というより、
同じ流れを何度も通っているだけ
です。
■ 実際のプログラムは組み合わせで動く
ここまでで3つの基本構造を見てきましたが、
実際のプログラムでは単独で使われることは多くありません。
多くの場合、組み合わせて使われます。
これを
ネスト(入れ子)
と呼びます。
意味は単純で、
箱の中に箱が入っている状態
です。
例:反復の中に選択がある場合
for i ← 1 to 5
if i mod 2 = 0 then
print "偶数"
else
print "奇数"
endif
endfor
ここでは
- 繰り返す(反復)
- 判定する(選択)
- 表示する(順次)
という構造になっています。
反復
└ 選択
└ 順次
重要なのは
新しい仕組みは増えていない
ということです。
基本の3つを組み合わせているだけです。
■ Unityプログラムで見ると
Unityを学んでいる人は次の対応で考えると理解しやすくなります。
| Unityの動き | 基本構造 |
|---|---|
| Update()が毎フレーム動く | 反復 |
| キー入力判定 | 選択 |
| 処理順序 | 順次 |
ゲームプログラムも同じ基本構造で動いています。
特別な魔法はありません。
■ 基本情報技術者試験との対応
試験の擬似言語では次の形で登場します。
| 概念 | 表現 |
|---|---|
| 順次 | 上から順に実行 |
| 選択 | if / else |
| 反復 | for / while |
問題が難しく見えるのは、
構造が増えているのではなく組み合わせが増えているだけ
という視点を持つことが重要です。
■ 覚える量は増えていない
プログラミングを学習していると、
- 新しい文法
- 新しい命令
- 新しい書き方
が次々に出てきます。
その結果、
追いつけない
向いていない
と感じることがあります。
しかし本質は変わりません。
流れの形は3つだけ
- 順次
- 選択
- 反復
どんな大規模システムでも同じです。
理解が難しくなったときは、
今どの形が使われているか
それだけを確認してみてください。
読み解きやすくなります。
■ まとめ
プログラムの流れは多様に見えますが、本質的には
- 順次
- 選択
- 反復
この3つの基本構造の組み合わせです。
新しい文法を覚えているのではなく、
流れの形を理解している
と捉えることで、プログラムの理解は格段に進みます。
複雑に見えるコードに出会ったときほど、この基本に立ち返ってみてください。
理解の助けになります。





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