オリジン

オリジン: origin)とは、原点のことで、主に0オリジン1オリジンが存在する。0オリジンのものは0から数え始め、1オリジンのものは1から数え始める。なお、0オリジン1オリジン和製英語で、英語ではzero-basedone-basedなどという。

オリジンの混在

[編集]

複数のオリジンが混在する身近な例として、日時があげられる。は1オリジン(数え初めが1年1月1日)であるが、は0オリジン(0時0分0秒)である。時については0時のことを12時ということもあるため紛らわしいが、0時が午前と午後の境であるために0オリジンであるといえる。ただし、期間を表す場合はすべて0オリジンとなる。

世紀の数え方は1オリジンと考えられる。つまり、紀元1年は1世紀であり、0年や0世紀は存在しない(紀元前1年の直後は紀元1年となる)。ただし天文学的紀年法では0オリジンで年を数える。

また、年齢の数え方として満年齢数え年がある。ほかにも違いがあるが、それぞれの特徴として満年齢は0オリジンであり、数え年は1オリジンであることがあげられる。

プログラミング言語

[編集]

プログラミング言語やそのライブラリAPI類では、両方が存在する。特に言語によって配列の先頭要素のインデックスが0なのか1なのかはよく議論になる。配列では、C言語などは0オリジンであり、FORTRANLuaなどは1オリジンである。BASICのように複数回の標準化でオリジンの標準が変わったという言語もある(特に2回目の標準化ではデフォルトの1オリジンから0オリジンに変更できるようになった。そのためVisual Basicなど現代的なBASICは両対応である)。また日付を扱うライブラリを例にすると、月日を直感的な1オリジンで扱うか、算術的に便利な0オリジンで扱うか、どちらにも得失があり、さらに混在していることもあるので表示用の換算の際には注意を要する[1]

VB/VBAでのオリジンの指定

[編集]

以下はVisual Basic for Applicationsでオリジンを指定する例である。

Option Explicit
Option Base 1    ' 1オリジンに指定

Sub Foo()
    Dim bar(2) As Integer
    bar(0) = 1   ' 1オリジンの場合のみランタイムエラーが発生する
End Sub

なお、VB/VBAと異なり、Visual Basic .NET (VB.NET) にはこのOption Base機能が存在しない[2]C#のような他の.NET言語と同様、0オリジンのみをサポートする。

脚注

[編集]

出典

[編集]

参考文献

[編集]

関連項目

[編集]