エンジニアもどきの雑記

メモ帳です。きっと。macアプリ配信windowsでもできるようになるまで絶対にメイン機にしないマン。特筆しない限り環境は【win10home,i5-7200u,8g,64bit,巨乳が好き】

【C#】UnityのためにC#を一から学ぶpart4(前編)【一次元配列、for文】


前回 dddpga1.hateblo.jp


絵が下手な私です。
まだまだ序盤。これから追い上げようね。

さて、今回までやっぱりUnity起動しないことにした。
配列はやっぱりやらないとダメだと思った。

なので書くよ。

いや、ほんと。仕事でc#触らないから、
少しさぼると全く書かなくなる。なのでこうやって書いて
復習すると忘れにくくなるからよい。多分。


今回は配列。
前々回くらいとその前とで変数はやったね。

int x;
x = 100;


ってやつ。
あれの値がたくさんあるバージョン、というべきか。
まぁ、見てみましょう。

int[] arr = new int[5];


これが、配列の宣言。
宣言、ね。

int x;

前にやったこれ。

わかりづらいので少し補足。

int[] arr = new int[5];
型[] 配列名 = new 型[配列の要素数(配列の数)];


です。[]がある。これ最初の頃、変数名の後につけるっていう間違えをかなり犯した。
phpの配列は簡単なんだもの……というかphpは配列依存がすごすぎてライブラリとか入れないと……
jsは配列とオブジェクトがごっちゃになる……追加の仕方、アクセスの仕方。そろそろ落ち着いてくれ……
c系統とかjavaをやってた人がこんな記事を読んでいるとは思えないからしっかり説明しよう。
それらをやってた人はここら辺なんか余裕だからね。

とりあえず宣言の形は覚える。
こんな記事だったとしても、絶対読むだけより書くべし。
CSharpeLearnはこのためのプロジェクトなのだ。書くべし。


配列の要素数、とありますが、配列の数は決まってます。
増やしたり減らしたりってのは基本的なところではできません。
これがphpとかの高級言語から入った人がお、ってなるところ。
そっちでいう配列はこっちの配列よりListに近いし、連想配列はDictionaryが近い。
これはおいおい。
やるかな。どうかな。


例えば、

1 ,2, 3, 4, 5, 6, 7, 8, 9, 10

という1~10までの数字があるとします。
これが、↑で宣言した配列arrにまとめて入ります。
入れ方は様々。
はいドーン

int[] arr = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //最初に全部入れちゃう。

int[] arr = new int[10];
arr[5] = 6; //宣言は先にしてあって、特定の位置に6を入れる。


↑の最下行の通りで、配列にアクセスするには、配列名[インデクッス]となります。index、です。
ここが最初のきも。なのか。どの言語でもまずこれは聞くと思う。

配列のindexは、↑だと、

arr[0]; = 1
arr[1]; = 2
arr[2]; = 3
arr[3]; = 4
arr[4]; = 5
arr[5]; = 6
arr[6]; = 7
arr[7]; = 8
arr[8]; = 9
arr[9]; = 10

になります。
0から始まって、数字通りです。0から始まる、ってとこが重要。
最初の最初は注意してないとミスります。
arr[0] = 1、arr[1] = 2なのです。これが最初の最初は間違えることもあるかもしれない。


軽く言っておくと、配列名arrは前に少し話したスタックメモリに展開され、その先の値は【参照】されるので、
ヒープメモリに展開されます。
が、これは前に語った通りで今ここでは詳しくは語らない。おまけにメモリについて記載するか、この配列のおまけにこの部分だけ書くかも。


で、なんとなくわかったかな。配列。
値をまとめて入れておくことができる変数、みたいに最初は思っていていい気がする。俺はそう思ってる。俺はまだよくわかってないし。


さて、一次元だけだけど配列がわかったので、回します。回すんです。
値が沢山入っているから
回して取得するのがよくあるんです。
phperは特にそうだよね
自虐


まずは、配列関係ないけどfor文の見本

for (int i = 0; i < 10; i++) {
    Console.WriteLine("私は" + i + "歳です。嘘です。");
}


さて、まだまだ基礎だよ。しかも序盤。
いずれ書くけど、C#ってLINQとかインデクサとか使ってこそ面白いと思うの。
でもそれも基礎だし、今やってるのは序盤も序盤なの。多分。


これを実行すると、 f:id:dddpga1:20171127234836p:plain
こうなります。
きもは【i】です。

for文では、forの後の()の中でカウンターを自分で設定して、それだけ処理を繰り返します。
簡単に解説。
()の中を見てみましょう。

まずは【int i = 0】。これは見たまんま。iというint型の変数に0を代入しています。なんかiが使われます。ネストとかするとjが使われます。別に他の変数でも動きますが基本iです。
これが、カウンター変数の宣言です。
【i】をカウンターとして利用します。

そして次に
【i < 10】これもわかるね。iが10未満。です。この前やったばっかりだからね。
わからなかったら前回を読み直そう。

で、最後に【i++】iのインクリメント。これもやったね。iに1をプラスする。
わからなかったら前回をば

一つ一つ読み解いていくとわかりやすいね。
で、まとめると、
【iが10未満の場合、for文を実行します。実行する度にiに+1します。】
です。

実行する、っていうのは{}の中です。

つまり、
まずint iを宣言。

iは0です。

10未満なのでfor文を実行します。

Console.WriteLine("私は" + i + "歳です。嘘です"); // iは0;

for文が終わったのでi++します。
i = 1になりました。

iが10未満なので実行します


の繰り返しです。iが10になったら抜けます。
さて、説明は以上。とりあえず書くべし。forは使うよ。きっと。
だから書いて書いて覚える。数字変えたり、表示させるものを変えたり。


これを配列とかif文とかと組み合わせてみると、以下。

int[] arr = new int[5] { 1, 2, 3, 4, 5 };

for (int i = 0; i < 5; i++)
{
    if (arr[i] == 4)
    {
        Console.WriteLine("配列の4番目の要素にアクセスしてます。インデックスは" + i + "だよね");
    }
}


f:id:dddpga1:20171128000418p:plain
となります。
ここは解説しません。iの中身を考えてみましょう。


さて、しまった。
日付が変わっている。
なのでここまで。

配列は三回くらいになるかな……。


Unityはpart.5までまってね。全裸でね。

次回 dddpga1.hateblo.jp