C言語学習ポータル(無料版) 学習コンテンツ プログラムとは何か プログラムとは「手順書」である

📜 プログラムとは何か

プログラムとは「手順書」である

無料公開版に収録・読む目安 10分

🎯 プログラムが満たすべき3条件(順序・明確さ・有限)を理解し、曖昧な指示との違いを説明できる

友達に「カレー作っといて」と頼めば、たぶんカレーが出てきます。玉ねぎの切り方も火加減も、相手が経験で補ってくれるからです。ところが同じ言葉をロボットに言うと、何も起きないか、とんでもないものが出てきます。補ってくれる人がいないからです。

プログラムとは、この「補ってくれない相手」に向けて書く手順書のことです。人間向けの手順書とは、要求される厳しさが違います。良い手順書には3つの条件があります。

  1. 順番が決まっている — 上から順に、1つずつ実行される
  2. 一つひとつが曖昧でない — 「適量」「いい感じ」「しばらく」は書けない
  3. いつか終わる — 永遠に終わらない手順は手順書として失格

3つ目は見落とされがちですが、実は事故が多い条件です。「お湯が沸くまで待つ」は、火をつけ忘れれば永遠に終わりません。コンピュータの場合、終わらない手順を渡すと本当に終わりません。画面が固まったまま反応しなくなる現象の正体は、たいていこれです(無限ループといいます)。終わる条件を書いたかは、手順書を書いたら必ず確認する点です。

順番が意味を持つ

「鍋に水を入れる」「火にかける」——この2つは入れ替えると空焚きになります。手順書では、並びそのものが意味を持ちます。プログラムもまったく同じで、上の行から順に実行されます。行を1つ入れ替えただけで結果が変わる、というのはCでも日常茶飯事です。

ビット「材料をそろえる」より先に「炒める」があったら、ボクは何も持たずにフライパンを振っちゃうよ。

曖昧さを消す練習

試しに「じゃんけんの勝敗を判定する手順」を書いてみましょう。

面倒に感じますか。その面倒くささこそがプログラミングの本体です。人間なら「グーはチョキに勝つ」と一言で済むところを、機械には組み合わせごとに教える必要があります。人間が普段いかに大量の判断を無意識に済ませているかが分かります。書き出していないことは、実行されません。

この手順の中身、つまり「どういう段取りで問題を解くか」という考え方の部分をアルゴリズムと呼びます。アルゴリズムは次のトラックでじっくり扱います。ここでは「プログラム=機械のための、抜けのない手順書」という一点だけ持ち帰ってください。

ちなみに、この感覚はAIへの指示にもそのまま効きます。「なんかいい感じの文章書いて」より「読者は初心者、400字、です・ます調」のほうが良い結果が返るのは、曖昧さを減らしているからです。相手が機械でもAIでも人でも、指示を具体化する力は同じ筋肉を使います。プログラミングを学ぶと日常の段取りが上手くなる、と言われるのはこのためです。手順書を書く訓練は、コンピュータのためだけのものではありません。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

プログラムぷろぐらむ

コンピュータに実行させたい処理の手順を、決まった書き方で並べたもの。料理でいうレシピに近く、上から順に指示を実行させる設計図のような存在。プログラムを書く行為はこの手順書を設計する作業そのものと言える。

アルゴリズムあるごりずむ

問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。

同じトラックのほかの項目

コンピュータは何をする機械かコンピュータが「超高速だが命令どおりにしか動かない機械」であることを、自分の言葉で説明できる ソースコードから機械語へ——コンパイルの旅ソースコード・コンパイラ・機械語の関係と、コンパイルという工程の役割を説明できる CPUとメモリの模式図CPUとメモリの役割分担を机の比喩で説明でき、メモリが「番地つきのロッカー」であることを理解する 命令実行サイクル(Fetch-Decode-Execute)CPUが命令を1つずつ取り出して実行する繰り返しで動いていることを理解する プログラミング言語の地図とCの位置低級言語・高級言語の違いを理解し、数ある言語の中でのC言語の位置づけを説明できる なぜ最初にC言語なのかAI時代にC言語を最初に学ぶ意味を、自分なりの理由として持てるようになる 0と1ですべてを表す——2進数の入口2進数の仕組みを理解し、簡単な2進数と10進数の相互変換ができる
‹ コンピュータは何をする機械か ソースコードから機械語へ——コンパイルの旅 ›

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH