【Age of Networks(AoN-DB)え~ちゃんぶろぐねっとわ~く】【講座】第6回:プログラムにも役割分担を!【JavaScript】

東方二次ゲームメインからオリジナル・企業系や漫画へ。TRPGやサバゲのアナログライクも

Age of Networks(AoN-DB)え~ちゃんぶろぐねっとわ~く

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【講座】第6回:プログラムにも役割分担を!【JavaScript】

ここまで、概要ばっかりでつまらなかったかもです。
今回から数字ばっかり弄る作業になるが、大丈夫か?

A.(皆さまの心の声をどうぞ)


さて、今回は配列を行きましょうか。
少し聞き覚えのある方は「なんで今から配列?」と思われると思います。
先にifだとか、forだとかと言った内容であって然るべきですが、先にそっちに苦手意識を持っちゃうと、配列って簡単な筈なのに難しく聞こえちゃうからなんですね。
(習熟には個人差があります)

また、JavaScriptに於ける配列はちょっとややこしいですので、そちらも合わせてご紹介することで、今日の講座とします。
いや、もう限りなく講義に近いですが。

では、配列の概念をば。
数字をより多く扱っていると、変数がやたら増えすぎたり、増えた変数に名前を付けるのが億劫になったりしませんか?
多くても5~9ぐらいならまだしも、用途が似たり寄ったりの変数などは束ねてしまいたくなりませんか?

そんな時に使うのが配列です。
配列は、一つ名前を決めてやれば、その名前を使いまわしに出来るというメリットがあります。
これにより、「そう言えば、あの変数の名前なんだっけ?」とか、「どの変数にこの値を格納したのか分からなくなった」という問題を解消しやすくなります。
基本的に、そんなもんコメントつければ良いじゃん、と思われるのもご尤もですが、案外忘れがちなものです。
特に、小規模なプログラムだと、あまりコメントを付ける必要性を感じないかも知れません。

では、折角なので、コメントと大量の変数を使った管理と、配列を使った管理の二種類を比較しようと思います。
今回からは関数しか書きませんので、formタグの引数にはご注意ください。

まずは基礎から行きましょう。
配列の宣言の仕方です。

function hairetsu()
{
var hairetsu= new Array();
}

ここに、配列の値を指定すると、
funtcion hairetsu()
{
hairetsu[0]=100;
hairetsu[1]=250;

hairetsu[100]=-34;
}

これを変数で指定すると、こんな感じになります。
function hairetsu()
{
hairetsu1=100;
hairetsu2=250;

hairetsu100=-34;
}

数字を一つ一つ指定するとあんまり差がありません。
但し、変数の場合はこの間に文字列を入れても、実はあんまり問題じゃなかったりします。
それは、型宣言(数値を代入する、文字を代入すると予めプログラム的に言っておくこと)に融通が利くんですよね。
じゃあ、変数の方が良いんじゃない?と思われる事だと思います。


ぶっちゃけると、変数の方が使いやすいです。
配列はあくまで、多くのデータを集積するものなので、変数と比べるとどうしても使い勝手は悪くなってしまいます。
じゃあ、どうやって配列を使うのか。

例えば、Aというint(整数)型変数を別に用意していたとします。
Aは色々な場所で値が変わるものとして、その時の値を保存しておきたい時、変数より配列の方が指定しやすいというメリットがあります。
以下の例をご覧下さい。

function hairetsu()
{
var hairetsu=new Array;
int A=0;
hairetsu[A]=50;
A=5;
hairetsu[A]=100;
}

この時、hairetsu[0]に50が、hairetsu[5]に100が入ります。
では、これを変数でやってみましょう。

function hairetsu()
{
var hairetsu;
int A=0;
hairetsuA=50;
A=5;
hairetsuA=100;
}

さて、hairetsu0とhairetsu5には何が入っているでしょう?


答えとしては、hairetsu0とかhairetsu5って何?となります。
私にも分かりません。
では、50と100はどこに行ってしまったのでしょうか?

変数部分だけに注目して、代入されている部分をご覧いただきますと分かりやすいかと思います。
変数の代入のルールでは、hairetsuAという変数を用意して、そこに50と100を代入する命令になってます。
つまり、hairetsuAに代入した50を上書きして100しか残らないようになってしまっています。

問題はこれが何を意味するか、という事です。
今回はAの値が分かっているので
hairetsu0=50;
hairetsu5=100;
と手動で入力すれば良いんですが、Aの場所に値を代入したい場合、変数ではhairetsuAには代入されますが、hairetsu0やhairetsu5には【A】が使えないことです。

どうしてもAを使いたい場合は、以下のようにすべきでしょう。
A=0;
hairetsu0=A;
A=5;
hairetsu5=A;

これなら、確かにhairetsu0とhairetsu5を作った意味はありますが、今回に本当に代入したい値は50、100なので、素直に
hairetsu0=50;
hairetsu5=100;
とした方がまだマシでしょう。


変数と配列の違いは大丈夫でしょうか?
変数の使い方、配列の使い方の違いはきちんと把握しておかないと、変数でやれば良いのに配列でやってしまったり、配列でやれば楽なのに変数で一つずつ設定する事になりかねません。
その結果、プログラムが無駄に長くなってしまい、分かりにくくなります。


では、配列と変数を明確に使い分ける方法を次回にご紹介しましょう。


【当日更新まで】

追記



最後にもう一度、変数配列を確認しておきましょう。
【共通部分】
【宣言】のAと、【宣言A】は別のものである。
これは変数配列でも変わらない。

変数
型宣言を自由に出来るので、文字でも数値でも保持できる。
間接参照(変数A=変数B=変数C)が出来ない。
なお、これは直接参照である(変数A=変数C)


配列
型宣言をすると、その形式にとらわれる(数値型にすると文字が入らない、逆も然り)ため、データの管理が容易になる。
間接参照(配列A[変数B]=変数C)が出来る。(配列Aの場所を変数Bが決めている)

※注意!
二次配列になる場合がある(配列A[変数B][変数C])
(後日解説)
この場合、左辺=右辺の図ではないので、代入ではない!


!重要!
配列[A]と配列Aは別物である。
配列[A]は配列として正しい使い方であるが、配列Aは実は変数である。

(具体例)
名前A=100;
この時、実は変数の【名前A】に100を代入する処理をしている。
なので、この配列の【名前A】は存在しない。
配列にする場合、【名前[A]】にするべきである。
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。