
武蔵野個別指導塾の特徴
【情報I】アルゴリズムの基本を図解で総まとめ—順次・分岐・反復とフローチャート・アクティビティ図|武蔵野個別指導塾

課題を進める手順を題材に、順次・分岐・反復を3枚の図で読み解きます。フローチャートとアクティビティ図の記号、条件の境目、繰り返しの終了を例題とPythonの実行結果で確かめられます。
よくあるのは、夏休みの課題の山を前にして「終わっていないものから順にやる」と決めたものの、どの冊子を開き、どこで丸付けをし、いつ次に移るかが決まらず、手が止まるという場面です。頭の中では手順があるつもりでも、別の人にそのまま実行してもらおうとすると、判断を任せている部分が見えてきます。この曖昧さを取り除いて、目的に合う結果までたどれる形にするのが、アルゴリズムを学ぶ出発点です。
教科書に出てくるひし形や矢印は、覚えるためだけの記号ではありません。「どの処理を先にするか」「どちらへ進むか」「どこへ戻るか」を、目で確かめるための道具です。図を読めるようになると、プログラムをまだすらすら書けなくても、処理の抜けや繰り返しの回数のずれを説明できます。まずは手順を短い言葉にし、それを図に置き換え、具体的な値を入れて追ってみましょう。
この単元で身につけること
- アルゴリズムの目的を説明します。何を受け取り、どのような結果を得たいのかを、処理を考える前に明らかにします。
- 順次・分岐・反復を見分けます。上から進む部分、条件で進路を選ぶ部分、同じ処理に戻る部分を区別して読めるようにします。
- フローチャートの記号を使います。開始・終了、処理、判断、入出力を描き分け、矢印を使って実行順序を表します。
- アクティビティ図を読みます。動作と条件による流れをたどり、分岐した経路が合流した後に何が実行されるかを確かめます。
- 手順を言葉で書き、確かめます。初めの状態、条件、状態の更新、終わり方を明示し、境目の値でも目的どおりに動くかを調べます。
中学校までに学んだ場合分けや、同じ計算を繰り返す考え方が、この単元の土台になります。新しいのは、答えを求める自分だけでなく、書かれた指示をそのまま実行する相手にも伝わる形に整えることです。図と文章は別々に暗記せず、同じ手順を違う形で表したものとして結び付けます。
基本の考え方
アルゴリズムは目的に向かう明確な手順です
アルゴリズムとは、問題を解くための処理手順を、実行できるように明確に定めたものです。例えば「課題を頑張る」は目標であり、そのままでは手順になりません。「未提出の課題を一覧にする」「締切の早い順に並べる」「同じ締切ならページ数の少ないものを先にする」と書けば、選び方が具体的になります。ただし、その条件でも同じものが残るなら、一覧で上にあるものを選ぶなど、必要に応じて選び方を補います。
手順を考える前に、入力、処理、出力を区別すると見通しが立ちます。入力は処理のもとになるデータ、処理はそれに対して行う操作、出力は得られる結果です。未完了のページ数を入力し、1日に進めるページ数に従って必要な日数を求めるなら、出力は日数です。一方、冊子を実際に開いて解く手順を考えるなら、目的は課題が完了した状態になることです。何を解決したいかによって、必要な手順の細かさも変わります。
同じ目的でも、アルゴリズムは1通りとは限りません。合計を求めるとき、数を1つずつ足しても、まとまりごとに足してからまとめても、条件が合えば同じ結果になります。大切なのは、対象とする入力の範囲で正しい結果が得られることと、計算を終える問題なら有限回の処理で終了することです。「いくつかの例で動いた」だけでは、どんな入力でも正しいとはまだ言えません。
アルゴリズムとプログラムも区別します。アルゴリズムは解決の手順そのもので、プログラムはその手順をコンピュータが実行できる言語で表したものです。日本語の説明や図で手順を整理してから、Pythonなどの言語で書くことができます。文法に合ったプログラムでも、手順の設計が目的から外れていれば正しい答えは得られません。
順次・分岐・反復で処理の流れを組み立てます
順次は、処理を決められた順番で実行する構造です。「問題を解く」「丸付けをする」「間違えた問題を記録する」には順番があります。丸付けを先に移してしまうと、解いた答案を確かめるという目的を果たせません。処理の内容が同じでも、順番が変わると結果や意味が変わることがあります。
分岐は、条件が成り立つかどうかに応じて進む処理を選ぶ構造です。「未完了の問題があるなら続きを解く、なければ提出を準備する」のように書きます。条件が成り立つことを真、成り立たないことを偽といいます。1回の判断では、条件に合う経路を選んで進みます。「難しそうなら」のような条件は判断する人によって変わるため、機械に行わせたいなら、使えるデータで判定できる条件に直す必要があります。
反復は、同じ処理を繰り返す構造です。「3回繰り返す」のように回数を指定する形も、「未完了の問題がある間、1問ずつ解く」のように条件で継続を決める形もあります。条件を先に調べる反復では、初めから条件が偽なら処理は1回も実行されません。反復を読むときは、繰り返す処理のまとまりと、そのまとまりを抜ける条件を一緒に探します。
この3つを組み合わせると、複雑な手順も小さなまとまりに分けて考えられます。反復の中に分岐を置けば「各問題を確認し、間違っていたときだけ印を付ける」と表せます。全体が反復だからといって、内部の処理がすべて毎回実行されるとは限りません。どこまでが反復で、その中のどこが分岐かを囲って読むと、実行回数を取り違えにくくなります。
図の形と矢印をセットで読みます
フローチャートは、処理の流れを記号と矢印で表した図です。図1のように、開始と終了には端子の記号、計算や代入などには長方形、条件の判断にはひし形、データの入出力には平行四辺形を使います。端子は丸みのある形で描かれ、教材によって楕円に近い形などの違いがあります。記号の名称だけでなく、その中に何を書くかまで結び付けて覚えましょう。

