第6章 配列
この章の目的
Section titled “この章の目的”この章では、複数の値をまとめて管理するための 配列 を学習します。
これまでの章では、1つの値を1つの変数で管理してきました。
int score1 = 80;int score2 = 75;int score3 = 90;このように、扱う値が少ないうちは問題ありません。
しかし、点数が10件、100件、1000件と増えた場合、次のように変数を1つずつ用意するのは現実的ではありません。
int score1;int score2;int score3;int score4;int score5;// ...このようなときに、複数の値を1つのまとまりとして扱えるのが 配列 です。
配列を使うと、複数の点数、社員名、商品価格などをまとめて管理できます。
この章でできるようになること
Section titled “この章でできるようになること”この章を終えると、次のことができるようになります。
- 配列とは何かを説明できる
- 同じ型の複数の値を配列で管理できる
- 配列を宣言し、初期化できる
- 配列の各要素にアクセスできる
- 配列のインデックスが0から始まることを説明できる
for文を使って配列の要素を順番に処理できるLengthを使って配列の要素数を取得できる- 初期化を伴わない配列を作成し、後から値を代入できる
foreach文を使って配列の要素を順番に取り出せる- 2次元配列の基本を説明できる
- 配列で起きやすい範囲外アクセスのエラーを理解できる
本章で使用する環境
Section titled “本章で使用する環境”| 項目 | 内容 |
|---|---|
| 開発環境 | Visual Studio 2022 |
| プロジェクト種類 | コンソール アプリ |
| 対象フレームワーク | .NET 8 |
| プロジェクト名 | Chapter06_Array |
作業前チェック
Section titled “作業前チェック”作業を始める前に、次の内容を確認してください。
- Visual Studio 2022でコンソールアプリを作成できる
-
.NET 8.0を選択できる -
intやstringの変数を作成できる -
for文を使って指定回数の繰り返しができる -
Console.ReadLineとint.Parseを使える -
Console.WriteとConsole.WriteLineの違いを説明できる - 第5章の内容をGitに提出済みである
6-1 配列の基礎
Section titled “6-1 配列の基礎”配列を使わない場合
Section titled “配列を使わない場合”まず、5人分の点数から平均点を求めるプログラムを考えます。
配列を使わない場合、次のように書けます。
using System;
class Program{ static void Main() { int score1 = 80; int score2 = 75; int score3 = 90; int score4 = 68; int score5 = 85;
int total = score1 + score2 + score3 + score4 + score5; double average = (double)total / 5;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行結果:
合計点:398平均点:79.6このコードは動作します。
しかし、点数が増えると変数も増えます。
score1score2score3score4score5...このように、似た役割の変数が増える場合は、配列を使うと管理しやすくなります。
配列を使う場合
Section titled “配列を使う場合”配列を使うと、複数の値を1つの変数名でまとめて扱えます。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int total = scores[0] + scores[1] + scores[2] + scores[3] + scores[4]; double average = (double)total / 5;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行結果:
合計点:398平均点:79.6次の部分が配列です。
int[] scores = { 80, 75, 90, 68, 85 };これは、int 型の値を複数持つ配列を作成しています。
配列のイメージ
Section titled “配列のイメージ”配列は、同じ型の値を順番に並べたものです。
scores
インデックス 0 1 2 3 4値 80 75 90 68 85配列の各値には、番号が付いています。
この番号を インデックス といいます。
C#の配列のインデックスは、0 から始まります。
1番目の要素 → scores[0]2番目の要素 → scores[1]3番目の要素 → scores[2]配列の要素にアクセスする
Section titled “配列の要素にアクセスする”配列の要素を取り出すには、次のように書きます。
scores[0]これは、scores 配列の0番目の要素を表します。
次のコードを入力して実行してください。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
Console.WriteLine(scores[0]); Console.WriteLine(scores[1]); Console.WriteLine(scores[2]); }}実行結果:
807590エラーになる例:範囲外のインデックス
Section titled “エラーになる例:範囲外のインデックス”次のコードは実行時にエラーになります。
int[] scores = { 80, 75, 90, 68, 85 };
Console.WriteLine(scores[5]);scores 配列には、5つの要素があります。
しかし、インデックスは 0 から始まるため、使える番号は 0 から 4 までです。
要素数:5使えるインデックス:0, 1, 2, 3, 4scores[5] は存在しない要素を参照しているため、エラーになります。
注意
配列では、要素数と最後のインデックスを混同しやすいです。
要素数が5の場合、最後のインデックスは4です。
6-2 配列とfor文の繰り返し処理
Section titled “6-2 配列とfor文の繰り返し処理”配列の合計を求める
Section titled “配列の合計を求める”配列は、繰り返し処理と組み合わせることで便利になります。
次のコードでは、for 文を使って配列の点数を合計します。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int total = 0;
for (int i = 0; i < 5; i++) { total += scores[i]; }
double average = (double)total / 5;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行結果:
合計点:398平均点:79.6for文とインデックス
Section titled “for文とインデックス”次の部分に注目してください。
for (int i = 0; i < 5; i++){ total += scores[i];}i の値は、次のように変化します。
i = 0i = 1i = 2i = 3i = 4そのため、次の要素を順番に処理できます。
scores[0]scores[1]scores[2]scores[3]scores[4]Lengthを使う
Section titled “Lengthを使う”先ほどのコードでは、配列の要素数を 5 と直接書いていました。
for (int i = 0; i < 5; i++)しかし、配列の要素数が変わった場合、この 5 も修正しなければなりません。
そこで、配列の要素数を取得する Length を使います。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int total = 0;
for (int i = 0; i < scores.Length; i++) { total += scores[i]; }
double average = (double)total / scores.Length;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行結果:
合計点:398平均点:79.6Lengthを使うメリット
Section titled “Lengthを使うメリット”Length を使うと、配列の要素数が変わっても対応しやすくなります。
int[] scores = { 80, 75, 90, 68, 85, 92, 77 };このように点数を増やしても、for 文を修正する必要がありません。
for (int i = 0; i < scores.Length; i++)配列を扱うときは、固定の数値ではなく、できるだけ Length を使いましょう。
社員名一覧を表示する
Section titled “社員名一覧を表示する”数値だけでなく、文字列の配列も作れます。
using System;
class Program{ static void Main() { string[] employeeNames = { "山田", "佐藤", "鈴木", "田中" };
for (int i = 0; i < employeeNames.Length; i++) { Console.WriteLine(employeeNames[i]); } }}実行結果:
山田佐藤鈴木田中番号付きで表示する
Section titled “番号付きで表示する”配列のインデックスは0から始まりますが、画面表示では1番から表示したい場合があります。
using System;
class Program{ static void Main() { string[] employeeNames = { "山田", "佐藤", "鈴木", "田中" };
for (int i = 0; i < employeeNames.Length; i++) { Console.WriteLine($"{i + 1}番目:{employeeNames[i]}"); } }}実行結果:
1番目:山田2番目:佐藤3番目:鈴木4番目:田中インデックスは0から始まりますが、人に見せる番号は i + 1 にすると自然です。
エラーになる例:条件式に <= を使う
Section titled “エラーになる例:条件式に <= を使う”次のコードはエラーになります。
int[] scores = { 80, 75, 90, 68, 85 };
for (int i = 0; i <= scores.Length; i++){ Console.WriteLine(scores[i]);}scores.Length は 5 です。
この条件では、i が 5 のときも繰り返しが実行されます。
i = 0, 1, 2, 3, 4, 5しかし、最後の有効なインデックスは 4 です。
正しくは次のように書きます。
for (int i = 0; i < scores.Length; i++){ Console.WriteLine(scores[i]);}配列と for 文を組み合わせるときは、基本的に次の形を使います。
for (int i = 0; i < array.Length; i++)6-3 初期化を伴わない配列の宣言
Section titled “6-3 初期化を伴わない配列の宣言”要素数だけを決めて配列を作る
Section titled “要素数だけを決めて配列を作る”配列は、最初から値を入れて作るだけではありません。
要素数だけを決めて、後から値を入れることもできます。
int[] scores = new int[5];これは、int 型の値を5個入れられる配列を作成しています。
scores
インデックス 0 1 2 3 4値 0 0 0 0 0int 型の配列では、初期値として 0 が入ります。
後から値を代入する
Section titled “後から値を代入する”配列の各要素には、後から値を代入できます。
using System;
class Program{ static void Main() { int[] scores = new int[5];
scores[0] = 80; scores[1] = 75; scores[2] = 90; scores[3] = 68; scores[4] = 85;
Console.WriteLine(scores[0]); Console.WriteLine(scores[1]); Console.WriteLine(scores[2]); Console.WriteLine(scores[3]); Console.WriteLine(scores[4]); }}実行結果:
8075906885型ごとの初期値
Section titled “型ごとの初期値”配列を作成した直後、各要素には型に応じた初期値が入ります。
| 型 | 初期値 |
|---|---|
int | 0 |
double | 0 |
bool | false |
string | null |
null は、参照先がないことを表す特別な値です。
詳しくは後の章で扱います。
この章では、string 配列を作った直後は、まだ文字列が入っていないと理解しておきましょう。
文字列配列を後から設定する
Section titled “文字列配列を後から設定する”using System;
class Program{ static void Main() { string[] departments = new string[3];
departments[0] = "営業部"; departments[1] = "開発部"; departments[2] = "総務部";
for (int i = 0; i < departments.Length; i++) { Console.WriteLine(departments[i]); } }}実行結果:
営業部開発部総務部6-4 配列要素に値を設定する
Section titled “6-4 配列要素に値を設定する”入力値を配列に格納する
Section titled “入力値を配列に格納する”配列は、入力された値を順番に保存するときにも使えます。
次のコードでは、3人分の点数を入力し、配列に格納します。
using System;
class Program{ static void Main() { int[] scores = new int[3];
for (int i = 0; i < scores.Length; i++) { Console.WriteLine($"{i + 1}人目の点数を入力してください。");
string input = Console.ReadLine(); scores[i] = int.Parse(input); }
Console.WriteLine("入力された点数:");
for (int i = 0; i < scores.Length; i++) { Console.WriteLine(scores[i]); } }}実行例:
1人目の点数を入力してください。802人目の点数を入力してください。753人目の点数を入力してください。90入力された点数:807590入力値の合計と平均を求める
Section titled “入力値の合計と平均を求める”入力された点数の合計と平均を求めます。
using System;
class Program{ static void Main() { int[] scores = new int[3];
for (int i = 0; i < scores.Length; i++) { Console.WriteLine($"{i + 1}人目の点数を入力してください。");
string input = Console.ReadLine(); scores[i] = int.Parse(input); }
int total = 0;
for (int i = 0; i < scores.Length; i++) { total += scores[i]; }
double average = (double)total / scores.Length;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行例:
1人目の点数を入力してください。802人目の点数を入力してください。753人目の点数を入力してください。90合計点:245平均点:81.66666666666667最大値を求める
Section titled “最大値を求める”配列に入っている点数の最大値を求めます。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int maxScore = scores[0];
for (int i = 1; i < scores.Length; i++) { if (scores[i] > maxScore) { maxScore = scores[i]; } }
Console.WriteLine($"最高点:{maxScore}"); }}実行結果:
最高点:90このコードでは、最初に scores[0] を最大値として仮に設定しています。
int maxScore = scores[0];その後、配列の要素を順番に確認し、より大きい値があれば maxScore を更新します。
配列の中に特定の値があるかどうかを調べます。
using System;
class Program{ static void Main() { string[] employeeNames = { "山田", "佐藤", "鈴木", "田中" };
Console.WriteLine("検索する名前を入力してください。"); string keyword = Console.ReadLine();
bool found = false;
for (int i = 0; i < employeeNames.Length; i++) { if (employeeNames[i] == keyword) { found = true; break; } }
if (found) { Console.WriteLine("該当する社員が見つかりました。"); } else { Console.WriteLine("該当する社員は見つかりませんでした。"); } }}実行例:
検索する名前を入力してください。佐藤該当する社員が見つかりました。このように、配列、for 文、if 文、break を組み合わせることで、簡単な検索処理を作成できます。
6-5 foreach文を使った繰り返し処理
Section titled “6-5 foreach文を使った繰り返し処理”foreach文とは
Section titled “foreach文とは”foreach 文は、配列の要素を1つずつ順番に取り出すための構文です。
基本形は次の通りです。
foreach (型 変数名 in 配列){ 繰り返したい処理}配列のすべての要素を順番に処理したい場合に便利です。
foreachで社員名を表示する
Section titled “foreachで社員名を表示する”次のコードを入力して実行してください。
using System;
class Program{ static void Main() { string[] employeeNames = { "山田", "佐藤", "鈴木", "田中" };
foreach (string employeeName in employeeNames) { Console.WriteLine(employeeName); } }}実行結果:
山田佐藤鈴木田中foreach 文では、配列の要素が先頭から順番に employeeName に入ります。
foreachで合計を求める
Section titled “foreachで合計を求める”数値の配列でも foreach を使えます。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int total = 0;
foreach (int score in scores) { total += score; }
double average = (double)total / scores.Length;
Console.WriteLine($"合計点:{total}"); Console.WriteLine($"平均点:{average}"); }}実行結果:
合計点:398平均点:79.6for文とforeach文の使い分け
Section titled “for文とforeach文の使い分け”for 文と foreach 文は、どちらも配列の処理に使えます。
| 構文 | 向いている場面 |
|---|---|
for 文 | インデックス番号が必要な場合 |
foreach 文 | 要素を順番に取り出せればよい場合 |
例:
何番目の要素か表示したい → for文が向いている
全要素を順番に表示したい → foreach文が向いているforeachではインデックスを直接扱わない
Section titled “foreachではインデックスを直接扱わない”foreach 文では、要素そのものを取り出します。
foreach (int score in scores){ Console.WriteLine(score);}一方、for 文ではインデックスを使います。
for (int i = 0; i < scores.Length; i++){ Console.WriteLine(scores[i]);}どちらも配列を処理できますが、目的によって使い分けます。
注意:foreachの変数に代入しない
Section titled “注意:foreachの変数に代入しない”次のコードはエラーになります。
int[] scores = { 80, 75, 90 };
foreach (int score in scores){ score = 100;}foreach で取り出した変数 score には、代入できません。
配列の値を変更したい場合は、for 文でインデックスを使います。
int[] scores = { 80, 75, 90 };
for (int i = 0; i < scores.Length; i++){ scores[i] = 100;}6-6 2次元配列
Section titled “6-6 2次元配列”2次元配列とは
Section titled “2次元配列とは”これまで扱った配列は、値が横一列に並んでいるイメージでした。
scores
80 75 90 68 85これを1次元配列と考えることができます。
一方、2次元配列は、行と列を持つ表のような配列です。
scoresTable
1科目目 2科目目 3科目目1人目 80 75 902人目 68 85 723人目 90 88 95表形式のデータを扱うときに使えます。
2次元配列を作る
Section titled “2次元配列を作る”次のコードでは、3人分、3科目の点数を2次元配列で管理します。
using System;
class Program{ static void Main() { int[,] scores = { { 80, 75, 90 }, { 68, 85, 72 }, { 90, 88, 95 } };
Console.WriteLine(scores[0, 0]); Console.WriteLine(scores[1, 2]); Console.WriteLine(scores[2, 1]); }}実行結果:
8072882次元配列では、次のように行と列のインデックスを指定します。
scores[行, 列]インデックスは、行も列も 0 から始まります。
2重ループで2次元配列を表示する
Section titled “2重ループで2次元配列を表示する”2次元配列は、2重ループと相性がよいです。
using System;
class Program{ static void Main() { int[,] scores = { { 80, 75, 90 }, { 68, 85, 72 }, { 90, 88, 95 } };
for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { Console.Write($"{scores[row, col]}\t"); }
Console.WriteLine(); } }}実行結果:
80 75 9068 85 7290 88 95外側のループは行、内側のループは列を担当しています。
GetLengthを使う
Section titled “GetLengthを使う”2次元配列では、行数や列数を取得するために GetLength を使います。
scores.GetLength(0)これは行数を表します。
scores.GetLength(1)これは列数を表します。
次のように書くと、配列の大きさが変わっても対応しやすくなります。
using System;
class Program{ static void Main() { int[,] scores = { { 80, 75, 90 }, { 68, 85, 72 }, { 90, 88, 95 } };
for (int row = 0; row < scores.GetLength(0); row++) { for (int col = 0; col < scores.GetLength(1); col++) { Console.Write($"{scores[row, col]}\t"); }
Console.WriteLine(); } }}2次元配列の行ごとの合計
Section titled “2次元配列の行ごとの合計”次のコードでは、1人ごとの合計点を求めます。
using System;
class Program{ static void Main() { int[,] scores = { { 80, 75, 90 }, { 68, 85, 72 }, { 90, 88, 95 } };
for (int row = 0; row < scores.GetLength(0); row++) { int total = 0;
for (int col = 0; col < scores.GetLength(1); col++) { total += scores[row, col]; }
Console.WriteLine($"{row + 1}人目の合計点:{total}"); } }}実行結果:
1人目の合計点:2452人目の合計点:2253人目の合計点:273このように、2次元配列と2重ループを組み合わせると、表形式のデータを処理できます。
補足:Length と GetLength() の違い
1次元配列では、要素数を調べるために
Lengthを使いました。scores.Length一方、2次元配列では、行数や列数を調べるために
GetLength(0)やGetLength(1)を使います。scores.GetLength(0)scores.GetLength(1)
Lengthは、配列が持っている「要素数」という情報を取り出すものです。
このように、オブジェクトが持つ情報や状態を表すものを プロパティ と呼びます。
GetLength()は、指定した次元の長さを調べる処理を呼び出しています。
このように、何らかの処理を行うものを メソッド と呼びます。まだ詳しく覚える必要はありませんが、まずは次のように区別しておきましょう。
種類 例 意味 プロパティ scores.Length情報を取り出す メソッド scores.GetLength(0)処理を呼び出す メソッドには
()が付きます。
プロパティには通常()が付きません。
よくあるつまずき
Section titled “よくあるつまずき”この章でよくあるつまずきを確認します。
| つまずき | 原因 | 対応 |
|---|---|---|
scores[5] でエラーになる | 存在しないインデックスにアクセスしている | 要素数5なら最後は scores[4] |
i <= scores.Length と書いてエラーになる | 最後に範囲外アクセスしている | i < scores.Length と書く |
| 配列のインデックスが1からだと思ってしまう | 人間の数え方と混同している | C#の配列は0から始まる |
| 配列の型が分からない | int[] や string[] の意味が曖昧 | 型[] はその型の配列と考える |
Length と Count を混同する | 配列とListの違いが曖昧 | 配列は Length、Listは後の章で Count |
foreach で何番目か分からない | foreach はインデックスを直接扱わない | 番号が必要なら for 文を使う |
| 2次元配列の行と列が逆になる | scores[row, col] の意味が曖昧 | 先に行、次に列と考える |
GetLength(0) と GetLength(1) を混同する | 次元の番号を理解していない | 0 は行数、1 は列数と覚える |
| 合計用変数の初期化位置を間違える | ループの外に置くべきか中に置くべきか混同 | 行ごとの合計なら外側ループの中で初期化する |
学んだことチェック
Section titled “学んだことチェック”次の項目について、自分で説明できるか確認してください。
- 配列とは何かを説明できる
- 配列を使うメリットを説明できる
-
int[]やstring[]の意味を説明できる - 配列のインデックスが0から始まることを説明できる
- 配列の要素にアクセスできる
-
Lengthを使って配列の要素数を取得できる -
for文で配列の要素を順番に処理できる - 配列に後から値を代入できる
- 入力された値を配列に保存できる
-
foreach文で配列の要素を順番に取り出せる -
for文とforeach文の使い分けを説明できる - 2次元配列の基本を説明できる
-
GetLength(0)とGetLength(1)の違いを説明できる
研修の進め方によっては、隣の人またはチーム内で説明確認を行います。
次の内容を、自分の言葉で説明してください。
- 配列はどのようなときに使いますか。
scores[0]は何を表していますか。- 要素数が5の配列で、最後のインデックスはいくつですか。
scores.Lengthは何を表していますか。for文とforeach文の違いは何ですか。- 2次元配列では、
scores[1, 2]はどのように考えますか。
説明するときは、完全な答えでなくても構いません。
自分の言葉で説明しようとすることが大切です。
この章の演習課題に取り組みます。
制限時間は 60分 です。
時間内にすべて完成しなくても構いません。
できたところまでを保存し、Gitに提出してください。
提出について
制限時間になったら、完成・未完成に関わらず作業を止めます。 できたところまでをGitにcommitし、pushしてください。 未完成の場合は、どこまでできたかを報告できるようにしておきましょう。
まずは、全員が必須課題に取り組んでください。
課題6-1 点数配列を表示する
Section titled “課題6-1 点数配列を表示する”次の点数を配列に入れ、すべて表示してください。
80, 75, 90, 68, 85実行結果例:
8075906885条件:
int[]を使うfor文を使うLengthを使う
課題6-2 点数の合計と平均を求める
Section titled “課題6-2 点数の合計と平均を求める”次の点数を配列に入れ、合計点と平均点を表示してください。
80, 75, 90, 68, 85実行結果例:
合計点:398平均点:79.6条件:
int[]を使う- 合計用の変数を使う
- 平均点は小数が表示されるようにする
Lengthを使う
課題6-3 社員名一覧を表示する
Section titled “課題6-3 社員名一覧を表示する”次の社員名を配列に入れ、番号付きで表示してください。
山田, 佐藤, 鈴木, 田中実行結果例:
1番目:山田2番目:佐藤3番目:鈴木4番目:田中条件:
string[]を使うfor文を使う- 表示番号は1から始める
課題6-4 入力された3人分の点数を配列に保存する
Section titled “課題6-4 入力された3人分の点数を配列に保存する”3人分の点数を入力し、配列に保存してください。
その後、入力された点数をすべて表示してください。
実行例:
1人目の点数を入力してください。802人目の点数を入力してください。753人目の点数を入力してください。90入力された点数:807590条件:
new int[3]を使うConsole.ReadLineを使うint.Parseを使う- 入力と表示の両方で
for文を使う
必須課題が終わった人は、発展課題に取り組んでください。
課題6-5 最高点を求める
Section titled “課題6-5 最高点を求める”次の点数配列から、最高点を求めて表示してください。
72, 88, 91, 65, 84, 97, 78実行結果例:
最高点:97条件:
- 配列を使う
for文を使う- 最初の要素を仮の最高点として扱う
課題6-6 社員名を検索する
Section titled “課題6-6 社員名を検索する”次の社員名配列を用意します。
山田, 佐藤, 鈴木, 田中, 高橋検索する名前を入力し、配列内に存在するか判定してください。
実行例:
検索する名前を入力してください。佐藤該当する社員が見つかりました。実行例:
検索する名前を入力してください。伊藤該当する社員は見つかりませんでした。条件:
string[]を使うConsole.ReadLineを使うfor文を使う- 見つかったら
breakしてもよい - 見つかったかどうかを
bool変数で管理する
課題6-7 foreachで部署一覧を表示する
Section titled “課題6-7 foreachで部署一覧を表示する”次の部署名を配列に入れ、foreach 文で表示してください。
営業部, 開発部, 総務部, 人事部実行結果例:
営業部開発部総務部人事部条件:
string[]を使うforeach文を使う
課題6-8 2次元配列で点数表を表示する
Section titled “課題6-8 2次元配列で点数表を表示する”3人分、3科目の点数を2次元配列で管理し、表形式で表示してください。
点数:
80, 75, 9068, 85, 7290, 88, 95実行結果例:
80 75 9068 85 7290 88 95条件:
int[,]を使う- 2重ループを使う
GetLength(0)とGetLength(1)を使うConsole.WriteとConsole.WriteLineを使い分ける
課題6-9 2次元配列で行ごとの合計を求める
Section titled “課題6-9 2次元配列で行ごとの合計を求める”課題6-8の2次元配列を使い、1人ごとの合計点を表示してください。
実行結果例:
1人目の合計点:2452人目の合計点:2253人目の合計点:273条件:
- 2次元配列を使う
- 2重ループを使う
- 行ごとに合計用変数を初期化する
Gitへの提出
Section titled “Gitへの提出”課題が終わったら、できたところまでをGitに提出します。
まず、現在の状態を確認します。
git status変更されたファイルを追加します。
git add .コミットします。
git commit -m "Chapter06 配列"ファイルサーバー上のリポジトリへpushします。
git pushGitの操作でエラーが出た場合は、自己判断で同じ操作を繰り返さず、講師に確認してください。
提出前チェックリスト
Section titled “提出前チェックリスト”提出前に、次の項目を確認してください。
- プログラムをVisual Studioから実行できる
- 配列を宣言できている
- 配列の要素にアクセスできている
- インデックスが0から始まることを意識できている
-
Lengthを使っている -
for文で配列を処理している - 必要に応じて
foreach文を使っている - 配列の範囲外にアクセスしていない
- 入力値を配列に保存できている
- 2次元配列の行と列を正しく扱えている
- インデントが整っている
- Gitにcommitしている
- Gitにpushしている
この章のまとめ
Section titled “この章のまとめ”この章では、配列について学習しました。
この章で学んだ主な内容は次の通りです。
- 配列は、同じ型の複数の値をまとめて管理する仕組みである
- 配列の各要素にはインデックスでアクセスする
- C#の配列のインデックスは0から始まる
- 要素数が5の配列で使えるインデックスは0から4までである
- 配列の要素数は
Lengthで取得できる - 配列と
for文を組み合わせると、複数の値を順番に処理できる - 配列は、最初に値を入れて作ることも、要素数だけ決めて後から値を入れることもできる
foreach文を使うと、配列の要素を順番に取り出せる- インデックス番号が必要な場合は
for文が向いている - 2次元配列を使うと、行と列を持つ表のようなデータを扱える
- 2次元配列では、
GetLength(0)で行数、GetLength(1)で列数を取得できる
次章では、クラスとオブジェクト指向プログラミングの基礎 を学習します。
これまでは、数値や文字列、配列を使ってデータを扱ってきました。
次章からは、複数のデータと処理を1つのまとまりとして扱う クラス を学び、オブジェクト指向プログラミングの入口に進みます。