Skip to content

第5章 繰り返し処理

この章では、同じような処理を何度も実行するための 繰り返し処理 を学習します。

これまでの章では、処理を上から順番に書き、必要に応じて if 文や switch 文で処理を分けました。

しかし、実際のプログラムでは、同じような処理を何度も実行したい場面が多くあります。

たとえば、次のような処理です。

1から10までの数を順番に表示する
入力が正しくなるまで再入力させる
複数件の点数を入力して合計する
社員一覧を1件ずつ表示する
条件に合うデータが見つかるまで探す
表形式のデータを行と列で表示する

このような処理を毎回手作業で何行も書くのは大変です。

繰り返し処理を使うと、同じ処理を条件や回数に応じて自動的に繰り返せます。


この章でできるようになること

Section titled “この章でできるようになること”

この章を終えると、次のことができるようになります。

  • 繰り返し処理が必要になる場面を説明できる
  • while 文を使って、条件が成り立つ間処理を繰り返せる
  • for 文を使って、指定回数の繰り返し処理を書ける
  • do-while 文を使って、最低1回は実行する処理を書ける
  • 2重ループを使って、表形式の出力ができる
  • break を使って、繰り返し処理を途中で終了できる
  • continue を使って、今回の処理だけをスキップできる
  • 無限ループが起きる原因を説明できる
  • 繰り返し処理をデバッグで追跡できる
  • 繰り返し処理を使った簡単なコンソールアプリを作成できる

項目内容
開発環境Visual Studio 2022
プロジェクト種類コンソール アプリ
対象フレームワーク.NET 8
プロジェクト名Chapter05_Loop

作業を始める前に、次の内容を確認してください。

  • Visual Studio 2022でコンソールアプリを作成できる
  • .NET 8.0 を選択できる
  • Console.WriteLine を使って表示できる
  • Console.ReadLine で入力を受け取れる
  • int.Parse で文字列を整数に変換できる
  • ifelseelse if を使った条件分岐が書ける
  • &&|| を使った条件式を書ける
  • 第4章の内容をGitに提出済みである

たとえば、1から5までの数を表示したい場合、次のように書けます。

using System;
class Program
{
static void Main()
{
Console.WriteLine(1);
Console.WriteLine(2);
Console.WriteLine(3);
Console.WriteLine(4);
Console.WriteLine(5);
}
}

実行結果:

1
2
3
4
5

この程度なら問題ありません。

しかし、1から100まで表示したい場合はどうでしょうか。

Console.WriteLine(1);
Console.WriteLine(2);
Console.WriteLine(3);
...
Console.WriteLine(100);

このように同じような処理を何度も書くのは大変です。
また、後から修正するのも面倒になります。


繰り返し処理を使うと、同じ処理を短く書けます。

using System;
class Program
{
static void Main()
{
int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count += 1;
}
}
}

実行結果:

1
2
3
4
5

このコードでは、count の値を1ずつ増やしながら、count <= 5 が成り立つ間だけ処理を繰り返しています。


C#には、主に次の繰り返し処理があります。

構文主な使い方
while条件が成り立つ間、繰り返す
for指定回数だけ繰り返す
do-while最低1回は実行してから、条件を確認する
foreach配列やリストの要素を1つずつ取り出す

この章では、whilefordo-while を中心に扱います。
foreach は、配列やリストを学ぶ章で詳しく扱います。


while 文は、条件が成り立つ間、処理を繰り返します。

基本形は次の通りです。

while (条件式)
{
繰り返したい処理
}

条件式が true の間、{ } の中の処理が繰り返されます。

条件式が true → 処理を実行する
条件式が false → 繰り返しを終了する

次のコードを入力して実行してください。

using System;
class Program
{
static void Main()
{
int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count += 1;
}
}
}

実行結果:

1
2
3
4
5

このコードは、次のように動きます。

count = 1
count <= 5 を確認する
↓ true
countを表示する
countを1増やす
count <= 5 を確認する
↓ true
countを表示する
countを1増やす
...
count = 6
count <= 5 を確認する
↓ false
繰り返し終了

count += 1; がないと、count の値が変わらないため、繰り返しが終わらなくなります。


次のコードは、繰り返しが終わりません。