図1は記号の一覧であり、1つの処理を上から実行する図ではありません。実際のフローチャートでは、記号を矢印でつないで順序を示します。判断の出口には「はい」「いいえ」などを付け、どちらの条件で進むかを明らかにします。紙面の上下だけで順番を決めず、必ず矢印を追います。下にある記号から上へ戻る矢印も、反復では自然に登場します。
アクティビティ図も、動作や処理の流れを表す図です。代表的な記法では、開始は黒丸、終了は黒丸を外側の円で囲んだ記号、動作は角を丸めた長方形で表します。分岐や合流にはひし形を使い、分岐の矢印に角括弧で囲んだ条件を書きます。この条件をガード条件といいます。単純な二者択一なら、条件が重ならず、どちらかを選べるようにします。
アクティビティ図では、並行する流れの分割や同期に太い棒を使うこともあります。ひし形の合流は、選ばれた経路が再び1本になることを表し、並行処理をすべて待ち合わせる記号ではありません。フローチャートと目的は重なる部分がありますが、開始や終了の記号を混ぜず、どの種類の図を描いているかをそろえることが必要です。
例題で解き方を確かめる
例題1 順次の順番を値の変化で確かめます
未完了のページ数を8とします。まず3ページ終え、その後で追加の課題が2ページ届きました。残りのページ数を求める手順を、初めの値から順に追ってください。ここでは、ページ数を入れる名前を remaining とし、名前に保存された値を後から入れ替えられるものとして扱います。
- 初めに
remainingに8を入れます。開始時の状態を決めないと、後の計算で何から引くのかわからないためです。 - 保存されている値から3を引き、結果を同じ名前に入れ直します。3ページ終えた分だけ未完了のページ数が減るので、値は5になります。
- その値に2を足して入れ直します。追加された課題を残りに含めるので、値は7になります。
- 最後の値を表示します。求めるのは途中の残りではなく、追加まで反映した後の残りだからです。
remaining = 8
remaining = remaining - 3
remaining = remaining + 2
print(remaining)
出力は次のとおりです。
7
Pythonの = は、右辺を計算して左辺の名前に値を代入する記号です。数学の等式のつもりで remaining = remaining - 3 を読むと不自然ですが、「今の値から3を引いた結果で、保存した値を更新する」と読めば手順がつながります。表示を途中に移すと、表示される値も変わります。この例で最初の更新直後に表示すれば5なので、出力する場所も手順の一部です。
答え:残りは7ページで、保存される値は8、5、7の順に変わります。
例題2 条件に等しい値がどちらに入るかを調べます
残りが5ページ以上なら「分けて進める」、5ページ未満なら「今日進める」と表示する手順を考えます。残りがちょうど5ページのとき、表示される言葉を求めてください。この区分は条件分岐の練習のために決めたルールであり、実際の学習計画は内容や使える時間に合わせて考えます。
- 分岐の条件を「残りが5以上か」と書きます。「以上」には5自身を含むため、境目が明確になります。
- 残りの値5を条件に当てはめます。5は5以上なので、条件は真です。
- 真のときの処理だけを実行します。この二者択一では、偽のときの処理まで続けて実行するわけではありません。
remaining = 5
if remaining >= 5:
print("分けて進める")
else:
print("今日進める")
出力は次のとおりです。
分けて進める
>= は「以上」を表し、> は「より大きい」を表します。この2つは5以外の値では同じ分岐になることがあっても、5で違いが現れます。条件を確認するときには、境目の直前、境目そのもの、境目の直後を選びます。この例なら4、5、6です。4では「今日進める」、5と6では「分けて進める」となることを確かめると、条件の書き間違いを発見しやすくなります。
答え:5ページは「5ページ以上」に含まれるので、「分けて進める」と表示されます。
例題3 条件を先に調べる反復を追います
未完了の課題が3個あります。「残りが0より大きい間、課題を1個完了し、残りを1減らす」という手順で、完了処理の回数と最後の残りを求めてください。ここでは、1回の完了処理が確実に課題1個を終わらせるものとし、課題が途中で増えることはありません。
図2のように、判断から「はい」の矢印で処理へ進み、その後は判断へ戻します。「いいえ」の矢印だけが終了へ向かいます。図にある「残りを1減らす」は、課題を完了した結果を記録に反映する処理です。

