vectores una tipos que programacion matriz lenguaje ejemplos cadenas arreglos arreglo array arrays programming-languages indexing

arrays - una - Lista de lenguajes de programación indexados en 1?



tipos de array (28)

Ada y Pascal.

¿Qué lenguajes de programación tienen 1 índice?

Hasta ahora tengo: ¡Acción de Algol Matlab! Pascal y Fortran?

EDITAR: Lo que quiso decir fue que los idiomas cuyas matrices de suscripciones comienzan con 1 en lugar de 0 como en C.


Aunque C está indexado por diseño 0, es posible organizar que se acceda a una matriz en C como si fuera 1 (o cualquier otro valor) indexado. No es algo que uno esperaría que hiciera un codificador normal de C a menudo, pero a veces ayuda.

Ejemplo:

#include <stdio.h> int main(){ int zero_based[10]; int* one_based; int i; one_based=zero_based-1; for (i=1;i<=10;i++) one_based[i]=i; for(i=10;i>=1;i--) printf("one_based[%d] = %d/n", i, one_based[i]); return 0; }


Básico: no solo VB, sino todas las versiones antiguas numeradas en línea de la década de 1980.

Ricardo


ColdFusion: a pesar de que es Java bajo el capó



Encontrado uno - Lua (lenguaje de programación)

Verifique la sección de arreglos que dice:

"Las matrices Lua están basadas en 1: el primer índice es 1 en lugar de 0, como lo es para muchos otros lenguajes de programación (aunque se permite un índice explícito de 0)"


Fortran comienza en 1. Lo sé porque mi padre solía programar Fortran antes de que yo naciera (tengo 33 años ahora) y realmente critica los lenguajes de programación modernos por comenzar en 0, diciendo que es antinatural, no cómo piensan los humanos, a diferencia de las matemáticas, y pronto.

Sin embargo, encuentro que las cosas que comienzan en 0 son bastante naturales; mi primer lenguaje de programación real era C y * (ptr + n) no habría funcionado tan bien si n no hubiera empezado en cero.


Fortran, Matlab, Pascal, Algol, Smalltalk y muchos otros.


JDBC (no es un lenguaje, sino una API)

String x = resultSet.getString(1); // the first column


Las cadenas en Delphi comienzan en 1.

(Las matrices estáticas deben tener un límite inferior especificado explícitamente. Las matrices dinámicas siempre comienzan en 0.)


Los índices comienzan en uno en CFML.


Lua - decepcionantemente


Mathematica y Maxima, además de otros idiomas ya mencionados.


Nadie mencionó XPath.


Puedes hacerlo en Perl

