アプリ版:「スタンプのみでお礼する」機能のリリースについて

vbaを後輩に教えているのですが
「なぜ配列は0から始まるのですか?」と聞かれ困って
「そういうものだから」としか答えられなかったのですが
なぜ配列は0から始まるのでしょうか?

先輩として頑張りたいので教えていただけますか。
よろしくお願い致します。

A 回答 (6件)

10代といえば10~19、20代なら20~29なのですから、0代は0~9で0から始まるのは自然です。

って言い方ではダメでしょうか。

ちなみに、プログラムでループや配列をゴソゴソさわっていると、人間的な1始まりより0始まりの考え方の方が楽なことが多いです。
    • good
    • 1
この回答へのお礼

良いですね!ありがとうございました。

お礼日時:2011/12/05 23:38

VBAということはExcel使っているんですよね?


でしたら、そのマスを使うのが直感的にわかるかもしれません。

コンピュータで配列を扱う方法はいろいろありますが、一般的なのは「連続した領域」です。
例えば、セルA5から順番にA6,A7...と続くものを「配列A」とすると、コンピュータは「配列AはA5から始まる」と記憶します。

ではここで 配列Aの「3つ目」は?と聞かれると
1つ目: A5(5=5+1-1=5+0)
2つ目: A6(6=5+2-1=5+1)
3つ目: A7(7=5+3-1=5+2)
となります。
この数字のところの計算で「1を引く」をどこでやるか、です。
0からやると、コンピュータは楽です。
    • good
    • 0
この回答へのお礼

Excelもアクセスも使っています。
ありがとうございました。

お礼日時:2011/12/04 22:44

Option Baseで指定できる。


http://officetanaka.net/excel/vba/statement/Opti … など
だから選択できるのじゃない。
ーー
VB.NET系ではこの指定は出来なくなって、0から始まるようだ。
学者系の人が使う言語(Cの系統などー>Java)には0が多いのかなという個人的推測をしている。
http://tricky-code.net/nicecode/code45onebase.php
>0-baseの配列といいます、というそうです。
Javaについて
http://blog.livedoor.jp/neuehiiro/archives/50252 …
正?の数の始まりを0からするか1からするかと、関係するのかもしれない。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/12/04 22:43

こんにちは。



別にどんな言語を使っているかは関係ないですよ。

配列の各要素を先頭からどれだけ離れているか
※先頭からのオフセットとして考えると、
先頭の要素は、オフセット0、その次はオフセット1と
いった考え方だから、0で始まります。

配列の各要素を先頭からただ単に数えていくと
先頭の要素は、1個目、2個目、3個目と
いった考え方だから、1で始まります。

単純です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/12/04 19:55

0から数え始めることを0オリジン、


1からなら1オリジン、などと言ったりします。

配列の先頭の要素が1から始まる言語も結構あるようです。
歴史を辿ると、最古のプログラミング言語FortranやCOBOLでは1オリジンを使っているようです。
Basicも元々は1オリジンだったようです。
比較的新しい言語では、Luaが1オリジンを採用しています。

ではなんで0オリジンが主流になったのかは、推測になりますがおそらくC言語の影響です。
C言語は、配列のアクセス=ポインタ演算なので、0オリジンの方が都合が良かったのでしょう。
もし、C言語が1オリジンだったのなら、先頭の要素へのアクセスは
ary[1];
*(ary + 0);
と、ポインタと配列で異なってしまいます。

で、そんなC言語が爆発的に普及し、スタンダードになったため、0オリジンを多くのプログラミング言語が採用するようになったのではないでしょうか。
    • good
    • 0
この回答へのお礼

C言語の影響なのですか。そのように説明します。ありがとうございました。

お礼日時:2011/12/04 09:09

配列の添え字(インデックス) のことですか。



別に0からでなくてもいくつでもいいのです。だだ、何も設定しなければ既定で0になっているだけです。Option Base 1で既定を1に変更できますが。

Dim、Private、Public、ReDim、Static などの宣言で、toを使って配列を設定すればいくつからにもなります。
Dim A(-5 to 100)とすれば、始まり(配列の最小添え字)は-5になります。

何もしないでただ、Dim A(100)とすれば、最小添え字は0にするということだけです。
    • good
    • 0
この回答へのお礼

そのように説明します。ありがとうございました。

お礼日時:2011/12/04 01:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!