戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2011年 春期 午前(科目A)07


問題文

次の流れ図は、1から100までの整数の総和を求め、結果を変数に代入するアルゴリズムを示したものであるが、一部誤りがある。どのように訂正すればよいか。
基本情報技術者 2011年 春期 午前(科目A) 問07の問題画像

選択肢

①の処理を“”にする。(正解)
②の条件判定を“”にする。
③の処理を“”にする。
④の処理を“”にする。

🔒 解説は解答すると表示されます

累積和の初期化【午前解説】

正解の理由

本問題では1から100までの整数を足し合わせる累積処理を正しく行うため、合計を格納する変数の初期値を0にする必要があります。図の工程①が「1 → x」となっていると、ループで1から100までを加算した結果にさらに初期値1が加わってしまい、期待される合計より1大きくなります。したがって、初期化を“”にする選択肢、すなわち が正しい修正です。
正しい動作イメージ:
  • ループ開始前に とする。
  • 各反復で を行い、最後に でループを抜けたとき になっている。

解法ステップ

  1. フローチャートの目的を確認する:1から100までの合計を求めること。
  2. ループの役割を把握する:判定が「i : 100」で、分岐が「≦」で下へ進む構造は「i ≤ 100 の間、加算を行いiを増やす」ことを示す。
  3. ループ不変量(ループの各時点で成り立つ関係)を考える:初期化が適切なら反復 k 回の後に となるはず。
  4. 各選択肢がその不変量・終了条件に与える影響を検討する(下記の選択肢別解説参照)。
  5. 正しい初期化が であることを確かめる( では結果が1だけ大きくなるため誤り)。

選択肢別の誤答解説

  • : ①を“”にする。
    → 正しい。累積和を求める変数は0で初期化するのが標準で、ループ処理後に となる。
  • イ: ②の条件判定を“”にする。
    → 誤り。判定を「i ≤ 99」にするとループは i=1..99 の加算しか行わず、合計は となり目的の5050にならない。
  • ウ: ③の処理を“”にする。
    → 誤り。これは合計をiに代入する操作であり、ループカウンタiを置き換えてしまいます。結果としてiの値が期待通り増加せず、ループ条件や加算の意味が崩れるため正しい合計は得られません(場合によっては不正な増加で早期終了したり無限ループになったりする可能性があります)。
  • エ: ④の処理を“”にする。
    → 誤り。もし工程④が i を更新する処理(元は )の代わりに に変わると、ループカウンタiが更新されなくなります。判定「i ≤ 100」は常に同じ真偽を保つため、ループは終了せず非終端(無限ループ)になります。以前の誤った説明で「終了してある値になる」とされたのは誤りで、正しくは「iが更新されないためループが抜けられない(無限ループ)」です。

よくある誤解

  • 初期値を1にしても問題ないと考える誤解:合計変数を1で初期化すると期待結果より1大きくなる(オフ・バイ・ワン)。
  • 判定条件の向きや記号の意味の混同:図の「≦」と「>」の配置を誤解して反対の枝を辿ると、意図したループが実現できない。
  • 変数の役割混同:xは累積和、iはループカウンタという役割を取り違え、代入文を誤る(例: のようにカウンタを書き換える)。

補足コラム

  • 1からnまでの和は公式 によって計算できます。n=100なら です。アルゴリズム的には累積変数を0で初期化してカウンタを1からnまで増やす方法が基本です。
  • 同じ処理を簡潔な疑似コードで表すと次のようになります。
x = 0
i = 1
while i <= 100:
    x = x + i
    i = i + 1
# x は 5050

FAQ

Q1. なぜ累積変数を0で初期化するのですか?
A1. 足し算の単位元は0のため、何も足していない状態を正確に表すには0が必要です。1で初期化すると初めから余分な1が加わります。
Q2. カウンタを0から始めて100までにすれば初期値は変わりますか?
A2. 例えば i=0 から i≤100 で回す場合、ループ回数は101回になり合計は となり目的の合計とは異なります。取り扱う範囲に合わせて初期値と条件を設計する必要があります。
Q3. 図の判定記号「≦」「>」を逆に解釈してしまった場合は?
A3. 判定の向きが逆だとループの継続条件が変わり、早期に終了したり無限ループになったりするため、図中の分岐記号の意味をまず正確に読むことが重要です。

関連キーワード: フローチャート、累積和、ループ初期化、オフバイワン、ループ不変量、疑似コード、合算アルゴリズム
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について