基本情報技術者試験 (FE) 科目 B — 擬似言語

繰り返し (for) — 「〜から〜まで〜ずつ増やす」の読み方

定義

for (変数 を 開始 から 終了 まで 増分 ずつ 増やす / 減らす) から endfor までを、変数が終了値になるまでくり返す。開始値も終了値も含む閉区間で、Python の range とは境界の扱いが違う。

「〜から〜まで〜ずつ増やす」がひとつの型

基本情報の for 文は、日本語らしい独自の書き方をします。

for (i を 1 から n まで 1 ずつ増やす)
  // くり返したい処理
endfor

i がループ変数、1 が開始値、n が終了値、1 が増分です。開始値も終了値も含む閉区間 で動くので、「1 から 5 まで」は 1, 2, 3, 4, 5 の 5 回まわります。Python の range と境界の扱いが違う点は、 変換して読み比べると特に印象に残ります。

ブラウザで動かしてみる

1 から n までの合計を求める定番例。一行ずつ実行 を押すと i が 1, 2, 3, 4, 5 と順に増え、合計 が 1, 3, 6, 10, 15 と積み上がっていくのが右側の表で追えます。

待機中
エディタを読み込み中…

変数

まだ実行されていません

出力

まだ出力はありません (print で表示します)

減らす方向の for

カウントダウンのように減らしたいときはずつ減らす を使い、開始値を終了値より大きくします。

待機中
エディタを読み込み中…

変数

まだ実行されていません

出力

まだ出力はありません (print で表示します)

実行すると 5, 4, 3, 2, 1 と順に出力されます。増減の方向を間違えると 1 回もループしない (または無限にまわらないだけで意図とズレる) ので、開始値と終了値の大小関係が方向と一致しているか を確認しましょう。

増分は 1 以外でも書ける

「1 ずつ」の部分は他の値でも構いません。例えば偶数だけを足したいときは 「2 から 10 まで 2 ずつ増やす」と書けます。

待機中
エディタを読み込み中…

変数

まだ実行されていません

出力

まだ出力はありません (print で表示します)

出力は 30 (= 2+4+6+8+10) になります。 増分の値によっては終了値ちょうどでは止まらず、 「終了値を超えない最後の値」まででループが終わる点にも注意してください。

for と while の使い分け

  • for が向くケース: 事前に「n 回まわす」と決まっている、 または配列の全要素を頭から順に見たいとき
  • while が向くケース: いつ終わるかを実行してみないと分からない、 複雑な終了条件で判断するとき

試験の選択肢でも「これは for でも while でも書けるが、意図が明確なのは?」 という問い方が出ることがあります。回数が固定なら for、 終了条件が動的なら while、と覚えておきましょう。

試験でつまずきやすいポイント

  • 境界を含む / 含まない: 擬似言語の for は「まで」を含む閉区間。 Python の range とは違う
  • 方向の取り違え: 減らす なのに開始値が終了値より小さい、と書くと 1 回もまわらない
  • 増分と回数の関係: 「1 から 10 まで 3 ずつ増やす」は 1, 4, 7, 10 の 4 回。増分によって回数が変わるので手計算で確認する癖を
  • ループ変数の再代入: 本体の中で i ← i + 5 のようにループ変数を勝手にいじると、 for の仕組みと衝突して意図しない挙動になる

for が読めるようになったら、次は「大量のデータをまとめて扱う」ための 配列 (1 始まり) に進みましょう。for と組み合わせるとぐっと表現力が上がります。

よくある疑問

Q.「〜まで」は終了値を含みますか?
A.含みます。基本情報の擬似言語の for は開始値も終了値も含む閉区間で動きます。例えば「1 から 5 まで 1 ずつ増やす」は 1, 2, 3, 4, 5 の 5 回まわります。Python の range(1, 5) が 1〜4 になるのとは異なるので注意してください。
Q.「〜ずつ減らす」の書き方はありますか?
A.あります。「i を n から 1 まで 1 ずつ減らす」のように書くと、変数を減らしながらループします。減らす方向のときは開始値のほうが終了値より大きい必要があります。
Q.for のループ変数はループの外でも使えますか?
A.この実行シミュレーターでは、for のループ変数は for 文の中で自動的に宣言され、for が終わった後もその値 (終了値の次の値) を参照できます。ただし試験の解答では「ループ変数はループ内でのみ意味を持つ」と考えるのが安全です。

理解できたか試す / 自由に動かす

この構文をもっと練習する(おすすめ書籍)

本セクションはAmazonアソシエイトのリンクを含みます。

オンライン個別指導

プログラムの読み方でつまずいたら。

たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。

無料相談を予約する →
受講者の声 (DB・SQL コース)
menta レビュー原文を見る →
  • 教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。
    H 様DB・SQL コース受講
  • 体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。
    M 様DB・SQL コース受講
  • 大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。
    K 様DB・SQL コース受講