プログラムは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

ここでは

  1. 繰り返す(反復)
  2. 判定する(選択)
  3. 表示する(順次)

という構造になっています。

反復
 └ 選択
     └ 順次

重要なのは

新しい仕組みは増えていない

ということです。

基本の3つを組み合わせているだけです。


■ Unityプログラムで見ると

Unityを学んでいる人は次の対応で考えると理解しやすくなります。

Unityの動き基本構造
Update()が毎フレーム動く反復
キー入力判定選択
処理順序順次

ゲームプログラムも同じ基本構造で動いています。

特別な魔法はありません。


■ 基本情報技術者試験との対応

試験の擬似言語では次の形で登場します。

概念表現
順次上から順に実行
選択if / else
反復for / while

問題が難しく見えるのは、

構造が増えているのではなく組み合わせが増えているだけ

という視点を持つことが重要です。


■ 覚える量は増えていない

プログラミングを学習していると、

  • 新しい文法
  • 新しい命令
  • 新しい書き方

が次々に出てきます。

その結果、

追いつけない

向いていない

と感じることがあります。

しかし本質は変わりません。

流れの形は3つだけ

  • 順次
  • 選択
  • 反復

どんな大規模システムでも同じです。

理解が難しくなったときは、

今どの形が使われているか

それだけを確認してみてください。

読み解きやすくなります。


■ まとめ

プログラムの流れは多様に見えますが、本質的には

  • 順次
  • 選択
  • 反復

この3つの基本構造の組み合わせです。

新しい文法を覚えているのではなく、

流れの形を理解している

と捉えることで、プログラムの理解は格段に進みます。

複雑に見えるコードに出会ったときほど、この基本に立ち返ってみてください。

理解の助けになります。

訪問数 25 回, 今日の訪問数 1回

記事下広告

C#

Posted by hidepon