配列とループは、基本情報技術者試験の科目Bでとても大事な考え方です。
科目B全体の進め方を確認したい方は、基本情報技術者試験の科目B対策も参考にしてください。
配列は、複数の値をまとめて持つためのものです。ループは、同じ処理を何度もくり返すためのものです。
この2つは、別々に覚えるよりも、セットで理解した方が分かりやすくなります。
たとえば、5人分の点数があるとします。1人目、2人目、3人目と順番に点数を見るときに、配列とループを使います。
この記事では、配列の箱を横に並べて、添字と変数の動きを見ながら説明します。暗記ではなく、処理の流れを追えるようになることを目指します。
配列とループはなぜ大事?

配列とループが大事なのは、複数の値を順番に見る処理でよく使うからです。
プログラムでは、1つの値だけを扱うこともあります。しかし、実際には商品一覧、点数一覧、予約一覧、検索結果一覧のように、たくさんの値をまとめて扱う場面が多くあります。
そのときに使うのが配列です。そして、その配列の中身を1つずつ見るために使うのがループです。
科目Bでよく出る組み合わせ
基本情報技術者試験の科目Bでは、配列とループを組み合わせた問題がよく出ます。
たとえば、次のような問題です。
- 配列の値を順番に足す
- 配列の中から最大値を探す
- 条件に合う値の数を数える
- 配列の途中の値がどう変わるかを追う
どの問題でも大事なのは、「今、配列の何番目を見ているのか」です。
ここが分かると、疑似言語を読んだときに処理の流れを追いやすくなります。
複数の値を順番に見るために使う
配列は、複数の値をまとめて並べるものです。
たとえば、次のような点数があるとします。
80, 65, 90, 70, 85
この5つの点数を別々の変数で持つと、管理が大変です。
そこで、配列としてまとめます。
score[1] 80
score[2] 65
score[3] 90
score[4] 70
score[5] 85
このようにまとめておくと、「1番目から5番目まで順番に見る」という処理がしやすくなります。
トレースでつまずきやすいポイント
トレースとは、プログラムの処理を1行ずつ追いながら、変数の値がどう変わるかを確認することです。
配列とループの問題でつまずきやすいのは、次の点です。
- 今見ている配列の位置が分からなくなる
- 添字を1つずらして読んでしまう
- ループが何回動くのか分からなくなる
- 更新前の値と更新後の値を混同する
順番に表を書いて追えば、処理は見えるようになります。
大事なのは、頭の中だけで考えないことです。i の値、配列の値、合計などを表に書いて確認します。
疑似言語の読み方やトレースの基本を確認したい方は、基本情報技術者試験の疑似言語とトレース入門も参考にしてください。
配列とは?

配列とは、複数の値を順番に並べて持つものです。
イメージとしては、横に並んだ箱です。それぞれの箱に値が入っています。
たとえば、5人分の点数を配列に入れると、次のように考えられます。
1番目 2番目 3番目 4番目 5番目
80 65 90 70 85
1つずつ別の名前で持つのではなく、1つのまとまりとして持てるのが配列です。
配列は複数の値を順番に並べるもの
配列を使うと、同じ種類の値をまとめて扱えます。
たとえば、点数を入れる配列なら、次のように考えます。
score[1] 80
score[2] 65
score[3] 90
score は、点数を入れる箱のまとまりです。
[1]、[2]、[3] は、何番目の箱を見るかを表しています。
この記事では、初心者が見て分かりやすいように、1番目、2番目、3番目という形で説明します。
ただし、実際の試験では、問題文に書かれた配列番号の前提を必ず確認してください。配列が0番目から始まる場合もあれば、1番目から始まる場合もあります。
添字で何番目かを指定する

