- PR -

配列の添字が0から始まるメリットは?

投稿者投稿内容
bunnywheat
会議室デビュー日: 2004/06/10
投稿数: 5
投稿日時: 2005-03-09 00:35
オフトピですが、Pascal/Delphiの配列は数値の範囲を直接書く以外の
書き方もあって、列挙型(Booleanも列挙の一種)を使って

コード:
var
  hoge : array[Boolean] of string;
begin
  hoge[true]:='正解!';
  hoge[false]:='残念!';
end;


などともできます。

個人的には、配列より文字列型を切り出すときのインデックスのほうが
つらいです(Pascalは最初の文字が1)。C#やJavaを使うときは
時々指折り数えてしまいます
ぴんぴん
大ベテラン
会議室デビュー日: 2004/05/07
投稿数: 141
投稿日時: 2005-03-09 01:47
私は、0基準以外ほとんど考えられないけれど、いずれにしろ0基準のルーツを
探るなら、Cで止まるのじゃなくて、ALGOLまで戻るのが筋では?

ALGOLとFORTRAN(そしてCOBOL)。BASICはFORTRANの流れを受けているから1オリジン
なのだろうと。範囲を導入したPASCALは、偉かったけれどやはり効率などの面でうまく
受け入れられなかったということですね。
Elle
常連さん
会議室デビュー日: 2004/09/29
投稿数: 23
投稿日時: 2005-03-09 08:59
暦(西暦とか)や、建物の階(日本などの場合)に、"0"がないので結構面倒ですよね。
紀元前1年〜西暦紀元1年、年越しは何回?
地下1階から地上2階まで、階段いくつ?

配列の添え字が0からというのも、そのほうが楽なんではなかろうかと。
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2005-03-09 13:30
暦といえば、getMonth() で0〜11を返すのは
なんとかならなかったものか...
これこそ何のメリットもないような...
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-09 13:47
引用:

Elleさんの書き込み (2005-03-09 08:59) より:
暦(西暦とか)や、建物の階(日本などの場合)に、"0"がないので結構面倒ですよね。
紀元前1年〜西暦紀元1年、年越しは何回?
地下1階から地上2階まで、階段いくつ?

配列の添え字が0からというのも、そのほうが楽なんではなかろうかと。


昔入居前の高層マンションに工事で入る事があったんですが。
その日がエレベータの法定点検日と重なり、
地下4階(工事詰め所@駐車場の一角)から36階まで階段で
登る羽目になった事あります。
_________________
Inspired Ambitious
ISMS Assistant Auditor
杏仁豆腐
常連さん
会議室デビュー日: 2003/10/04
投稿数: 48
お住まい・勤務地: あっち・なぜか平和だったところ(T_T)
投稿日時: 2005-03-09 14:22
引用:

なか-chanさんの書き込み (2005-03-09 13:30) より:
暦といえば、getMonth() で0〜11を返すのは
なんとかならなかったものか...
これこそ何のメリットもないような...


0からなのは英語の月は January、February、March、・・・で
月を表すのに数字を使わないからだって聞いたことがあります。

表記を配列にすれば、 String strMonth[] = {"January", "February", "March", ・・・};
getMonth()の値をそのままつかえます。

String strInreki[] = {"睦月", "如月", "弥生", ・・・};
と陰暦表示にもつかえます。
って、普通使わないですね
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2005-03-09 17:12
引用:

ぴんぴんさんの書き込み (2005-03-09 01:47) より:
Cで止まるのじゃなくて、ALGOLまで戻るのが筋では?


おぉALOGLの存在を完全に忘れていました。情報処理技術者試験以来です。

いやぁ正直に言うと、何故CからALGOLの名が出てくるのか不明でした。
Adaのお父さん(お母さん?)は ALGOLだったんですね。勉強になります。

_________________
人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2005-03-09 17:20
まいど、まいど。皆様のお陰で無事、一段落出来ました。

私が問題認識を持ったのは、下記2点への認識不足の結果という事でした。

  (1)順番と個数は違う。(両者を混在させている。)
  (2)順番は0から始まる考えもある。


最初の投稿でメリットを伺ったのは失敗ですが、
「意味深いモノがあるのでは?」と思ったのは当っていました。
(私にとってですよ。)

いやはや自分の中に起こった問題認識を
解決するというのは難しいモノですね〜。
今、結果だけを振り返れば「その程度如きで..」
って感じですからね。

お陰様で、今後プログラムを教える時に
ちょっと思考深い人を演じれます。


最後に判り辛いかもしれませんので、認識不足の話を補足すると。

・順番が1から始まる場合、順番=個数となる。
・順番が0から始まる場合、順番≠個数となる。
・順番を「いろは・・・」で数えた場合、順番と個数の対応表が別途必要となる。

 つまり、順番を数字で考え1から始める習慣を持つと「順番=個数」と錯覚し易く、
 はにまるは見事にその錯覚に陥った。って事です。

_________________
人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。

スキルアップ/キャリアアップ(JOB@IT)