フローチャートの繰り返し練習問題8問|解答・解説付きで動かして確認

最終更新日

何回、繰り返す? 解答・解説付き8問。繰り返しのフローチャート

「このループは何回動く?」「終了したとき、カウンターはいくつ?」「未満を以下に変えると、どこが変わる?」。フローチャートを読めたつもりでも、実際に値を追うと迷うことがあります。

この記事では、繰り返し処理の練習問題を8問用意しました。回数の予想から、前判定・後判定、合計計算、終わらないループの修正まで、段階的に確認できます。各問に解答と解説があり、フローチャートを1ステップずつ動かして、自分の予想と実際の動きを比べられます。

まだ記号に慣れていない方は、フローチャートのループの書き方で、条件を表すひし形と戻る矢印を確認してから取り組んでください。

まず予想して、フローチャートを動かそう

最初は実行せずに、回数や最後の値を予想してください。「予想を回答する」で答え合わせができます。「1ステップ」は図の処理を1つずつ進める操作で、ループを1周進める操作ではありません。緑枠は直前に実行した箇所、現在値はその処理を実行した直後の値です。

解答は「解答・解説を見る」を開くまで隠れています。第1〜6問は開始値や比較条件を変更すると、変更後の条件に合わせて採点と解説も変わります。間違えた場合は、答えの数値だけを覚えるのではなく、予想とずれた最初の処理を見つけてみましょう。

まだ回答していません。

現在の i 0実行回数 0合計 0

解答・解説を見る

同じ処理をコードで確認

JavaScriptの例

Pythonの例

