C言語学習ポータル(無料版) 学習コンテンツ プログラミング的思考 擬似コードで書いてみる

🧭 プログラミング的思考

擬似コードで書いてみる

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

🎯 擬似コードの書き方を知り、日本語まじりで手順を表現できるようになる

頭の中の手順を、そのままC言語で書こうとすると大変です。文法の心配と、手順の心配を同時にすることになるからです。人間の頭は、2つのことを同時に考えるのが苦手です。

そこで使うのが擬似コードです。プログラムの形をした日本語、と考えてください。文法エラーの存在しない世界で、手順だけに集中できます。

書き方の作法

決まった規格はありませんが、次の作法で書くと読みやすくなります。

例: 点数の平均を求める

合計 ← 0
個数 ← 0

点数リストの各要素 x について繰り返す:
    合計 ← 合計 + x
    個数 ← 個数 + 1

もし 個数 が 0 ならば:
    「データがありません」と表示する
そうでなければ:
    平均 ← 合計 ÷ 個数
    平均 を表示する

文法を1つも知らないのに、何をしているか読めるはずです。これが擬似コードの威力です。しかも、前回学んだ順次・分岐・反復がそのまま形になっています。

ビット字下げがあるだけで、どこからどこまでが繰り返しか分かるよね。この感覚、Cでもそのまま使うよ。

なぜ先に擬似コードを書くのか

理由は3つあります。

  1. 手順の間違いを、文法の間違いと切り離して見つけられる
  2. 人に見せて相談できる(Cを知らない人にも読める)
  3. そのままコードに置き換えられる — 1行が1行に対応することが多い

実際、上の擬似コードは、C言語の for と if にほぼ機械的に置き換えられます。あとの第1部で文法を覚えたとき、「あ、あの擬似コードの形だ」と気づく瞬間が来ます。

Cに置き換えるとどうなるか

少し先取りして、対応だけ見ておきましょう(今は分からなくて大丈夫です)。

記号は違いますが、形はそっくりです。字下げしていた部分が { } で囲まれる、という対応も見えるでしょうか。つまりアルゴリズムさえ固まっていれば、C言語の学習は「この対応表を覚える作業」にかなり近づきます。逆に手順が固まっていなければ、文法をいくら覚えても書けません。

やってはいけないこと

擬似コードだからといって、曖昧な言葉を書いてはいけません。

曖昧なまま擬似コードに書いた部分は、必ず実装のときに詰まります。 逆に言えば、擬似コードで詰まる場所を先に見つけられるのが、この道具の価値です。手が止まったら、その部分をもう一段分解しましょう。

要点まとめ

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

この項目に出てくる用語

擬似コードぎじこーど

プログラミング言語の文法にとらわれず、日本語や簡単な記号で手順の流れを書き表したもの。実装に入る前に頭の中を整理するための下書きにあたる。「もし〜ならば」「〜を繰り返す」のように、日本語まじりで書いてかまわない。

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

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

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

問題を分解する(Decomposition)大きな問題を、手が動く大きさの小問題に分ける考え方を身につける パターンを見つける(Pattern Recognition)分解した作業の中から共通点・繰り返しを見つけ出せるようになる 抽象化——捨てる勇気目的に必要な情報だけを残し、残りを捨てる「抽象化」の考え方を理解する アルゴリズム——手順を組み立てるアルゴリズムの条件を理解し、順次・分岐・反復の3つの型で手順を組み立てられる フローチャート入門フローチャートの基本記号を覚え、処理の流れを図で読み書きできる 日常の問題をアルゴリズム化する身近な問題を、抜けのない手順として書き下せるようになる 良い手順・悪い手順——効率の予感同じ結果でも手順によって手数が大きく変わることを、探索の例で実感する
‹ アルゴリズム——手順を組み立てる フローチャート入門 ›

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

完全版(BOOTH)を見る

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

Web版 / BOOTH