using System;
class Program
{
static void Main()
{
int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
}
}
}

count の値を増やしていないため、いつまでも count <= 5 が成り立ちます。

このように、終了しない繰り返しを 無限ループ と呼びます。

注意

while 文では、繰り返しの中で条件に関係する値を変化させる必要があります。 値が変化しないと、無限ループになることがあります。


入力が正しくなるまで繰り返す

Section titled “入力が正しくなるまで繰り返す”

while 文は、入力チェックにもよく使われます。

次のコードでは、1から3の番号が入力されるまで、入力を繰り返します。

using System;
class Program
{
static void Main()
{
int menu = 0;
while (menu < 1 || menu > 3)
{
Console.WriteLine("メニュー番号を入力してください。");
Console.WriteLine("1: 登録");
Console.WriteLine("2: 検索");
Console.WriteLine("3: 終了");
string input = Console.ReadLine();
menu = int.Parse(input);
}
Console.WriteLine($"選択された番号:{menu}");
}
}

実行例:

メニュー番号を入力してください。
1: 登録
2: 検索
3: 終了
5
メニュー番号を入力してください。
1: 登録
2: 検索
3: 終了
2
選択された番号:2

この条件に注目してください。

while (menu < 1 || menu > 3)

これは次の意味です。

menu が 1 より小さい、または 3 より大きい間は繰り返す

つまり、1から3以外の値が入力されている間は、再入力させます。


繰り返し処理は、慣れるまで動きが分かりにくいことがあります。

次の行にブレークポイントを設定して、F10 で1行ずつ実行してください。

while (count <= 5)

確認するポイント:

  • count の値がどのように変化するか
  • 条件式がいつ false になるか
  • count += 1; がなぜ必要か
  • どのタイミングで繰り返しが終了するか

for 文は、指定回数だけ処理を繰り返したいときによく使います。

基本形は次の通りです。

for (初期化; 条件式; 更新)
{
繰り返したい処理
}

例:

for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}

次のコードを入力して実行してください。

using System;
class Program
{
static void Main()
{
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
}
}

実行結果:

1
2
3
4
5

次の for 文を確認します。

for (int i = 1; i <= 5; i++)
部分意味
int i = 1繰り返し用の変数 i を1で始める
i <= 5i が5以下の間、繰り返す
i++1回繰り返すたびに i を1増やす

i++ は、次のコードと同じような意味です。

i += 1;

プログラムでは、0から数え始めることがよくあります。

using System;
class Program
{
static void Main()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"i = {i}");
}
}
}

実行結果:

i = 0
i = 1
i = 2
i = 3
i = 4

i < 5 なので、i5 になる前に終了します。

この書き方は、後の章で配列を扱うときによく出てきます。


次のコードでは、1から10までの合計を求めます。

using System;
class Program
{
static void Main()
{
int total = 0;
for (int i = 1; i <= 10; i++)
{
total += i;
}
Console.WriteLine($"合計:{total}");
}
}

実行結果:

合計:55

total += i; によって、i の値を順番に足しています。

1 + 2 + 3 + ... + 10 = 55

次のコードでは、3回点数を入力し、合計を求めます。

using System;
class Program
{
static void Main()
{
int total = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"{i}人目の点数を入力してください。");
string input = Console.ReadLine();
int score = int.Parse(input);
total += score;
}
Console.WriteLine($"合計点:{total}");
}
}

実行例:

1人目の点数を入力してください。
80
2人目の点数を入力してください。
75
3人目の点数を入力してください。
90
合計点:245

このように、回数が決まっている繰り返しには for 文が向いています。


構文向いている場面
while条件を満たすまで繰り返す
for回数が決まっている繰り返し

例:

正しい番号が入力されるまで繰り返す
→ while文が向いている
3回入力する
→ for文が向いている

do-while 文は、処理を1回実行した後に条件を確認する繰り返しです。

基本形は次の通りです。

do
{
繰り返したい処理
} while (条件式);

while 文との違いは、最低1回は必ず実行されることです。


次のコードでは、名前が入力されるまで繰り返します。