添字とは、配列の何番目を見るかを示す番号です。
たとえば、score[3] と書かれていたら、score という配列の3番目を見るという意味です。
score[1] 80
score[2] 65
score[3] 90
この場合、score[3] の値は 90 です。
基本情報技術者試験の疑似言語では、配列の添字を使って「どの箱を見るか」を指定します。
配列の問題では、添字を見ることがとても大事です。添字を見落とすと、別の値を使って計算してしまいます。
配列の中身は途中で変わることがある
配列の中身は、最初から最後まで同じとは限りません。
処理の途中で、配列の値を書きかえることがあります。
たとえば、3番目の点数を 90 から 95 に変える場合は、次のように考えます。
score[3] ← 95
「←」は、右側の値を左側に入れるという意味です。
この場合は、95 を score[3] に入れるという意味です。
つまり、3番目の値が 95 に変わります。
配列の問題では、今の値だけでなく、「途中で値が変わったか」も見る必要があります。
配列は身近で何に使われる?
配列は、身近なサービスでもよく使われる考え方です。
実際の画面では見えませんが、裏側では複数のデータをまとめて扱うために使われています。
商品一覧をまとめて扱う
ネットショップの商品一覧は、配列のイメージに近いです。
商品が1件だけなら、1つの値として扱えば十分です。
しかし、商品が10件、100件と増えると、まとめて持つ必要があります。
1番目 ノートパソコン
2番目 マウス
3番目 キーボード
4番目 モニター
このように並べておけば、1件ずつ画面に表示できます。
テストの点数をまとめて扱う
テストの点数も、配列で考えやすい例です。
1番目 80点
2番目 65点
3番目 90点
4番目 70点
5番目 85点
この点数を使って、合計点や平均点を求められます。
また、最高点や最低点を探すこともできます。
予約一覧を順番に管理する
病院や美容室の予約一覧も、配列のように考えられます。
1番目 10:00 佐藤さん
2番目 10:30 鈴木さん
3番目 11:00 田中さん
順番に見ることで、次の予約を確認できます。
予約が増えたり、変更されたりすると、配列の中身が変わるイメージです。
検索結果をまとめて表示する
検索結果も、配列の考え方に近いです。
検索すると、結果が1件ずつ並んで表示されます。
1番目 検索結果A
2番目 検索結果B
3番目 検索結果C
画面に表示するときは、この結果を先頭から順番に取り出します。
このように、配列を理解すると、一覧表示のしくみが見えやすくなります。
ループとは?

ループとは、同じ処理を何度も行うことです。
日本語では「くり返し処理」といいます。
たとえば、5人分の点数を合計したいとします。
1人目の点数を足す、2人目の点数を足す、3人目の点数を足す、というように、同じ処理をくり返します。
このようなときにループを使います。
同じ処理を何度も行うこと
ループを使わない場合、同じような処理を何行も書くことになります。
合計に1番目の点数を足す
合計に2番目の点数を足す
合計に3番目の点数を足す
合計に4番目の点数を足す
合計に5番目の点数を足す
これをループで書くと、「1番目から5番目まで、順番に点数を足す」とまとめて考えられます。
ループは、同じ処理を短く、分かりやすく書くための考え方です。
for文は回数を決めてくり返す
for文は、くり返す回数が決まっているときに使いやすいループです。
たとえば、5個の点数を順番に見るなら、5回くり返せばよいと分かります。
i を 1 から 5 まで変えながらくり返す
ここで出てくる i は、今どの位置を見ているかを表す変数です。
たとえば、i が 1 のときは1番目、i が 2 のときは2番目を見ます。
配列とfor文は、とてもよく組み合わせて使います。
while文は条件を満たす間くり返す
while文は、条件を満たす間、処理をくり返すものです。
たとえば、「目的の値が見つかるまで探す」という処理で使われます。
まだ見つかっていない間、くり返す
while文では、何回くり返すかが最初からはっきりしないことがあります。
そのため、終了条件を見ることがとても大事です。
終了条件を見ることが大事
ループでは、「いつ終わるのか」を必ず確認します。
終了条件を見落とすと、くり返し回数を間違えます。
たとえば、1番目から5番目まで見る処理なら、5番目を見たあとに終わります。
もし終了条件を間違えると、5番目を見ないまま終わったり、存在しない6番目を見ようとしたりします。
配列とループの問題では、開始位置と終了条件をセットで確認します。
くり返し処理は身近で何に使われる?
くり返し処理は、日常で使うサービスの裏側でもよく使われています。
同じ作業を1件ずつ行う場面では、ループの考え方が使われます。
商品を1件ずつ表示する
ネットショップで商品一覧を表示するとき、商品を1件ずつ取り出して画面に並べます。
1件目の商品を表示する
2件目の商品を表示する
3件目の商品を表示する
商品数が多くても、処理の考え方は同じです。
配列に入っている商品を、ループで順番に見て表示します。
点数を1人ずつ合計する
クラスのテスト結果を集計するときも、ループの考え方が使えます。
1人目の点数を足し、2人目の点数を足し、最後の人までくり返します。
このようにすると、人数が増えても同じ考え方で合計できます。
メールを順番に送る
お知らせメールを複数人に送るときも、ループの考え方で説明できます。
送信先リストを先頭から順番に見て、1人ずつメールを送ります。
このとき、送信先リストが配列、1人ずつ送る処理がループのイメージです。
検索結果を1件ずつ確認する
検索結果から条件に合うものを探すときも、1件ずつ確認します。
たとえば、「価格が1万円以下の商品だけを表示する」という処理です。
検索結果を順番に見て、条件に合うかどうかを確認します。
このように、配列とループを理解すると、一覧や検索の処理が分かりやすくなります。
配列とループを組み合わせると何ができる?