$[ = 1; # set the base array index to 1

También puede hacerlo comenzar con 42 si así lo desea. Esto también afecta los índices de cadena.

En realidad, usar esta característica es altamente desaconsejado.


RPG, incluido el moderno RPGLE


También en Ada puede definir sus índices de matriz según sea necesario:

A : array(-5..5) of Integer; -- defines an array with 11 elements B : array(-1..1, -1..1) of Float; -- defines a 3x3 matrix

Alguien podría argumentar que los rangos de índice de matriz definidos por el usuario conducirán a problemas de mantenimiento. Sin embargo, es normal escribir código Ada de una manera que no dependa de los índices de la matriz. Para este propósito, el lenguaje proporciona atributos de elementos, que se definen automáticamente para todos los tipos definidos:

A''first -- this has the value -5 A''last -- this has the value +5 A''range -- returns the range -5..+5 which can be used e.g. in for loops


También hay Smalltalk


Toda la línea de idiomas de Wirthian, incluyendo Pascal, Object Pascal, Modula-2, Modula-3, Oberon, Oberon-2 y Ada (además de algunos otros que probablemente he pasado por alto) permiten que las matrices sean indexadas desde cualquier punto que desee, incluyendo, obviamente, 1.

Erlang indexa tuplas y matrices de 1.

Creo, pero ya no soy positivo, que Algol y PL / 1 tienen ambos índices desde 1. También estoy bastante seguro de que los índices de Cobol van desde 1.

Básicamente, la mayoría de los lenguajes de programación de alto nivel antes de C indexados desde 1 (siendo los lenguajes ensamblados una excepción notable por razones obvias -y la razón por la que C indexa desde 0) y muchos lenguajes ajenos a la hegemonía dominada por C todavía lo hacen hasta nuestros días.


Una lista bastante grande de idiomas se encuentra en Wikipedia en Comparación de lenguajes de programación (matriz) en la tabla "Lista de referencias cruzadas del sistema de matrices " (columna de índice base predeterminada)

This tiene una buena discusión de 1- vs 0 indexados y suscripciones en general

Para citar del blog:

EWD831 por EW Dijkstra, 1982.

Cuando se trata de una secuencia de longitud N, cuyos elementos deseamos distinguir por subíndice, la siguiente pregunta irritante es qué valor de subíndice asignar a su elemento inicial. La adhesión a la convención a) cede, al comenzar con el subíndice 1, el subíndice rango 1 ≤ i <N + 1; empezando con 0, sin embargo, da el rango más agradable 0 ≤ i <N. Así que permitamos que nuestros ordinales comiencen en cero: el ordinal de un elemento (subíndice) es igual al número de elementos que lo preceden en la secuencia. Y la moraleja de la historia es que es mejor que consideremos -después de todos esos siglos! - cero como el número más natural.

Observación :: Muchos lenguajes de programación han sido diseñados sin la debida atención a este detalle. En los subscripts de FORTRAN siempre comienzan en 1; en ALGOL 60 y en PASCAL, se ha adoptado la convención c); el SASL más reciente ha recurrido a la convención FORTRAN: una secuencia en SASL es al mismo tiempo una función en los enteros positivos. ¡Lástima! (Fin de la observación)


Una lista se puede encontrar en wikipedia .

ALGOL 68 APL AWK CFML COBOL Fortran FoxPro Julia Lua Mathematica MATLAB PL/I RPG Sass Smalltalk Wolfram Language XPath/XQuery


VB Classic, al menos a través de

Option Base 1


Veo que el conocimiento de Fortran aquí todavía está en la versión ''66.

Fortran tiene variables tanto en el límite inferior como superior de una matriz.

Es decir, si declaras una matriz como:

real, dimension (90) :: x

entonces 1 será el límite inferior (por defecto).

Si lo declaras así

real, dimension(0,89) :: x

luego, sin embargo, tendrá un límite inferior de 0.

Si, por otro lado, lo declaras como

real, allocatable :: x(:,:)

entonces puedes asignarlo a lo que quieras. Por ejemplo

allocate(x(0:np,0:np))

significa que la matriz tendrá los elementos

x(0, 0), x(0, 1), x(0, 2 .... np) x(1, 0), x(1, 1), ... . . . x(np, 0) ...

También hay algunas combinaciones más interesantes posibles:

real, dimension(:, :, 0:) :: d real, dimension(9, 0:99, -99:99) :: iii

que se dejan como tarea para el lector interesado :)

Estos son solo los que recordé en la parte superior de mi cabeza. Como una de las principales fortalezas de Fortran son las capacidades de manejo de matrices, está claro que hay muchas otras entradas y salidas que no se mencionan aquí.


Visual FoxPro, FoxPro y Clipper utilizan matrices donde el elemento 1 es el primer elemento de una matriz ... Supongo que eso es lo que quiere decir con 1 indexado.


informix, además de otros idiomas ya mencionados.


PL/SQL . Un resultado de esto es cuando se usan lenguajes que comienzan desde 0 e interactúan con Oracle, usted necesita manejar las conversiones de 0-1 para acceder a la matriz por índice. En la práctica, si utiliza un constructo como foreach sobre filas o columnas de acceso por nombre, no es un gran problema, pero es posible que desee la columna más a la izquierda, por ejemplo, que será la columna 1.


FoxPro utilizó matrices comenzando en el índice 1.