「アルゴリズム」と聞くと難しそうに聞こえますが、実は私たちが日常でずっとやっていることと同じ構造をしています。今回はその正体を、身近な例から解き明かします。
アルゴリズムって、プログラマーが使う難しいやつでしょ。私には縁がなさそう
そう身構えなくて大丈夫。今日の晩ごはん、何か作る予定ある?
え? カレーでも作ろうかと思ってるけど
そのレシピ、実はもうアルゴリズムだよ
……は?
『野菜を切る』→『炒める』→『水を入れて煮る』→『沸騰したらルーを入れる』——これ、順序と条件がある手順でしょ。それがまさにアルゴリズムの構造なんだ
……え、待って、拍子抜けなんだけど

アルゴリズムは、突き詰めると3つの構造の組み合わせでできてる。順次(上から順番に実行する)、分岐(条件によって処理を変える)、繰返し(同じ処理を何度も行う)
さっきのカレーで言うと?
『野菜を切る→炒める→煮る』は順次。『沸騰したらルーを入れる』は分岐——条件(沸騰したかどうか)によって次の行動が決まる。『弱火で15分煮込む』は繰返し——同じ状態を一定時間続ける、というイメージ
本当だ、全部レシピに当てはまるじゃない
この3つの構造を図にしたのがフローチャート。処理の内容を四角、条件分岐をひし形、みたいに記号で表して、手順を可視化する
記号があるのね
うん。試験では、フローチャートの記号の意味(処理か、判断か、ループか)を問う問題や、フローチャートをたどった結果どうなるかを問う問題が出る
もう1つ、アルゴリズムとセットで出てくるのがデータ構造——データをどう並べて管理するかの型
並べ方にも種類があるの?
代表的なのが3つ。配列は、番号のついた箱が横に並んでるイメージ。下駄箱みたいに、何番の箱に何が入ってるか、番号を指定すればすぐ取り出せる
わかりやすいわね
スタックは、後から入れたものが先に出てくる構造。積み重ねたお皿をイメージするといい。一番上に置いたお皿を、一番先に取る——これを後入れ先出し(LIFO:Last In, First Out)と呼ぶ
積んだお皿、上からしか取れないものね
そしてキューは逆で、先に入れたものが先に出てくる構造。レジの行列と同じで、先に並んだ人から順番に処理される。これを先入れ先出し(FIFO:First In, First Out)と呼ぶ
行列に横入りされたら困るものね
その感覚で合ってる


1つ目は、フローチャート記号の意味の混同。処理・判断・ループ、それぞれの記号の形と意味をセットで覚える
2つ目は、スタックとキューの出し入れ順序ね
そう。『後入れ先出し』のスタックと『先入れ先出し』のキュー、お皿と行列のイメージで区別すると間違えにくいよ
アルゴリズムって、思ったより身近だったのね
次はいよいよ、コンピュータそのものの中身の話。メモリとストレージ、この違い説明できる?
……あ、それ前に痛い目見たやつだ
著者が作った無料の過去問アプリ「ITパスポート学習」の「アルゴリズムとプログラミング」で、そのまま手を動かして確認できます。間隔反復法(SRS)が「忘れかけた瞬間」に自動で再出題してくれるので、読みっぱなしでは終わりません。