配列とループを組み合わせると、複数の値を順番に処理できます。
科目Bでは、この形がとてもよく出ます。
最初は、次の4つを押さえると理解しやすいです。
- 配列の値を先頭から順番に見る
- 合計を求める
- 最大値や最小値を探す
- 条件に合う値を数える
配列やループを使った処理の考え方を広く確認したい方は、基本情報技術者試験のアルゴリズム入門も参考になります。
配列の値を先頭から順番に見る
配列をループで見るときは、添字を1つずつ変えます。
score[1] を見る
score[2] を見る
score[3] を見る
score[4] を見る
score[5] を見る
このとき、i という変数を使うと、次のように考えられます。
i が 1 のとき score[1] を見る
i が 2 のとき score[2] を見る
i が 3 のとき score[3] を見る
i は、今見ている位置を表します。
配列とループでは、この i の動きを追うことが大切です。
合計を求める
配列の合計を求めるときは、合計を入れる変数を用意します。
たとえば、合計を total という変数に入れるとします。
total ← 0
最初はまだ何も足していないので、total には 0 を入れます。
そのあと、配列の値を1つずつ見て、total に足していきます。
total ← total + score[i]
これは、今の total に、今見ている score[i] を足して、新しい total にするという意味です。
最大値や最小値を探す
最大値を探すときは、まず仮の最大値を用意します。
たとえば、最初の値を仮の最大値にします。
max ← score[1]
そのあと、2番目から順番に見ていきます。
今見ている値が max より大きければ、max を更新します。
max ← score[i]
最後まで見たあとに残っている max が、配列の中の最大値です。
条件に合う値を数える
条件に合う値を数えるときは、数を入れる変数を用意します。
たとえば、70点以上の人数を数えるなら、count という変数を使います。
count ← 0
配列を順番に見て、70点以上なら count を1つ増やします。
count ← count + 1
このように、配列とループを使うと、複数の値から必要な情報を取り出せます。
スタートボタンで配列とループの動きを見る

