Esta comparación de lenguajes de programación (array) compara las características de las estructuras de datos de array o el procesamiento de matrices para varios lenguajes de programación de computadoras .
Sintaxis
Dimensiones de la matriz
La siguiente lista contiene ejemplos de sintaxis sobre cómo determinar las dimensiones (índice del primer elemento, del último elemento o el tamaño en elementos).
Algunos lenguajes indexan desde cero. Otros indexan desde uno. Algunos no tienen tal restricción, o incluso permiten la indexación por cualquier tipo enumerado, no solo enteros.
Indexación
La siguiente lista contiene ejemplos de sintaxis sobre cómo acceder a un único elemento de una matriz.
Rebanar
La siguiente lista contiene ejemplos de sintaxis sobre cómo se puede acceder a un rango de elementos de una matriz.
En la siguiente tabla:
- primero : el índice del primer elemento en la porción
- último : el índice del último elemento en la porción
- fin – uno más que el índice del último elemento en la porción
- len – la longitud de la porción (= extremo - inicio)
- paso : el número de elementos de la matriz en cada uno (por defecto 1)
Lista de referencias cruzadas del sistema de matrices
Operaciones de matrices vectorizadas
Algunos lenguajes compilados como Ada y Fortran , y algunos lenguajes de scripting como IDL , MATLAB y S-Lang , tienen soporte nativo para operaciones vectorizadas en matrices. Por ejemplo, para realizar una suma elemento a elemento de dos matrices, a y b , para producir una tercera c , solo es necesario escribir
c = a + b
Además de admitir operaciones aritméticas y relacionales vectorizadas, estos lenguajes también vectorizan funciones matemáticas comunes como el seno. Por ejemplo, si x es una matriz, entonces
y = sen (x)
dará como resultado una matriz y cuyos elementos son el seno de los elementos correspondientes de la matriz x .
También se admiten operaciones de índice vectorizadas. Por ejemplo,
par = x ( 2 :: 2 ); impar = x ( :: 2 );es como se usaría Fortran para crear matrices a partir de las entradas pares e impares de una matriz. Otro uso común de los índices vectorizados es una operación de filtrado. Considere una operación de recorte de una onda sinusoidal donde las amplitudes mayores que 0,5 se deben establecer en 0,5. Usando S-Lang , esto se puede hacer mediante
y = sen(x); y[donde(abs(y)>0.5)] = 0.5;
Operaciones matemáticas con matrices
Referencias
- 1 2 "Especificación del lenguaje ECMAScript® 2025" .
- ↑ "Programación en Lua : 11.1" .
- 1 2 "Tutorial de Nim (Parte I)" .
- 1 2 3 4 5 XPath/XQuery tiene dos tipos de matrices. Secuencias (1,2,3) que no pueden anidarse y en la versión 3.1 de XPath/XQuery matrices array { 1,2,3 } o [1,2,3] que sí pueden.
- 1 2 3 4 5 6 7 El índice puede ser un número negativo, que indica el número correspondiente de lugares antes del final de la matriz.
- ↑ "Eiffeldoc : ARRAY" .
- 1 2 3 4 5 6 También se admiten y definen de forma similar las secciones para matrices multidimensionales.
- 1 2 3 4 También se admitenrebanadas de este tipo
first:last:step - 1 2 3 4 último o fin puede ser un número negativo, lo que indica que se debe detener en el número correspondiente de lugares antes del final de la matriz.
- 1 2 3 De manera más general, para matrices unidimensionales, Perl y S-Lang permiten segmentos de la forma, dondepuede ser un rango como el mencionado en la nota al pie 2 o una lista explícita de índices, por ejemplo, '', o una combinación de ambos, por ejemplo,.
array[indices]indices[0,9,3,4]A[[[0:3]],7,9,[11:2:-3]]] - ↑ Característica propuesta para C# 8.0 (a fecha de 29 de agosto de 2019)
- ↑ "Rangos - Propuestas de lenguaje para C# 8.0" . Microsoft Docs . Microsoft . Consultado el 29 de agosto de 2019 .
- ↑ "Manual de referencia de Lua 5.3" . www.lua.org . Consultado el 2 de abril de 2022 .
- ↑ El tipo de índice puede ser un tipo entero , un tipo enumerado o un tipo de carácter elegido libremente . Para matrices con tipos de índice no compactos, consulte: Matriz asociativa
- 1 2 El índice base predeterminado es el valor más bajo del tipo de índice utilizado.
- 1 2 3 4 5 6 7 8 9 10 11 El tamaño solo se puede elegir en la inicialización, después de lo cual queda fijo.
- 1 2 3 4 5 Esta lista compara estrictamente las características del lenguaje. En todos los lenguajes (incluso en lenguaje ensamblador ) es posible proporcionar un manejo mejorado de matrices mediante bibliotecas adicionales. Este lenguaje tiene un manejo mejorado de matrices como parte de su biblioteca estándar.
- ↑ ALGOL 68 Los arreglos deben indexarse (y segmentarse) por tipo INT . Sin embargo, se podría usar una función hash para convertir otros tipos a INT . Por ejemplo: nombre [ hash("cadena") ]
- ↑ La base de indexación puede ser 0 o 1 según la variable del sistema ⎕IO . Este valor puede aplicarse a todo el "espacio de trabajo" o localizarse en una función definida por el usuario o en una única función primitiva mediante el uso del operador Variant ( ⍠ ).
- 1 2 Debido a que C no verifica los límites de los índices, se puede definir un puntero al interior de cualquier matriz que actuará simbólicamente como una pseudomatriz que admite índices negativos o cualquier origen de índice entero.
- 1 2 C99 permite matrices de tamaño variable; sin embargo, casi no hay compiladores disponibles que admitan esta nueva característica.
- 1 2 3 4 5 El tamaño solo se puede elegir al inicializar cuando la memoria se asigna en el montón, a diferencia de cuando se asigna en la pila. Esta aclaración no es necesaria para un lenguaje que siempre asigna arreglos en el montón.
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Permite matrices de matrices que se pueden usar para emular la mayoría, pero no todos, los aspectos de las matrices multidimensionales
- 1 2 3 La base se puede cambiar al inicializar con System.Array.CreateInstance (que devuelve System.Array ), pero no al usar la sintaxis del lenguaje. Los arreglos con índices base distintos de cero no son del mismo tipo que aquellos con índices base cero y no se pueden manipular usando la sintaxis del lenguaje (en su lugar, se deben usar los métodos GetValue y SetValue ) ni convertirlos a un tipo específico ( T[] en C# o T() en VB.NET), lo que evita que el código falle al asumir índices base de cero.
- 1 2 Permite crear matrices de tamaño fijo en código "no seguro", lo que permite una mayor interoperabilidad con otros lenguajes.
- ↑ Los arrays de COBOL pueden indexarse con tipos "INDEX", distintos de los tipos enteros.
- ↑ Si bien COBOL solo tiene matrices de matrices, se puede acceder a los elementos de la matriz con una sintaxis similar a la de las matrices multidimensionales, donde el lenguaje hace coincidir automáticamente los índices con las matrices que contienen el elemento al que se hace referencia.
- ↑ COBOL proporciona una forma de especificar que el tamaño utilizable de una matriz es variable, pero este nunca puede ser mayor que el tamaño máximo declarado, que también es el tamaño asignado.
- ↑ La mayoría de las implementaciones de Common Lisp permiten deshabilitar selectivamente la comprobación.
- ↑ Arreglos asociativos - Lenguaje de programación D
- 1 2 El comportamiento se puede ajustar mediante parámetros del compilador. Al igual que en DMD 1.0, los límites se comprueban en modo de depuración y se descomprimen en modo de lanzamiento para mayor eficiencia.
- ↑ FreeBASIC admite tanto matrices de longitud variable como de longitud fija. Las matrices declaradas sin rango de índice se crean como matrices de longitud variable, mientras que las matrices con un rango declarado se crean como matrices de longitud fija.
- ↑ Casi todas las implementaciones de Fortran ofrecen opciones de comprobación de límites mediante parámetros del compilador. Sin embargo, por defecto, la comprobación de límites suele estar desactivada por motivos de eficiencia.
- ↑ Si bien el tipo Array de Golang no tiene un tamaño dinámico, el tipo de datos Slice sí lo tiene y es mucho más común en el uso que los arrays.
- ↑ Los arrays de Haskell (Data.Array) permiten usar cualquier tipo que sea una instancia de Ix como tipo de índice. Por lo tanto, se puede definir un tipo personalizado y usarlo como tipo de índice siempre que sea una instancia de Ix. Además, las tuplas de tipos Ix también son tipos Ix; esto se usa comúnmente para implementar arrays multidimensionales.
- 1 2 3 4 En estos lenguajes, se puede acceder o escribir en un índice de matriz mayor o igual a la longitud de la matriz, y esta crecerá implícitamente hasta alcanzar ese tamaño. Esto puede parecer, al principio, que no se comprueban los límites; sin embargo, sí se comprueban para decidir si se amplía la matriz, y no se produce un acceso a memoria inseguro como en C.
- ↑ Al especificar un índice base, se pueden crear arreglos con una base arbitraria. Sin embargo, por defecto, el operador de longitud de Lua no considera el índice base del arreglo al calcular su longitud. Este comportamiento se puede modificar mediante metamétodos.
- ↑ Al menos 2 dimensiones (los números escalares son matrices de 1×1, los vectores son matrices de 1×n o n×1).
- ↑ "Guía del usuario del compilador Nim" .
- ↑ "Vectorización: operación lógica vectorial al estilo R en Nim" .
- ↑ Muchas implementaciones ( Turbo Pascal , Object Pascal ( Delphi ), Free Pascal ) permiten cambiar el comportamiento mediante parámetros del compilador y directivas en línea.
- ↑ Varía según la implementación. Las implementaciones más recientes ( Free Pascal , Object Pascal ( Delphi )) permiten arreglos dinámicos basados en el montón.
- ↑ Los tipos de datos de matriz estándar de Perl no admiten operaciones vectorizadas tal como se definen aquí. Sin embargo, laextensión Perl Data Language agrega objetos de matriz con esta capacidad.
- 1 2 3 Los "arrays" de PHP son arrays asociativos. Se pueden usar enteros y cadenas como claves (índices); también se pueden usar números de coma flotante como clave, pero se truncan a enteros. En realidad no hay un "índice base" ni "límites".
- ↑ El tamaño se puede elegir cuando se declara el array o cuando se asigna, después de lo cual queda fijo.
- ↑ El tipo de matrizestándar de Python
list, , no admite operaciones vectorizadas como se definen aquí. Sin embargo, la extensión numpy agrega objetos de matriz con esta capacidad. - ↑ La clase Array es de tamaño fijo, pero OrderedCollection es dinámica.
- 1 2 Microsoft QBASIC, QuickBASIC , Visual Basic y VBA tenían/tienen la capacidad de especificar Option Base 1 , lo que hacía que todas las matrices en el módulo comenzaran por defecto en 1 en lugar de 0. La compatibilidad con Option Base se eliminó gradualmente en Visual Basic (.NET) . En varias implementaciones de Microsoft BASIC, las matrices se pueden DIMENSIONAR usando para especificar los valores de índice mínimo y máximo (por ejemplo, DIM MyArray(2 to 50) AS STRING tendría el primer índice en 2 en lugar del predeterminado).
- ↑ Características numéricas de Ch
- Matrices
- Comparación de lenguajes de programación