
アルゴリズムは、ある問題を解くための処理を、実行できる順序にしたものです。単なる「やることリスト」と違うのは、同じ入力に対して誰が追っても同じ判断ができるよう、条件や繰り返しまで明確にする点です。高校「情報」で大事なのは、プログラミング言語の文法より先に、問題をどんな手順に分解するかを見ることです。
「手順」と「アルゴリズム」はどこが違う?
「手順」という言葉は広く使えます。たとえば「机を片づける→教科書を出す→勉強を始める」も手順です。ただし、これだけでは「机がすでに片づいている場合は?」「教科書が見つからない場合は?」という分岐が決まっていません。
アルゴリズムとして考えるときは、入力・処理・条件・繰り返し・出力を分けます。たとえば「3つの数から最大値を見つける」なら、最初の値を最大値候補にし、次の値と比べ、大きければ候補を更新し、最後まで繰り返す、という形にできます。ここまで決まれば、値が3個でも300個でも同じ考え方を使えます。
つまり、アルゴリズムの価値は「順番があること」だけではありません。問題の条件を変えても実行できる形まで、判断のしかたを明示することにあります。
まず「入力→処理→出力」で問題をほどく
コードを見ると急に難しく感じる人は、変数名や記号を追う前に問題を三つに分けます。
- 入力:何が与えられるか
- 処理:何を比べる・数える・更新するか
- 出力:最後に何を求めるか
例として「テストの点数の一覧から、80点以上の人数を数える」を考えます。入力は点数の一覧、処理は「80以上かを1件ずつ判定し、当てはまれば人数を1増やす」、出力は人数です。必要なのは高度なコードではなく、判定と更新の繰り返しです。
この分解を先にすると、Pythonでも擬似コードでも、表現が変わっても中身は同じだと分かります。プログラムを「英語のような記号の塊」と見るのではなく、「決めた処理を機械に実行させる表現」と見られるようになります。
条件分岐と繰り返しを見落とさない
アルゴリズム問題でつまずきやすいのは、一本道だと思って読んでしまうことです。実際には、処理の途中で条件によって道が分かれたり、同じ処理を何度も繰り返したりします。
たとえば「偶数なら2で割り、奇数なら3を足す」という処理では、最初に奇偶の判定が必要です。また、一覧のすべての値に同じ処理をするなら、何番目を処理しているかという状態も必要になります。
ここで有効なのが、紙に「条件」「そのとき何が変わるか」「次にどこへ進むか」を短く書く方法です。頭の中だけで追うと、条件を通らなかった場合まで勝手に実行したり、更新前と更新後の値を混ぜたりします。
ミニ練習:最大値を見つける処理を言葉で書く
次の4つの数から最大値を求める処理を、コードを使わず説明してみましょう。
12, 7, 19, 15
- 最初の12を「今の最大値」とする。
- 7と比べる。12の方が大きいので変更しない。
- 19と比べる。19の方が大きいので「今の最大値」を19に更新する。
- 15と比べる。19の方が大きいので変更しない。
- 最後に19を出力する。
大切なのは答え19ではなく、「候補を保持する→比べる→必要なら更新する」を繰り返したことです。数が100個になっても、この骨組みは変わりません。
短い手順ほど良いとは限らない
アルゴリズムには効率のよい・悪いがありますが、学び始めに「最短の手順を作らなければ」と焦ると、本来の問題理解を飛ばしやすくなります。最初は、多少手順が多くても正しく動く形を作る方が重要です。
また、同じ問題に答えを出せるアルゴリズムが複数あることもあります。検索のしかた、並べ替えのしかた、重複の除き方などは一通りではありません。まず正しく動く処理を説明できるようにし、その後で「入力が大きくなったらどちらが速いか」を比較します。
逆に、単に人間の作業順序を説明したいだけなら、必ずしもアルゴリズムという言葉にする必要はありません。条件や反復まで形式化する必要がある問題かが境目です。
次はコードではなく「状態の変化」を追う
次にプログラミング問題へ進むときは、1行ずつ訳すだけでなく、各行の後で変数の値がどう変わったかを表にしてください。特に「カウンタ」「合計」「最大値候補」「現在位置」の四つは、頻出する役割です。
アルゴリズムを理解できると、言語が変わっても問題の骨格は残ります。入力を確認し、状態を決め、条件で分け、必要な更新を繰り返し、出力する。この流れを自分の言葉で書けることが、次のプログラミング学習の土台になります。
フローチャートにすると何が見えるか
同じ処理をフローチャートへ直すと、順番だけでなく分岐と戻り先が見えます。長方形の「処理」、ひし形の「条件」、矢印の「次に進む向き」を使うと、どこで同じ処理を繰り返しているかを目で追えます。コードが読みにくいときは、すべてを図にする必要はありません。「条件が変わる場所」だけ簡単な分岐図にすると、処理の骨格を保ったまま表現を変えられます。
「正しく動く」と「効率がよい」は別の問い
アルゴリズムを評価するときは、まず正しい答えを出すか、その後で必要な処理量を考えます。たとえば100個の値から最大値を探すのに、全部を一度並べ替えてから最大を取る方法もありますが、最大値だけ欲しいなら一度ずつ比較して候補を更新すれば足ります。どちらも答えは出せても、目的に対して必要な仕事量は違います。
学び始めは「計算量」という専門語を暗記するより、入力が10倍になったとき処理がどのくらい増えそうかを想像してください。正しさと効率を分けて考えると、アルゴリズムを単なる手順書ではなく、比較・改善できる問題解決方法として見られます。
参考資料
文部科学省の高等学校「情報」関係資料では、問題の発見・解決や、コンピュータとプログラミングを扱います。本記事はその学習範囲を踏まえ、アルゴリズムを「問題解決の処理として説明できること」に重点を置いて整理しています。
- 文部科学省「高等学校学習指導要領 情報科関係資料」