配列とループを動かして見る
配列の箱を左から順番に見て、i の位置、今見ている値、変数の変化を確認します。
トレース表
上のシミュレーターでは、配列の箱を左から順番に見ながら、i の位置、今見ている値、変数の変化を確認できます。
「スタート」を押すと処理が始まり、「次へ」を押すと1ステップずつ進みます。
このシミュレーターでは、次の3つの処理を切り替えて確認できます。
- 合計を求める:total がどう増えるかを見る
- 最大値を探す:今の max がどこで更新されるかを見る
- 条件に合う数を数える:70点以上の値がいくつあるかを見る
どのモードでも、まず見るべきところは i の位置です。次に、今見ている値と、変数の変化を確認します。
最初は「合計を求める」から動かすと分かりやすいです。total が、1番目の値、2番目の値、3番目の値を足すたびに変わっていく様子を見てください。
添字 i の位置を見る
シミュレーターで最初に見るところは、i の位置です。
i は、今どの配列の箱を見ているかを表す変数です。
たとえば、i が 1 のときは1番目の箱を見ます。i が 2 になれば、2番目の箱へ移ります。
シミュレーターでは、今見ている配列の位置がオレンジ色の枠で強調されます。
この強調された箱を見ることで、「今どこを見ているのか」が分かります。
今見ている配列の値を確認する
次に、今見ている配列の値を確認します。
たとえば、i が 3 のとき、score[3] の値を見ます。
score[3] 90
この場合、今見ている値は 90 です。
配列の問題では、添字だけでなく、その場所に入っている値も見る必要があります。
シミュレーターでは、今見ている値が「今見ている値」の欄に表示されます。
合計値が変わる様子を見る
合計を求める処理では、total の値が少しずつ変わります。
たとえば、配列が次のようになっているとします。
80, 65, 90
最初に total へ 0 を入れます。
total ← 0
1番目を見ると、total に 80 を足します。
total ← 0 + 80
次に、2番目の 65 を足します。
total ← 80 + 65
このように、シミュレーターでは「変わる前の total」と「変わった後の total」を確認できます。
「次へ」を押すたびに、total がどう変わるかを見ていきましょう。
最大値が更新される様子を見る
最大値を探すモードでは、今の max がどこで更新されるかを確認します。
青い枠の箱が、今の max です。オレンジ色の枠の箱が、今見ている値です。
今見ている値が max より大きい場合、max がその値に更新されます。
今回の例では、3番目の 90 を見たときに max が更新されます。
条件に合う数が増える様子を見る
条件に合う数を数えるモードでは、70点以上の値がいくつあるかを確認します。
条件に合う値を見つけたときだけ、count が1つ増えます。
count ← count + 1
条件に合わない値のときは、count は変わりません。
このように、count は「条件に合った回数を数える変数」として使います。
ループが終わる条件を確認する
ループでは、いつ終わるかを確認します。
今回のシミュレーターでは、5個の値を1つずつ見ていきます。
合計とカウントでは、1番目から5番目まで順番に見ます。
最大値を探すときは、1番目を仮の最大値にしてから、2番目以降を比べます。
このため、合計やカウントでは処理回数が5回、最大値では比較回数が4回になります。
この違いは、基本情報技術者試験でも間違えやすいところです。
「次へ」を押しながら、i がどこまで進むか、ループがどこで終わるかを確認しましょう。
配列の合計を求める流れ

ここからは、配列の合計を求める流れを見ます。
合計は、配列とループの基本としてよく出ます。
次の配列を使って考えます。
score[1] 80
score[2] 65
score[3] 90
score[4] 70
score[5] 85
合計用の変数を用意する
まず、合計を入れる変数を用意します。
ここでは total とします。
total ← 0
最初は何も足していないので、total は 0 です。
この最初の値を入れ忘れると、合計が正しく求められません。
配列を先頭から見る
次に、配列を先頭から順番に見ます。
i を使って、今見る位置を表します。
i ← 1
score[i] を見る
i が 1 のときは、score[1] を見ます。
次に i が 2 になれば、score[2] を見ます。
このように、i を動かしながら配列を見ます。
見た値を合計に足す
見た値は、total に足します。
total ← total + score[i]
たとえば、i が 1 のとき、score[1] は 80 です。
total ← 0 + 80
その結果、total は 80 になります。
次に i が 2 のとき、score[2] は 65 です。
total ← 80 + 65
その結果、total は 145 になります。
このように、total はループのたびに変わります。
最後まで見たら結果を出す
5番目まで見たら、ループを終わります。
すべての値を足し終えたときの total が、配列の合計です。
今回の例では、次のように足します。
80 + 65 + 90 + 70 + 85
合計は 390 です。
基本情報技術者試験の問題では、途中の total の値を問われることもあります。
最後の答えだけでなく、途中でどう変わるかを追うことが大切です。
配列の最大値を探す流れ

