int a[5]; // 整数を格納できる要素数 5 の配列の宣言
a[0] = 10; // 配列へのデータの書き込み
a[1] = 2;
a[2] = 0;
a[3] = -5;
a[4] = -23;
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
paiza.IO に貼り付けたところが下図である。インデントの揃え方も参考にして欲しい。
|
[注意] 1 年生で学んだ Visual Basic における配列では、 Dim a(5) As Integer により、a(0)、a(1)、a(2)、a(3)、a(4)、a(5) の 6 つの変数が使えたことに注意。 ただし、プログラミング言語の世界では、むしろVisual Basic のように 6 つの変数が使えることの方が特殊である。 C/C++、Java、C# などのように「宣言『int a[5];』により a[0] ~ a[4] の 5 つの変数が使える」という形式に早く慣れよう。 |
a[0] = 10; // 配列へのデータの書き込み a[1] = 2; a[2] = 0; a[3] = -5; a[4] = -23;この5つの命令により、以下のような状況が生まれる。
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
「for(int i=0 ; i<5 ; i++)」により、「i が 0 から 4 まで変化する」という for 文となり、
int a[5]; // 要素数 5 の配列の宣言
a[0] = 10; // 配列へのデータの書き込み
a[1] = 2;
a[2] = 0;
a[3] = -5;
a[4] = -23;
a[5] = -1;
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
これを paiza.IO で実行すると、下図のように「エラー」ではなく「警告 (warning)」となり、実行はできてしまう。
int a[5] = {10, 2, 0, -5, -23}; // 要素数 5 の配列の初期化
// 配列のデータをコンソールに表示
for(int i=0 ; i<5 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
これにより、下図のような状況となる。次習の演習ではこの配列の初期化を用いる予定である。
int a[] = {10, 2, 0, -5, -23}; // 要素数 5 の配列の初期化
また、左辺の要素数に対して、右辺の数値の個数が少なかった場合、その要素は 0 で初期化される。
int a[5] = {10, 2, 0, -5}; // 値の与えられなかった a[4] は 0 で初期化される。
また、左辺の要素数よりも多いデータを右辺に与えると、エラーになる。
int a[5] = {10, 2, 0, -5, -23, -7}; // エラー
int a[10]; // 整数を格納できる要素数 10 の配列の宣言
// 3の倍数を10個格納
a[0] = 0;
a[1] = 3;
a[2] = 6;
a[3] = 9;
a[4] = 12;
a[5] = 15;
a[6] = 18;
a[7] = 21;
a[8] = 24;
a[9] = 27;
// 要素数 10 の配列のデータをコンソールに表示
for(int i=0 ; i<10 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
見ての通り、3の倍数を列挙して順に格納しているだけである。
// 3の倍数を10個格納
int a[10] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27};
なぜこれらがダメかというと、配列の要素数 (ここでは 10) が 100 や 1000 などと大きくなったときに
int a[10]; // 整数を格納できる要素数 10 の配列の宣言
// 3の倍数を10個格納
for(int i=0 ; i<10 ; i++)
{
a[i] = 3*i;
}
// 要素数 10 の配列のデータをコンソールに表示
for(int i=0 ; i<10 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
for 文は i=0 で始まり i<10 のあいだ繰り返される。すなわち i が 0~9 の間、
a[i] = 3*i; という命令が繰り返される。
int a[10];
// 数列の初期値
a[0] = 0;
// 漸化式は i>=1 のときのみ
for(int i=1 ; i<10 ; i++)
{
a[i] = 2*a[i-1]-1;
}
// コンソールへの表示は i=0 からで OK
for(int i=0 ; i<10 ; i++)
{
cout << "配列aの" << i << "番目の値は" << a[i] << "\n";
}
プログラムを良く見ると、漸化式「a[i] = 2*a[i-1]-1;」を計算しているのは「for(int i=1 ; i<10 ; i++)」においてである。