using System;
class Program
{
static void Main()
{
string name;
do
{
Console.WriteLine("名前を入力してください。");
name = Console.ReadLine();
} while (name == "");
Console.WriteLine($"{name}さん、こんにちは。");
}
}

実行例:

名前を入力してください。
名前を入力してください。
山田
山田さん、こんにちは。

1回目に何も入力せずEnterを押した場合、name == "" が成り立つため、再入力になります。


while 文は、最初に条件を確認します。

while (条件式)
{
処理
}

do-while 文は、先に処理を実行してから条件を確認します。

do
{
処理
} while (条件式);

そのため、do-while 文は、次のような場面に向いています。

少なくとも1回は入力させたい
少なくとも1回はメニューを表示したい
少なくとも1回は処理を実行してから続けるか確認したい

エラーになりやすい例:最後のセミコロン忘れ

Section titled “エラーになりやすい例:最後のセミコロン忘れ”

do-while 文では、最後に ; が必要です。

正しい例:

do
{
Console.WriteLine("入力してください。");
input = Console.ReadLine();
} while (input == "");

エラーになる例:

do
{
Console.WriteLine("入力してください。");
input = Console.ReadLine();
} while (input == "")

do-while 文の最後には ; を付けることに注意してください。


繰り返し処理の中に、さらに繰り返し処理を書くことができます。

これを 2重ループ といいます。

for (int row = 1; row <= 3; row++)
{
for (int col = 1; col <= 4; col++)
{
Console.Write("*");
}
Console.WriteLine();
}

このコードでは、外側の for 文が行を表し、内側の for 文が列を表しています。


次のコードを入力して実行してください。