次に、配列の最大値を探す流れを見ます。
最大値とは、配列の中で一番大きい値です。
次の配列を使います。
score[1] 80
score[2] 65
score[3] 90
score[4] 70
score[5] 85
仮の最大値を用意する
まず、仮の最大値を用意します。
ここでは、1番目の値を仮の最大値にします。
max ← score[1]
score[1] は 80 なので、最初の max は 80 です。
この時点では、まだ他の値を見ていません。
そのため、80 が本当に最大値かどうかは分かりません。
配列を1つずつ見る
次に、2番目から順番に見ます。
1番目はすでに max に入れているので、2番目から比べます。
score[2] 65
score[3] 90
score[4] 70
score[5] 85
1つずつ見ながら、今の max と比べます。
今の最大値より大きければ更新する
今見ている値が max より大きければ、max を更新します。
最初の max は 80 です。
score[2] は 65 なので、max は変わりません。
score[3] は 90 です。90 は 80 より大きいので、max を更新します。
max ← score[3]
このあと、max は 90 になります。
score[4] は 70、score[5] は 85 なので、max は 90 のままです。
最後に残った値が最大値になる
最後まで見たあとに max に残っている値が、最大値です。
今回の例では、max は 90 です。
つまり、この配列の最大値は 90 です。
最大値を探す問題では、値を見たときに max が変わるかどうかを追います。
教材では、今の max と、今見ている配列の値を並べて表示すると分かりやすくなります。
トレース表で値を追う

配列とループの問題では、トレース表を書くと処理が見えやすくなります。
トレース表とは、変数の値を1ステップずつ書く表です。
頭の中だけで追うと、どこを見ているか分からなくなりやすいです。
そのため、i、配列の値、total、max などを書き出します。
i の値を書く
まず、i の値を書きます。
i は、今見ている配列の位置です。
| 回数 | i |
|---|---|
| 1回目 | 1 |
| 2回目 | 2 |
| 3回目 | 3 |
このように書くと、何番目を見ているかが分かります。
見ている配列の値を書く
次に、今見ている配列の値を書きます。
たとえば、score が次の配列だとします。
score[1] 80
score[2] 65
score[3] 90
トレース表は次のようになります。
| 回数 | i | score[i] |
|---|---|---|
| 1回目 | 1 | 80 |
| 2回目 | 2 | 65 |
| 3回目 | 3 | 90 |
i と score[i] をセットで見ると、どの値を使っているかが分かります。
合計や最大値の変化を書く
合計を求める問題では、total の変化を書きます。
| 回数 | i | score[i] | total |
|---|---|---|---|
| 開始前 | – | – | 0 |
| 1回目 | 1 | 80 | 80 |
| 2回目 | 2 | 65 | 145 |
| 3回目 | 3 | 90 | 235 |
最大値を探す問題では、max の変化を書きます。
| 確認する値 | 今のmax | 更新後のmax |
|---|---|---|
| 65 | 80 | 80 |
| 90 | 80 | 90 |
| 70 | 90 | 90 |
変わった値だけでなく、変わらなかった値も書くと、ミスに気づきやすくなります。
ループ回数を確認する
最後に、ループが何回動いたかを確認します。
配列が5個あり、1番目から5番目まで見るなら、ループは5回です。
ただし、最大値を探す処理では、1番目を仮の最大値にして、2番目から比べることがあります。
この場合、比較する回数は4回です。
「配列の個数」と「比較する回数」は、いつも同じとは限りません。
ここは、基本情報技術者試験の問題で間違えやすいところです。
基本情報技術者試験ではどう出る?
基本情報技術者試験の科目Bでは、配列をループで順番に見る処理が、疑似言語の問題として出やすいです。
大事なのは、プログラムを丸暗記することではありません。
i がどう動くか、配列のどの値を見るか、変数がどう変わるかを追うことです。
配列の何番目を見るかを問う問題
配列の添字を読んで、何番目の値を見ているかを問う問題があります。
たとえば、次のような形です。
i ← 3
x ← score[i]
この場合、score の3番目の値を x に入れます。
ここで大事なのは、i の値を見ることです。
配列名だけを見ても、どの値を使うかは分かりません。
ループ後の合計値を問う問題
配列の値を順番に足して、最後の合計を問う問題もあります。
total ← 0
i を 1 から 5 までくり返す
total ← total + score[i]
このような問題では、total の値を1回ずつ更新して追います。
途中の値を書かずに暗算だけで進めると、ミスが起きやすくなります。
最大値や最小値を問う問題
最大値や最小値を探す問題もよく出ます。
この場合は、仮の最大値や仮の最小値がどう変わるかを見ます。
max ← score[1]
このように最初の値を仮の最大値にして、残りの値と比べます。
更新が起きたところを見落とさないようにします。
空欄に入る条件を選ぶ問題
空欄に入る条件を選ぶ問題もあります。
たとえば、最大値を更新する条件を選ぶ問題です。
もし score[i] が max より大きいなら
max ← score[i]
この場合、今見ている値が今の最大値より大きいときに更新します。
空欄問題では、「何をしたい処理なのか」を先に考えると選びやすくなります。
初心者が間違えやすい点