実行履歴

    問題で使う記号と数え方

    この教材では、丸みのある記号が開始・終了、長方形が処理、ひし形が条件判定、平行四辺形が結果の出力を表します。ひし形から出る「はい」は条件が真の経路、「いいえ」は偽の経路です。矢印を順番にたどり、処理を飛ばさず読んでください。

    i = i + 1は数式としての等式ではなく、「現在のiに1を足して、その結果をiに入れる」という代入です。i < 3は3未満、i <= 3(図ではi ≤ 3)は3以下を表します。

    「実行回数」は、図の「処理を1回実行」「合計にiを足す」「1人に通知する」の箇所を実行した回数です。開始・条件判定・カウンター更新を実行した回数とは区別します。特に、カウンターの値と実行回数は、開始値が違えば一致しません。

    基礎問題:回数・最終値・比較条件を読む

    以下の解答は、各問の初期条件に対するものです。上の実行画面で条件を変更した場合は、実行画面内の解答を参照してください。

    第1問:処理は何回実行される?

    iを0にし、i < 3の間、処理を1回実行してからiを1増やします。処理は全部で何回実行されるでしょう?

    第1問の解答・解説

    3回です。iが0・1・2のときに処理を実行します。3になった時点で条件が偽になるため、i = 3では処理しません。条件判定は0・1・2・3の4回ですが、処理の実行は3回です。

    「3未満だから2回」と考えた方は、開始値0のときにも1回実行していることを確認してください。

    第2問:終了したときのiはいくつ?

    第1問と同じフローです。最後に処理を実行するときのiではなく、フローが終了したときのiを答えてください。

    第2問の解答・解説

    終了時のiは3です。最後の処理はi = 2で実行します。その後にiを1増やして3にし、条件をもう一度判定して終了します。「処理した値は2まで」と「最終値は3」は両立します。

    処理中の値・更新後の値・終了時の値を区別する習慣は、配列の添字や件数を扱うプログラムでも役立ちます。

    第3問:「3未満」を「3以下」に変えると?

    開始値は0のまま、条件だけをi <= 3に変更します。処理は何回実行されるでしょう?

    第3問の解答・解説

    4回です。iが0・1・2・3のときに処理し、更新後のiが4になると終了します。第1問との違いは、境界値3のときにも処理することです。

    「以下なら必ず4回」ではありません。開始値を1に変えると、1・2・3の3回になります。比較記号と開始値をセットで確認しましょう。

    第4問:最初から条件を満たさなかったら?

    iを3にして、i < 3の間だけ処理する前判定のフローです。処理は何回実行されるでしょう?

    第4問の解答・解説

    0回です。最初の判定で3 < 3は偽になります。処理にも更新にも進まないため、終了時のiも3のままです。

    たとえば、処理するデータが最初から0件の場面に対応します。前判定は、実行前に「処理してよいか」を確かめる仕組みです。

    応用問題:判定位置・合計・更新忘れを読む

    第5問:後判定なら最低1回動く?

    iは3から開始します。第4問と違い、先に処理を実行し、iを1増やしてからi < 3を判定します。真なら戻り、偽なら終了します。処理は何回実行されるでしょう?

    第5問の解答・解説

    1回です。i = 3で処理を実行し、更新によってi = 4になります。その後、4 < 3が偽なので終了します。前判定の第4問は0回、後判定の第5問は1回です。

    JavaScriptのdo...whileはこの形です。Pythonには同名の構文がないため、コード例ではwhile Truebreakを組み合わせて同じ順序を表しています。ここで判定しているのは継続条件です。終了条件を使う表現では、戻る条件の真偽が逆になります。

    第6問:1から4まで足した合計は?

    iを1、合計を0にします。i <= 4の間、「合計にiを足す」「iを1増やす」の順で処理します。終了時の合計はいくつでしょう?

    第6問の解答・解説

    合計は10です。合計は0 → 1 → 3 → 6 → 10と変化します。足した数は1・2・3・4です。処理の実行回数は4回、終了時のiは5になります。

    終了時のiが5だからといって5まで足すわけではありません。合計とカウンターは別の変数で、それぞれ別の役割があります。「合計に足す」前にiを更新してしまうと、足す数が変わる点にも注意してください。

    第7問:終わらないループを直せる?

    i = 0、継続条件はi < 3です。しかし更新処理がi = iになっています。終了しない理由を考え、更新処理を修正したときの動きと比べてください。

    第7問の解答・解説

    iが変化しないため、条件が真のままになることが原因です。i = iは今の値をそのまま代入するので、何周しても0です。i = i + 1に直せば、i = 3で条件が偽になります。

    教材では12回の実行後に安全停止します。これはフローが正常に終了したことを意味しません。なお、カウンターを正しく増やしていても、戻る矢印を初期化のi = 0につなぐと毎回0に戻ります。更新の有無と、矢印の戻り先の両方を確認してください。

    仕上げ問題:目的に合うフローを選ぶ

    第8問:3人へ1回ずつ通知するには?

    iは通知済みの人数です。最初は0人で、1回の処理で次の1人に通知し、iを1増やします。3人全員に通知したら終了したいとき、次のどの前判定フローが適切でしょう?

    • A:i = 0から開始し、i < 3の間続ける。
    • B:i = 0から開始し、i <= 3の間続ける。
    • C:i = 3から開始し、i < 3の間続ける。
    第8問の解答・解説

    正解はAです。0人 → 1人 → 2人 → 3人と通知済み人数が変わり、3回で終了します。Bはi = 3でも通知するので4回、Cは最初から条件が偽なので0回です。

    フローチャートは単に記号を並べるものではありません。「何を数えている変数なのか」「いつ目的を達成したと判断するのか」を定義すると、開始値と条件を決めやすくなります。この例の通知は画面内のシミュレーションで、メールなどは実際には送信しません。

    解けたあとに確認したい3つのこと

    まず、処理の実行回数とカウンターの最終値を区別できるか確認してください。次に、境界値を含むかどうかを見て、<<=の違いを説明してみましょう。最後に、処理をしなくてよい状態で開始したとき、前判定と後判定でどこを通るかをたどってください。

    全部正解できたら、開始値や比較する値を変えてもう一度予想してみてください。同じ数値の答えを覚えるよりも、「なぜその回数になるか」を自分の言葉で説明できることが大切です。

    目的に合わせて次に読む

    info

    シェアする