|
You can in Ada, if I remember rightly, or with a negative number, but though it seems clever when you do it, the code is unmaintainable. But that goes for Ada most of the time anyway.
------------------<;,><-------------------
|
|
|
|
|
CIDev wrote: Still I vote for array indexes starting at zero.
Surely zero is neither positive or negative.
|
|
|
|
|
Why stop with positive. Pascal let you do something like this:
Example = Array[-5..5] of Integer;
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|
Ahhhhhh. I still remember my love affair with (Turbo) Pascal. What a beauty.
|
|
|
|
|
There is only one "old school" language and it ain't C or Basic
|
|
|
|
|
Nemanja Trifunovic wrote: There is only one "old school" language
Yeah! COBOL...
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
OriginalGriff wrote: COBOL
COBOL is a recent fad. FORTRAN is the first real programming language.
|
|
|
|
|
Nemanja Trifunovic wrote: FORTRAN is the first real programming language.
Closely followed by Lisp.
/ravi
|
|
|
|
|
Ravi Bhavnani wrote: Closely followed by Lisp.
t
Strictly speaking, boolean literals didn't exist in original LISP
|
|
|
|
|
Ravi Bhavnani wrote: Closely followed by Lisp
What about assembler?
That's the 'real' programming language. Other are artificial; everything in them is a convention, so it is starting from 0 or 1, or ever from 2
|
|
|
|
|
Nemanja Trifunovic wrote: There is only one "old school" language and it ain't C or Basic
PL1
|
|
|
|
|
Let me whip out my punch cards here...
|
|
|
|
|
True old school programmers know it ain't Fortran 77 either.
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|
|
It should start at 3.1415926535 or Pi
luisnike19
|
|
|
|
|
luisnike19 wrote: It should start at 3.1415926535 or Pi
That's irrational
|
|
|
|
|
Not enough precision to be practical.
|
|
|
|
|
It should be consistent across programming languages, regardless of whether they are low or high level, otherwise it'll be a recipe for confusion amongst programmers who use a variety of languages. The underlying memory allocation is zero-based, so it makes sense to leave it that way.
|
|
|
|
|
Which of course is nought. Except on Thursdays.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
I wouldn't let CG touch my Abacus!
When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is.
|
|
|
|
|
You start at 0 if you measure the distance from an origin, you start at one if you are enumerating elements and you want to count them.
Whether you are in one situation or the other does not depend onthe concept of "array" but on the semantic of the context the array is used.
think to
int x[3..15:2];
having x[3], x[5], x[7], ... x[15].
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
Nasty: better to use a dictionary instead.
If nothing else, it means you have to look back at the array definition every time you need to check if an element exists.
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
This used to be possible in the "good" old days. You could use UBound and LBound to find the array boundaries. You still can, but the lower boundary will of course always be 0.
I totally agree with you that this is nasty, and it's a good thing you can't do it anymore. Saves you a whole lot of invalid index exceptions.
I'm not heavy - I'm KIDNAP RESISTANT... ----- Don't tell my folks I'm a computer programmer - They think I'm a piano player in a cat house... ----- Da mihi sis crustum Etruscum cum omnibus in eo! ----- Everybody is ignorant, only on different subjects - Will Rogers, September 7, 1924
|
|
|
|
|
OriginalGriff wrote: better to use a dictionary instead.
Hey ... we are talking about "high level languages" not those "evoluted assemblers" like C and C++!!
y=v[x] is an expression extracting a value for y corresponding to a discrete value of x using the v table.
The data structure shouldn't care, and should be up to the compiler to decide to use a plain array, and array with some index elaboration, a dictionary (or <map> in C++ lexicon), a "sparse matrix", a skip-list or whatever better suits the way data are stored, walked and accessed.
Otherwise, whats the meaning of "high level" ??
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
Emilio Garavaglia wrote: you start at one if you are enumerating elements and you want to count them.
Really, lets try that...
int count = 1;
int [] a = { 1, 2, 3 };
foreach (var element in a)
count++;
As you can see, 0 maybe a better choice for start value here. You only raise to one when you pass the first element.
|
|
|
|
|
Nope.
I just was meaning another thing: I give you a box of pencils, and i want to know how many of them Are in the box.
How do you country them? 01234.... Or 12345.... ??
Are you the first child of your parents, or just the zeroth?
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|