配列とループは、考え方そのものはシンプルです。
ただし、細かい位置や条件を見落とすと、答えがずれます。
ここでは、特に間違えやすい点を確認します。
添字を1つずらして読む
もっとも多いミスは、添字を1つずらして読むことです。
たとえば、score[3] は3番目の値です。
しかし、0番目から始まる配列の場合、見方が変わります。
本文や教材では、分かりやすいように1番目、2番目、3番目で表示します。
ただし、試験では問題文の前提を必ず確認してください。
配列が0から始まるのか、1から始まるのかで、見る値が変わります。
ループの開始位置を間違える
ループの開始位置も大事です。
合計を求める場合は、1番目から見ることが多いです。
一方、最大値を探す場合は、1番目を仮の最大値にして、2番目から比べることがあります。
この違いを見落とすと、ループ回数を間違えます。
終了条件を見落とす
ループがいつ終わるかも必ず見ます。
たとえば、i が 1 から 5 までなら、5番目まで見ます。
i が 1 から 5 より小さい間なら、5番目を見ないことがあります。
このように、条件の書き方によって、最後に見る位置が変わります。
終了条件は、ループ問題の重要ポイントです。
更新前と更新後の値を混同する
代入の処理では、更新前と更新後を分けて考えます。
total ← total + score[i]
この処理では、まず右側の total + score[i] を計算します。
その結果を、左側の total に入れます。
つまり、total はこの行のあとで新しい値になります。
「←」は、右側の計算結果を左側に入れる意味です。
この読み方に慣れると、トレースがしやすくなります。
確認問題
最後に、配列とループの基本を確認しましょう。
答えを丸暗記するのではなく、処理の流れを思い出しながら考えてください。
配列の添字は何を表しますか?
添字は、配列の何番目を見るかを表す番号です。
たとえば、score[2] なら、score という配列の2番目を見ます。
配列の問題では、添字を見ることで、どの値を使うかが分かります。
for文とwhile文の違いは何ですか?
for文は、回数を決めてくり返すときに使いやすいループです。
たとえば、配列の1番目から5番目まで見るときに使いやすいです。
while文は、条件を満たす間くり返すループです。
たとえば、目的の値が見つかるまで探すような処理で使われます。
配列の合計を求めるときに使う変数は何ですか?
配列の合計を求めるときは、合計を入れる変数を使います。
この記事では total という変数を使いました。
total ← 0
total ← total + score[i]
最初に total へ 0 を入れ、配列の値を1つずつ足していきます。
まとめ
配列は、複数の値を順番に並べて持つものです。
ループは、同じ処理を何度もくり返すものです。
この2つを組み合わせると、商品一覧、点数一覧、予約一覧、検索結果一覧のような複数のデータを順番に扱えます。
基本情報技術者試験の科目Bでは、配列をループで順番に見る問題がよく出ます。
大事なのは、次の4つです。
- 今、配列の何番目を見ているか
- その場所に入っている値は何か
- 変数の値がどう変わるか
- ループがいつ終わるか
配列とループは、最初は少し混乱しやすいです。
しかし、i の位置、配列の値、total や max の変化を表に書けば、処理の流れは追えるようになります。
疑似言語を読むときは、「←」の右側を先に計算し、その結果を左側に入れると考えます。
また、配列の番号が0から始まるのか、1から始まるのかは、問題文で必ず確認しましょう。
配列とループは、アルゴリズムを読むための土台です。ここが分かると、探索、ソート、最大値、合計、件数を数える処理も理解しやすくなります。
配列を使って値を探す流れを確認したい方は、基本情報技術者試験の探索アルゴリズム入門も参考にしてください。
配列とループを含めた基本情報全体の進め方は、基本情報技術者試験の勉強方法も参考にしてください。