- 初期値を3とします。図の反復に入る前に、判断で使う残りの値を用意する必要があるためです。
- 残りが0より大きいかを調べます。3では真なので1個完了し、残りを2に更新します。
- 判断に戻り、2でも1でも同じ順序で処理します。更新後は直ちに終了と決めず、もう一度条件を調べるためです。
- 残りが0になったときの判断を行います。今度は偽なので、完了処理に入らず終了へ進みます。
値の変化を表にして追うことをトレースといい、その記録をトレース表と呼びます。表では「判断する直前」と「更新した直後」を分けると、同じ回の値を取り違えずに済みます。
| 判断の回 | 判断直前の残り | 残り > 0 | 完了処理後の残り |
|---|---|---|---|
| 1 | 3 | 真 | 2 |
| 2 | 2 | 真 | 1 |
| 3 | 1 | 真 | 0 |
| 4 | 0 | 偽 | 処理しない |
remaining = 3
while remaining > 0:
remaining = remaining - 1
print(remaining)
print("終了")
出力は次のとおりです。
2
1
0
終了
while の後には繰り返しを続ける条件を書きます。字下げされた2行が反復の中身で、最後の表示は字下げがないので反復を抜けた後に1回だけ実行されます。このコードでは実際に課題を解く動作をコンピュータにさせず、課題を1個終えた後の残りの変化を表しています。処理の回数は3回ですが、最後に抜けるための確認があるので条件の判断は4回です。
答え:完了処理は3回、条件の判断は4回で、最後の残りは0個です。
例題4 アクティビティ図を言葉に戻します
課題を解いた後、見直しが必要なら見直しをし、不要ならそのまま提出する手順を表します。図3のアクティビティ図を読み、見直しが必要な場合と不要な場合の動作の順番を、それぞれ言葉で書いてください。見直しの要否は、この図に入る前に決めた基準で判定できるものとします。
- 開始を表す丸から矢印を追います。図の左上にある文字から読むのではなく、開始記号を出発点にするためです。
- 最初の動作「解く」の後で分岐を読みます。見直しが必要かどうかによって、次に行う動作が変わるためです。
- 必要な経路では「見直す」を通り、不要な経路ではその動作を通りません。選ばれた条件に対応する矢印だけをたどります。
- 合流後の「提出」を読みます。2つの経路が合流しているので、どちらの経路でもこの動作を行うためです。
ひし形を通るたびに新しい条件を判定するとは限りません。複数の矢印が入り、1本が出るひし形は合流を表します。分岐か合流かは、形に加えて矢印の入り方と出方で読み分けます。この例では、見直しが不要でも提出の動作は省略されません。
答え:必要なら「解く→見直す→提出」、不要なら「解く→提出」の順です。
つまずきやすいところと直し方
誤り1 曖昧な動作のまま図に入れてしまいます
誤った書き方は、「課題を適当に進める → 十分なら終了」です。動作の量も終了の基準も決まっていないので、実行する人が途中で解釈を補わなければなりません。図の形が整っていても、それだけでは手順の曖昧さは解消されません。
正しい書き方の例は、「未完了の課題数を調べる → 残りが0より大きいか判断する → はいなら1個完了して残りを1減らす → 判断に戻る」です。ここでは課題1個の範囲を先に決め、完了できることも前提にしています。処理を細かく分けるときは、目的に必要な細かさまでにとどめます。ページをめくる指の動きまで分けても、残りの個数を管理する手順の説明には役立ちません。
誤り2 条件分岐の両方の動作を実行します
誤った読み方は、図3を「解く → 見直す → 不要の経路も通る → 提出」と読むことです。分岐は処理を順に並べたものではなく、条件に合う経路を選ぶ場所です。「必要」と「不要」を同時に選ぶように読むと、そもそも見直しを省く経路を描いた意味がなくなります。

