標準 情報・IT 学習時間の目安:約14分

条件分岐と繰り返し:順序と境界でバグが生まれる

🔑 一言でいうと

条件分岐(if)は「条件が成り立つときだけ実行する」しくみ、繰り返し(for・while)は「同じ処理を何度も実行する」しくみです。回数が決まっているなら for、条件が続くあいだ回すなら while。バグはたいてい判定の順序境界(以上か、より大きいか)、そして終わらないループで起こります。

このページで学べること

  • if・else if・else の使い分けがわかる
  • for と while の違いがわかる
  • 判定の順序で結果が変わる理由がわかる
  • 無限ループの原因を説明できる

前提知識

if と for の基本の形

💡 2つの道具
  • if(条件分岐):もし〜なら A、そうでなければ B。段階が増えるときは else if を重ねる
  • for(回数の繰り返し):5回・10回など回数が決まっているときに使う
  • while(条件の繰り返し):残りが0になるまでなど終わりが条件で決まるときに使う

成績を「80点以上ならA、60点以上ならB、それ以外はC」と分ける場合、判定は厳しい条件から順に書きます。もし「60点以上ならB」を先に書くと、85点も先に条件を満たしてしまい、Aになるはずの人がBになるという重大なバグになります。

境界も要注意です。「60点以上」なら60点は含む(≧)。「60点より上」なら60点は含みません(>)。1点の差でも合否が変わるため、日本語をそのまま記号に置きかえないことが大切です。

繰り返しでは、終わる条件を必ず用意します。while で数を増やす処理を書き忘れると、条件がいつまでも成り立ち無限ループになります。

if(厳しい条件)→ else if(次の条件)→ else(残り全部)

図でイメージする(多段の判定)

点数を受け取る
80点以上?
はい A
いいえ
60点以上?
はい B
いいえ C
上から順に判定します。80点以上ならA。そうでなければ60点以上かを調べ、成り立てばB、成り立たなければC。先に判定した条件が優先されます

例題(くわしい手順)

1から10までの整数の合計を、繰り返しで求める流れを追います。

🧭 手順
  1. 準備:合計を入れる変数 total = 0、数を数える i = 1。
  2. くり返す:i が10以下のあいだ「total = total + i」と「i = i + 1」を実行する。
  3. 終わる:i が11になった時点で条件(10以下)が成り立たず終了。total は 55

もし手順2で「i = i + 1」を書き忘れると、i はずっと1のままで条件が成り立ち続け、無限ループになります。ループでは「終わりに近づく処理」が入っているかを必ず確認します。

for と while の違い

for と while の違い
くらべることforwhile
向いている場面回数が決まっている終わりが条件で決まる
5人分の点数を順に処理する残りが0になるまで引き続ける
無限ループの危険低い(回数で終わる)高い(条件が変わらないと終わらない)

どちらでも書ける場面は多いですが、「回数が言えるなら for」と決めておくと読みやすくなります。

よくある間違い

⚠️ 間違い①:判定の順序が逆

「60点以上ならB」を先に書くと、85点の人も先にBと判定されてしまいます。厳しい条件(80点以上)から順に書きます。

⚠️ 間違い②:境界の記号を間違える

「60点以上」は ≧(60点を含む)、「60点より上」は >(含まない)。ちょうど60点の人の扱いが変わるため、問題文の日本語を必ず確認します。

⚠️ 間違い③:ループが終わらない

while の中で数を増やす処理を忘れると条件が成り立ち続け、無限ループになります。ループを書いたら「何が終わりに近づいているか」を指さして確認しましょう。

練習問題

まず自分で解いてから解説を開きましょう。

基本1

「80点以上ならA、60点以上ならB、それ以外はC」という判定で、70点の人はどれになりますか。

次から選びましょう

解答・解説を見る

答え:B

80点以上ではないので次の条件へ進み、60点以上を満たすのでBです。

基本2

i を1から5まで1ずつ増やしながら繰り返すと、処理は何回実行されますか。

解答・解説を見る

答え:5回

i=1,2,3,4,5 の5回です。1から5「まで」なので5も含みます。

応用

total=0 から始めて、1から10までを順に足すと total はいくつになりますか。

解答・解説を見る

答え:55

1+2+…+10=55。(1+10)×10÷2=55 でも確かめられます。

応用2

「60点以上ならB」を先に、「80点以上ならA」を後に書いたプログラムで、85点の人はどう判定されますか。

次から選びましょう

解答・解説を見る

答え:B(バグ)

85点は先に「60点以上」を満たすためBになってしまいます。A の判定に届きません。条件は厳しい順に並べるのが正解です。


よくある質問

Q. 条件分岐(if)とは何ですか?

条件が成り立つかどうかで実行する処理を変えるしくみです。段階が増えるときは else if を重ね、どれにも当てはまらない場合を else で受けます。

Q. for と while の違いは何ですか?

for は回数が決まっている繰り返し、while は条件が成り立つあいだ続く繰り返しです。回数が言えるなら for を使うと読みやすく、無限ループも起きにくくなります。

Q. 無限ループはなぜ起きるのですか?

繰り返しの条件がいつまでも成り立つからです。while の中でカウンタを増やし忘れる、終了条件が一度も満たされない、などが典型的な原因です。

Q. 「80点以上ならA、60点以上ならB」の順番を逆にすると何が起きますか?

85点の人もB判定になります。範囲の広い条件を先に書くと、狭い条件に届く前に決まってしまうので、厳しい条件から順に書きます。

次に学ぶ内容

📚 参考・監修方針

高等学校「情報I」および基本的なIT知識の範囲を参照し、オリジナルに作成(実在試験問題の転載はありません)。正確性は編集・監修フローで確認しています(仕様書 第11章)。

最終更新日: 最終確認日: このページの誤りを報告する