🧭 プログラミング的思考
🎯 擬似コードの書き方を知り、日本語まじりで手順を表現できるようになる
頭の中の手順を、そのままC言語で書こうとすると大変です。文法の心配と、手順の心配を同時にすることになるからです。人間の頭は、2つのことを同時に考えるのが苦手です。
そこで使うのが擬似コードです。プログラムの形をした日本語、と考えてください。文法エラーの存在しない世界で、手順だけに集中できます。
書き方の作法
決まった規格はありませんが、次の作法で書くと読みやすくなります。
← で表す(合計 ← 0 は「合計に0を入れる」)例: 点数の平均を求める
合計 ← 0
個数 ← 0
点数リストの各要素 x について繰り返す:
合計 ← 合計 + x
個数 ← 個数 + 1
もし 個数 が 0 ならば:
「データがありません」と表示する
そうでなければ:
平均 ← 合計 ÷ 個数
平均 を表示する文法を1つも知らないのに、何をしているか読めるはずです。これが擬似コードの威力です。しかも、前回学んだ順次・分岐・反復がそのまま形になっています。
なぜ先に擬似コードを書くのか
理由は3つあります。
実際、上の擬似コードは、C言語の for と if にほぼ機械的に置き換えられます。あとの第1部で文法を覚えたとき、「あ、あの擬似コードの形だ」と気づく瞬間が来ます。
Cに置き換えるとどうなるか
少し先取りして、対応だけ見ておきましょう(今は分からなくて大丈夫です)。
合計 ← 0 は sum = 0;〜について繰り返す は for (...) { ... }もし 〜 ならば は if (...) { ... }そうでなければ は else { ... }表示する は printf(...)記号は違いますが、形はそっくりです。字下げしていた部分が { } で囲まれる、という対応も見えるでしょうか。つまりアルゴリズムさえ固まっていれば、C言語の学習は「この対応表を覚える作業」にかなり近づきます。逆に手順が固まっていなければ、文法をいくら覚えても書けません。
やってはいけないこと
擬似コードだからといって、曖昧な言葉を書いてはいけません。
いい感じに並べ替える小さい順に並べ替える(大きさを比べて入れ替えるのを、入れ替えが起きなくなるまで繰り返す)曖昧なまま擬似コードに書いた部分は、必ず実装のときに詰まります。 逆に言えば、擬似コードで詰まる場所を先に見つけられるのが、この道具の価値です。手が止まったら、その部分をもう一段分解しましょう。
プログラミング言語の文法にとらわれず、日本語や簡単な記号で手順の流れを書き表したもの。実装に入る前に頭の中を整理するための下書きにあたる。「もし〜ならば」「〜を繰り返す」のように、日本語まじりで書いてかまわない。
問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。