🧭 プログラミング的思考
🎯 アルゴリズムの条件を理解し、順次・分岐・反復の3つの型で手順を組み立てられる
分解して、パターンを見つけて、抽象化する。ここまでで材料は揃いました。最後の道具は、それらを動く順番に組み立てることです。この組み立てた手順をアルゴリズムと呼びます。
アルゴリズムと呼べる条件
ただの思いつきの手順とアルゴリズムを分けるのは、次の3つです。
「良い感じに並べる」は明確ではないので失格。「1から順に数を足し続ける」は終わらないので失格です。
手順は3つの型でできている
驚くことに、どんなに複雑なプログラムも、次の3つの組み合わせだけで書けます(構造化定理と呼ばれる有名な事実です)。
たった3つです。C言語の if も for も while も、この3つの型に名前を付けたものにすぎません。
日常にもこの3つしかない
朝の支度で確かめてみましょう。「顔を洗う→歯を磨く」は順次。「雨が降っていれば傘を持つ」は分岐。「かばんに必要なものが全部入るまで詰める」は反復です。私たちは無意識にこの3つを組み合わせて生活しています。プログラミングが特別な才能を必要としないと言われるのは、この意味においてです。
ちなみにアルゴリズムという言葉は、9世紀の数学者アル=フワーリズミーの名に由来します。1000年以上前から、人は「誰がやっても同じ答えにたどり着く手順」を大切にしてきたわけです。
例: 一番背の高い人を見つける
10人が並んでいます。一番背が高い人を見つける手順を組み立ててみましょう。人間なら一目で分かりますが、一度に1人しか見られないという制約でやってみます(これが機械の見え方です)。
順次(1)・反復(4)・分岐(3)が全部入っています。しかもこの手順は、10人でも1万人でもそのまま通用します。手順が人数に依存しない——これが良いアルゴリズムの手ざわりです。
覚えておきたい癖
手順を作ったら、必ず「例外」を確認してください。
この端っこの場合を考える癖が、のちにバグの数を大きく減らします。プロと初心者の差が最も出るのは、実はここです。手順を作ったら「0個のとき」「1個だけのとき」「全部同じとき」の3つを当ててみる。習慣にする価値のある確認です。
問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。