using System;
class Program
{
static void Main()
{
for (int row = 1; row <= 3; row++)
{
for (int col = 1; col <= 5; col++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}

実行結果:

*****
*****
*****

Console.Write は改行せずに表示します。
Console.WriteLine は改行します。

命令動作
Console.Write改行せずに表示する
Console.WriteLine表示後に改行する

次のコードでは、行番号と列番号の組み合わせを表示します。

using System;
class Program
{
static void Main()
{
for (int row = 1; row <= 3; row++)
{
for (int col = 1; col <= 4; col++)
{
Console.Write($"({row},{col}) ");
}
Console.WriteLine();
}
}
}

実行結果:

(1,1) (1,2) (1,3) (1,4)
(2,1) (2,2) (2,3) (2,4)
(3,1) (3,2) (3,3) (3,4)

2重ループでは、外側のループが1回進むごとに、内側のループが最初から最後まで実行されます。


次のコードでは、簡単な掛け算表を表示します。

using System;
class Program
{
static void Main()
{
for (int row = 1; row <= 5; row++)
{
for (int col = 1; col <= 5; col++)
{
int result = row * col;
Console.Write($"{result}\t");
}
Console.WriteLine();
}
}
}

実行結果:

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

\t はタブを表します。
表のように横方向の間隔を空けたいときに使えます。


2重ループは、慣れるまで読みにくく感じます。

読むときは、次のように分けて考えます。

外側のループ
→ 行を担当する
内側のループ
→ 列を担当する

また、デバッグで rowcol の値を確認すると理解しやすくなります。


break 文は、繰り返し処理を途中で終了するために使います。

break;

たとえば、条件に合うデータが見つかった時点で、繰り返しを終了したい場合に使います。


次のコードでは、文字列を入力し、空文字が入力されたら終了します。

using System;
class Program
{
static void Main()
{
while (true)
{
Console.WriteLine("メッセージを入力してください。空のままEnterで終了します。");
string message = Console.ReadLine();
if (message == "")
{
break;
}
Console.WriteLine($"入力内容:{message}");
}
Console.WriteLine("入力を終了しました。");
}
}

実行例:

メッセージを入力してください。空のままEnterで終了します。
おはよう
入力内容:おはよう
メッセージを入力してください。空のままEnterで終了します。
こんにちは
入力内容:こんにちは
メッセージを入力してください。空のままEnterで終了します。
入力を終了しました。

while (true) は、条件が常に true なので、そのままでは無限ループです。

しかし、空文字が入力されたときに break で抜けるため、処理を終了できます。


次のコードでは、1から20までの数の中から、7で割り切れる最初の数を探します。

using System;
class Program
{
static void Main()
{
for (int number = 1; number <= 20; number++)
{
if (number % 7 == 0)
{
Console.WriteLine($"最初に7で割り切れる数:{number}");
break;
}
}
}
}

実行結果:

最初に7で割り切れる数:7

break が実行されると、for 文全体が終了します。


2重ループの内側で break を使うと、内側のループだけを抜けます。

using System;
class Program
{
static void Main()
{
for (int row = 1; row <= 3; row++)
{
for (int col = 1; col <= 5; col++)
{
if (col == 3)
{
break;
}
Console.Write($"({row},{col}) ");
}
Console.WriteLine();
}
}
}

実行結果:

(1,1) (1,2)
(2,1) (2,2)
(3,1) (3,2)

内側の for 文は col == 3 で終了します。
ただし、外側の for 文は続きます。


continue 文は、現在の繰り返しの残りの処理をスキップし、次の繰り返しに進むために使います。

continue;

break は繰り返し全体を終了します。
continue は今回だけをスキップし、次の繰り返しを続けます。

動作
break繰り返しを終了する
continue今回の処理だけをスキップして次へ進む

次のコードでは、1から10までのうち、偶数だけを表示します。

using System;
class Program
{
static void Main()
{
for (int number = 1; number <= 10; number++)
{
if (number % 2 != 0)
{
continue;
}
Console.WriteLine(number);
}
}
}

実行結果:

2
4
6
8
10

number % 2 != 0 は、奇数であることを表します。

奇数の場合は continue によって、下の Console.WriteLine を実行せず、次の繰り返しに進みます。


削除済みデータをスキップするイメージ

Section titled “削除済みデータをスキップするイメージ”

業務アプリでは、削除済みのデータを一覧に表示しない、という処理があります。

まだ配列やリストは学習していませんが、考え方としては次のようになります。

using System;
class Program
{
static void Main()
{
for (int employeeId = 1001; employeeId <= 1005; employeeId++)
{
bool isDeleted = employeeId == 1003;
if (isDeleted)
{
continue;
}
Console.WriteLine($"社員ID:{employeeId}");
}
}
}

実行結果:

社員ID:1001
社員ID:1002
社員ID:1004
社員ID:1005

社員ID 1003 は削除済みとみなし、表示をスキップしています。

このように、continue は「処理対象外のデータを飛ばす」ときに使えます。


5-8 少し複雑な繰り返し処理を読んでみよう

Section titled “5-8 少し複雑な繰り返し処理を読んでみよう”

繰り返し処理では、自分で書く力だけでなく、他の人が書いたコードを読む力も重要です。

ここでは、少し複雑なコードを読みます。

次のコードは、1年目から10年目まで、売上が毎年増えていく様子を表示するプログラムです。
売上が目標金額を超えた時点で、繰り返しを終了します。

using System;
class Program
{
static void Main()
{
int sales = 100000;
int target = 150000;
for (int year = 1; year <= 10; year++)
{
sales += 8000;
Console.WriteLine($"{year}年目:{sales}");
if (sales >= target)
{
Console.WriteLine($"{year}年目に目標を達成しました。");
break;
}
}
Console.WriteLine("確認を終了します。");
}
}

実行結果:

1年目:108000円
2年目:116000円
3年目:124000円
4年目:132000円
5年目:140000円
6年目:148000円
7年目:156000円
7年目に目標を達成しました。
確認を終了します。

このコードを読むときは、次の順番で確認します。

1. 繰り返しが何回まで行われる可能性があるか
2. 繰り返しのたびに変化する変数はどれか
3. どの条件でbreakするか
4. breakしなかった場合はどうなるか

このコードでは、次のようになります。

観点内容
最大回数10回
変化する変数yearsales
終了条件sales >= target
終了時の動作目標達成メッセージを表示して break

このコードを理解するには、デバッグが有効です。

次の行にブレークポイントを設定してください。

sales += 8000;

F10 で1行ずつ実行し、次の値を確認します。

  • year
  • sales
  • target
  • sales >= target の判定結果

繰り返し処理は、目で読むだけでなく、実際に1行ずつ動かして確認することが大切です。


この章でよくあるつまずきを確認します。

つまずき原因対応
繰り返しが終わらない条件に関係する値を変更していないcount += 1; などの更新処理を確認する
1回多く繰り返される<=< の使い分けを間違えている開始値、終了条件、更新処理を表にして確認する
1回も実行されない最初から条件式が false になっている初期値と条件式を確認する
for 文の i++ の意味が分からない更新処理の理解が不十分i += 1 と同じように考える
do-while の最後でエラーになる最後の ; を忘れている} while (条件式); の形を確認する
2重ループの動きが分からない外側と内側の役割が混ざっている外側は行、内側は列と考える
breakcontinue を混同するどちらも繰り返し制御に使うためbreak は終了、continue は今回だけスキップ
while (true) が怖い終了条件が見えにくい必ず break する条件を確認する
デバッグでどこを見ればよいか分からない変化する変数が分かっていないカウンタ変数や合計用変数を確認する

次の項目について、自分で説明できるか確認してください。

  • 繰り返し処理とは何かを説明できる
  • while 文の基本形を書ける
  • while 文で無限ループが起きる原因を説明できる
  • for 文の基本形を書ける
  • for 文の初期化、条件式、更新の意味を説明できる
  • while 文と for 文の使い分けを説明できる
  • do-while 文が最低1回実行されることを説明できる
  • 2重ループの外側と内側の役割を説明できる
  • Console.WriteConsole.WriteLine の違いを説明できる
  • break の役割を説明できる
  • continue の役割を説明できる
  • デバッグで繰り返し処理を1行ずつ確認できる

研修の進め方によっては、隣の人またはチーム内で説明確認を行います。

次の内容を、自分の言葉で説明してください。

  1. while 文はどのようなときに使いますか。
  2. for 文はどのようなときに使いますか。
  3. 無限ループはなぜ起きますか。
  4. breakcontinue の違いは何ですか。
  5. 2重ループでは、外側と内側のループはそれぞれ何を担当しますか。
  6. Console.WriteConsole.WriteLine の違いは何ですか。

説明するときは、完全な答えでなくても構いません。
自分の言葉で説明しようとすることが大切です。


この章の演習課題に取り組みます。

制限時間は 60分 です。

時間内にすべて完成しなくても構いません。
できたところまでを保存し、Gitに提出してください。

提出について

制限時間になったら、完成・未完成に関わらず作業を止めます。 できたところまでをGitにcommitし、pushしてください。 未完成の場合は、どこまでできたかを報告できるようにしておきましょう。


まずは、全員が必須課題に取り組んでください。


while 文を使って、1から10までの数値を表示してください。

実行結果:

1
2
3
4
5
6
7
8
9
10

条件:

  • while 文を使う
  • カウンタ変数を使う
  • 無限ループにならないようにする

課題5-2 1から10までの合計を求める

Section titled “課題5-2 1から10までの合計を求める”

for 文を使って、1から10までの合計を求めて表示してください。

実行結果:

合計:55

条件:

  • for 文を使う
  • 合計用の変数を使う
  • += を使って合計する

課題5-3 3人分の点数を入力して合計する

Section titled “課題5-3 3人分の点数を入力して合計する”

3人分の点数を入力し、合計点を表示してください。

実行例:

1人目の点数を入力してください。
80
2人目の点数を入力してください。
75
3人目の点数を入力してください。
90
合計点:245

条件:

  • for 文を使う
  • Console.ReadLine を使う
  • int.Parse を使う
  • 合計点を変数で管理する

課題5-4 メニュー番号を再入力させる

Section titled “課題5-4 メニュー番号を再入力させる”

1から3のメニュー番号が入力されるまで、入力を繰り返してください。

1: 登録
2: 検索
3: 終了

実行例:

メニュー番号を入力してください。
1: 登録
2: 検索
3: 終了
5
メニュー番号を入力してください。
1: 登録
2: 検索
3: 終了
0
メニュー番号を入力してください。
1: 登録
2: 検索
3: 終了
2
選択された番号:2

条件:

  • while 文を使う
  • menu < 1 || menu > 3 のような条件式を使う
  • 正しい番号が入力されたら繰り返しを終了する

必須課題が終わった人は、発展課題に取り組んでください。


課題5-5 空でない名前が入力されるまで繰り返す

Section titled “課題5-5 空でない名前が入力されるまで繰り返す”

do-while 文を使って、名前が入力されるまで繰り返してください。

実行例:

名前を入力してください。
名前を入力してください。
佐藤
佐藤さん、こんにちは。

条件:

  • do-while 文を使う
  • 空文字列 "" の場合は再入力させる
  • 入力された名前を使ってメッセージを表示する

1から20までの数値のうち、偶数だけを表示してください。

実行結果:

2
4
6
8
10
12
14
16
18
20

条件:

  • for 文を使う
  • % を使う
  • 必要に応じて continue を使う

課題5-7 5行×5列の表を表示する

Section titled “課題5-7 5行×5列の表を表示する”

2重ループを使って、次のような表を表示してください。

実行結果:

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

条件:

  • 2重ループを使う
  • 外側のループを行として考える
  • 内側のループを列として考える
  • Console.WriteConsole.WriteLine を使い分ける

課題5-8 空文字が入力されるまでメモを受け付ける

Section titled “課題5-8 空文字が入力されるまでメモを受け付ける”

空文字が入力されるまで、入力されたメモを表示し続けてください。

実行例:

メモを入力してください。空のままEnterで終了します。
会議資料を確認
入力内容:会議資料を確認
メモを入力してください。空のままEnterで終了します。
顧客へ連絡
入力内容:顧客へ連絡
メモを入力してください。空のままEnterで終了します。
入力を終了しました。

条件:

  • while (true) を使ってもよい
  • 空文字が入力されたら break で終了する
  • 入力された文字列を表示する

課題5-9 目標金額に到達する年数を求める

Section titled “課題5-9 目標金額に到達する年数を求める”

初期売上が 100000 円、毎年 12000 円ずつ増えるとします。
売上が 180000 円以上になるのは何年目かを表示してください。

実行結果例:

1年目:112000円
2年目:124000円
3年目:136000円
4年目:148000円
5年目:160000円
6年目:172000円
7年目:184000円
7年目に目標を達成しました。

条件:

  • for 文または while 文を使う
  • 売上を毎年増やす
  • 目標に到達したら break で終了する

課題が終わったら、できたところまでをGitに提出します。

まず、現在の状態を確認します。

Terminal window
git status

変更されたファイルを追加します。

Terminal window
git add .

コミットします。

Terminal window
git commit -m "Chapter05 繰り返し処理"

ファイルサーバー上のリポジトリへpushします。

Terminal window
git push

Gitの操作でエラーが出た場合は、自己判断で同じ操作を繰り返さず、講師に確認してください。


提出前に、次の項目を確認してください。

  • プログラムをVisual Studioから実行できる
  • while 文を使った処理を書ける
  • for 文を使った処理を書ける
  • 必要に応じて do-while 文を使っている
  • カウンタ変数の初期値、条件式、更新処理を確認している
  • 無限ループになっていない
  • 合計用の変数を使っている
  • break または continue の動きを説明できる
  • 2重ループの外側と内側の役割を説明できる
  • Console.WriteConsole.WriteLine を使い分けている
  • インデントが整っている
  • Gitにcommitしている
  • Gitにpushしている

この章では、繰り返し処理について学習しました。

この章で学んだ主な内容は次の通りです。

  • 繰り返し処理を使うと、同じような処理を何度も書かずに済む
  • while 文は、条件が成り立つ間処理を繰り返す
  • while 文では、条件に関係する値を変化させないと無限ループになることがある
  • for 文は、回数が決まっている繰り返しに向いている
  • for 文には、初期化、条件式、更新処理がある
  • do-while 文は、最低1回は処理を実行する
  • 2重ループを使うと、行と列のような構造を表現できる
  • break は、繰り返し処理を途中で終了する
  • continue は、今回の処理だけをスキップして次の繰り返しに進む
  • 繰り返し処理は、デバッグで変数の変化を確認すると理解しやすい

次章では、配列 を学習します。

配列を使うと、複数の値を1つのまとまりとして管理できます。
繰り返し処理と配列を組み合わせることで、複数件のデータを効率よく処理できるようになります。