第6講 配列
第2話 配列の宣言と使い方
そのやり方は、
int[] a = new int[10000];
です。これで1万個の変数が用意できます。
どのような変数が用意できたかと申しますと、
a[0],a[1],a[2],・・・,a[9999]
の1万個です。
最後がa[10000]でないことに注意して下さい。
0から始まっていますので、9999が1万個目になるのです
これを忘れて、
a[10000]=5;
などするとエラーします。
配列のことを添え字付き変数ともいいます。
添え字とは[]内の数字です。
配列は、一瞬にして多くの変数を用意できるだけでなく、
添え字が、for文の制御変数で制御できるという大変大変大きなメリットを持っています。
例によって具体例を示しましょう。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int[] x = new int[10];
for (int i = 0; i < 10; i++) x[i] = i + 1;
for (int i = 0; i < 10; i++)
{
Console.Write("{0:d} ", x[i]);
}
Console.WriteLine();
}
}
}
実行画面
1 2 3 4 5 6 7 8 9 10
このコードを
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9;
for (int i = 0; i < 10; i++) xi = i + 1;
for (int i = 0; i < 10; i++)
{
Console.Write("{0:d} ", xi);
}
Console.WriteLine();
}
}
}
等とするとエラーします。
同じ添え字でもx0とx[0]では天と地ほど違うのです。
配列の添え字は、制御変数で制御できる!
これが大きなメリットなのです。
さて、なるべく仕事は部下にやらせて、
main()は指令役に徹するが原則ですから、
この講のこれ以降のコードは
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
f();
}
static void f()
{
int[] x = new int[10];
for (int i = 0; i < 10; i++) x[i] = i + 1;
for (int i = 0; i < 10; i++)
{
Console.Write("{0:d} ", x[i]);
}
Console.WriteLine();
}
}
}
という形にします。
変数そのものや配列そのものを実質渡すことことは第8講で扱いますので、
現時点では、上のように書き換えることは余り意味がありませんが、
なんでも社長自ら仕事をやってしまうという悪癖を付けないための
次善の策です。
第8講で配列や変数を実質渡すということを学んで、
それを実行すれば書き換えにははっきりと意義が生まれます、
ということを断っておきましょう。
実質が繰り返されている理由は、
ポインタを使っても箱そのものを渡せるわけではないからです。
箱そのものを渡せないのに仕事を依頼した人に自分専用の箱を使ってもらうという−−−
魔法にような方法をC#は持っているのです。
では問題です。
関数f()に2次元のデータ作成と表示をやらせて、
41 67 34 0 69 24 78 58 62 64
(データは毎回異なります。)
を実現して下さい。
もちろん配列を利用することが条件です。
発生させるデータは100未満のランダムな整数です。