正しい読み方は、図3の上のひし形で、見直しが必要なら左側、不要なら右側を選ぶことです。左側は「見直す」を通り、右側はその動作を飛ばして、下のひし形に合流します。その後はどちらも「提出」に進みます。図中の角括弧に囲まれた言葉は矢印を通る条件であり、「必要」という名前の動作を実行する指示ではありません。
実際に指で矢印をたどるときも、1回の実行では1本の経路だけを選びます。別の入力を試すときには、開始へ戻って新しく追い直します。複数の入力の経路を一度につないでしまうと、どの入力に対してどの動作が行われたのかが曖昧になります。
誤り3 繰り返しを抜けるための変化を書き忘れます
誤った手順は、「残りを3にする → 残りが0より大きい間、残りを表示する」です。表示するだけでは残りは3のままなので、条件がいつまでも真になります。この例のように終了できずに繰り返し続ける状態を、無限ループといいます。終了する計算を作りたいときには修正が必要です。
正しい手順は、課題を1個完了するたびに残りを1減らし、更新後の値で条件を判断し直すことです。ただし、減らす処理があれば必ずよいわけでもありません。残りを3から2ずつ減らし、「残りが0ではない間」とすると、3、1、−1、−3と進み、0に一致しません。終了条件と更新の仕方は、組にして確認する必要があります。
「0になったら終了」と「0より大きい間は続ける」も、取り扱う値によって違いが出ます。残りが負になる可能性を排除していなければ、0との一致だけを調べる方法では止まれないことがあります。課題数を扱う今回のような問題では、初期値を0以上の整数に限ること、1回に1個ずつ減らすことを明確にすると、負になる前に終了する理由まで説明できます。
練習問題
練習1 言葉の手順を順次として追います
未完了のページ数を12とします。「4ページ終える」「追加の2ページを残りに加える」「残りを表示する」の順で実行したとき、表示する数を求めてください。また、表示を最初の処理の直後に移した場合の数も答えてください。2つの表示位置の違いに注目します。
練習2 分岐の境目を確かめます
「残りが4ページ以下なら『今日』、それ以外なら『分ける』と表示する」という手順があります。残りが3、4、5ページの場合の表示をそれぞれ答えてください。また、条件を「4ページ未満」に変えると、3つのうちどの入力の表示が変わるかも答えてください。
練習3 処理回数と判断回数を分けます
図2と同じ手順で、最初の残りを4個に変更します。完了処理の回数、条件の判断回数、最後の残りを求めてください。さらに、最初の残りが0個の場合についても、同じ3つを求めてください。条件は処理より先に調べるものとします。
練習4 手順を直して言葉で表します
未完了の課題が2個あります。「課題を1個完了する。残りが0より大きければ繰り返す」という説明には、残りの値を管理するための処理が不足しています。初期値の設定から終了までを、条件を先に調べる形で書き直してください。また、1個完了するたびに見直しの要否を判断する場合、必ず行う動作と必要な場合だけ行う動作を分けて答えてください。
答えと解説
練習1の答えは、最後に表示すれば10、最初の処理の直後に表示すれば8です。残りは12から8になり、追加を反映すると10になります。表示はその時点の値を取り出す操作なので、後で値が変わっても、すでに表示した数が書き換わるわけではありません。
練習2の答えは、3が「今日」、4が「今日」、5が「分ける」です。「4ページ未満」に変えた場合に表示が変わるのは4で、「分ける」になります。「以下」は境目を含み、「未満」は含まないためです。3と5だけで試すと、この条件の違いを見落とします。
練習3の答えは、最初が4個なら完了処理4回、判断5回、最後の残り0個です。最初が0個なら完了処理0回、判断1回、最後の残り0個です。最初が0でも条件の判断は行われますが、偽なので反復の中身には入りません。
練習4の答えの一例は、「残りを2にする。残りが0より大きいか調べる。真なら課題を1個完了し、残りを1減らして判断に戻る。偽なら終了する」です。見直しも組み込む場合、完了した各課題の見直しの要否を調べ、必要なら見直してから残りを1減らし、不要ならそのまま残りを1減らします。課題の完了と残りの更新は各回で必ず行い、見直しの動作だけを条件に応じて行います。この手順なら、残りは2、1、0と変わり、完了処理は2回で終わります。
次の単元へのつながりと家庭での確かめ方
この単元の手順は、変数、条件式、繰り返しの文法を学ぶと、そのままプログラムの土台になります。例えば、例題3の残りは変数、ひし形の問いは条件式、判断へ戻る矢印は反復に対応します。その先で多数のデータから目的の値を探すときにも、「どの順に調べるか」「見つかったらどうするか」「いつ探索を終えるか」が必要になります。
家庭では、まず5分で、紙に「残りは2個」と書き、図2を指で追いながら値を書き換えてみます。条件を調べるたびに丸を付け、完了処理の回数と丸の数を比べると、終了のための最後の判断を確かめられます。別の5分には、例題2の条件だけを見て、残りが4、5、6の場合の表示を先に予想し、理由を言葉で説明します。保護者の方が一緒に確かめる場合は、お子さまに「5はどちらに入るか」を尋ねると、条件の読み方を聞き取れます。
個別指導では、出力だけが違っている場合でも、まず初期値、次に条件を調べる時点、最後に値を更新する場所まで戻って確認します。図の矢印を追えない場合には、記号を増やす前に、同じ手順を短い日本語にして順序を確かめます。
まとめ
課題の山を前にした「何から始めればよいか」という迷いは、処理の順番だけでなく、判断の基準や終わり方が決まっていないことからも生まれます。手順を描いた後に、具体的な入力で最後まで追うと、足りない指示が見えてきます。答えが合ったときも、どの状態から始まり、どの条件を通ってそこへ届いたのかを説明できれば、入力を変えた問題にも向き合えます。
アルゴリズムの理解は、最後の答えだけでなく、そこへ至るすべての分岐と終了の理由を説明する言葉に表れます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




