Array

Tipos de datos de matriz en Delphi

woman looking at laptop next to windows in office.

Las matrices nos permiten referirnos a una serie de variables con el mismo nombre y usar un número (un índice) para llamar a elementos individuales en esa serie. Las matrices tienen límites superior e inferior y amp; amp; nbsp; y los elementos de la matriz son contiguos dentro de esos límites.

Los elementos de la matriz son valores que son todos del mismo tipo (cadena, entero, registro, objeto personalizado).

En Delphi, hay dos tipos de matrices: una matriz de tamaño fijo que siempre permanece del mismo tamaño: a & amp; amp; nbsp; matriz estática, y una matriz dinámica cuyo tamaño puede cambiar en tiempo de ejecución.

Video destacado

Matriz estática

Supongamos que estamos escribiendo un programa que permite al usuario ingresar algunos valores (p. Ej. el número de citas) al comienzo de cada día. Elegiríamos almacenar la información en una lista. Podríamos llamar a esta lista Nombramientos , y cada número podría almacenarse como Nombramientos [1], Nombramientos [2], etc.

Para usar la lista, primero debemos declararla. Por ejemplo:

& lt; pre & gt; var Nombramientos: array [0..6] de entero; & lt; / pre & gt ;

declara una variable llamada Nombramientos que contiene una matriz unidimensional (vector) de 7 valores enteros. Dada esta declaración, Nombramientos [3] denota el cuarto valor entero en Nombramientos. El número entre paréntesis se llama índice.

Si creamos una matriz estática pero don & amp; # x2019; t asignamos valores a todos sus elementos, los elementos no utilizados contienen datos aleatorios; son como variables no inicializadas. El siguiente código se puede usar para establecer todos los elementos en la matriz de Nombramientos en 0.

& lt; pre & gt; para k: = 0 a 6 do Nombramientos [k]: = 0; & lt; / pre & gt ;

A veces necesitamos realizar un seguimiento de la información relacionada en una matriz. Por ejemplo, para realizar un seguimiento de cada píxel en la pantalla de su computadora, debe consultar sus coordenadas X e Y utilizando una matriz multidimensional para almacenar los valores.

Con Delphi, podemos declarar matrices de múltiples dimensiones. Por ejemplo, la siguiente instrucción declara una matriz bidimensional de 7 por 24:

& lt; pre & gt; var DayHour: array [1..7, 1..24] de Real; & lt; / pre & gt ;

Para calcular el número de elementos en una matriz multidimensional, multiplique el número de elementos en cada índice. La variable DayHour, declarada anteriormente, reserva 168 (7 * 24) elementos, en 7 filas y 24 columnas. Para recuperar el valor de la celda en la tercera fila y la séptima columna, usaríamos: DayHour [3,7] o DayHour [3] [7]. El siguiente código se puede usar para establecer todos los elementos en la matriz DayHour en 0.

& lt; pre & gt; para i: = 1 a 7 do & lt; br & gt ;
& lt; br & gt ;
para j: = 1 a 24 do & lt; br & gt ;
& lt; br & gt ;
DayHour [i, j]: = 0; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / pre & gt ;

Matriz dinámica

Es posible que no sepa exactamente qué tan grande es hacer una matriz. Es posible que desee tener la capacidad de cambiar el tamaño de la matriz en tiempo de ejecución . Una matriz dinámica declara su tipo, pero no su tamaño. El tamaño real de una matriz dinámica se puede cambiar en tiempo de ejecución mediante el uso del procedimiento SetLength.

& lt; pre & gt; var Estudiantes: matriz de cadena; & lt; / pre & gt ;

crea una matriz dinámica unidimensional de cadenas. La declaración no asigna memoria a los estudiantes. Para crear la matriz en la memoria, llamamos al procedimiento SetLength. Por ejemplo, dada la declaración anterior,

& lt; pre & gt; SetLength (Estudiantes, 14); & lt; / pre & gt ;

asigna una matriz de 14 cadenas, indexadas de 0 a 13. Las matrices dinámicas siempre están indexadas enteros, siempre comenzando de 0 a una menos que su tamaño en elementos.

Para crear una matriz dinámica bidimensional, use el siguiente código:

& lt; pre & gt; var Matrix: matriz de matriz de Double; & lt; br & gt ;
comenzar & lt; br & gt ;
& lt; br & gt ;
SetLength (Matrix, 10, 20) & lt; br & gt ;
& lt; br & gt ;
final; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / pre & gt ;

que asigna espacio para una matriz bidimensional, 10 por 20 de valores de doble punto flotante.

Para eliminar un espacio dinámico de memoria de array & amp; apos; s, asigne nulo a la variable de matriz, como:

& lt; pre & gt; Matrix: = nil; & lt; / pre & gt ;

Muy a menudo, su programa no sabe en tiempo de compilación cuántos elementos se necesitarán; ese número no se conocerá hasta el tiempo de ejecución. Con matrices dinámicas, puede asignar solo la cantidad de almacenamiento que se requiera en un momento dado. En otras palabras, el tamaño de las matrices dinámicas se puede cambiar en tiempo de ejecución, que es una de las ventajas clave de las matrices dinámicas.

El siguiente ejemplo crea una matriz de valores enteros y luego llama a la función Copiar para cambiar el tamaño de la matriz.

& lt; pre & gt; var & lt; br & gt ;
& lt; br & gt ;
Vector: matriz de entero; & lt; br & gt ;
& lt; br & gt ;
& lt; br & gt ;
k: entero; & lt; br & gt ;
& lt; br & gt ;
comenzar & lt; br & gt ;
& lt; br & gt ;
SetLength (Vector, 10); & lt; br & gt ;
& lt; br & gt ;
para k: = Bajo (Vector) a Alto (Vector) do & lt; br & gt ;
& lt; br & gt ;
Vector [k]: = i * 10; & lt; br & gt ;
& lt; br & gt ;
& lt; br & gt ;…& lt; br & gt ;
// ahora necesitamos más espacio & lt; br & gt ;
& lt; br & gt ;
SetLength (Vector, 20); & lt; br & gt ;
& lt; br & gt ;
// aquí, la matriz de vectores puede contener hasta 20 elementos // (ya tiene 10 de ellos) final; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & gt; & gt; & gt;

La función SetLength crea una matriz más grande (o más pequeña) y copia los valores existentes a la nueva matriz. Las funciones Baja y Alta le aseguran acceder a cada elemento de matriz sin mirar hacia atrás en su código para obtener los valores correctos del índice inferior y superior.

& amp; # x203A; Informática

Artículo anteriorEufemismo (Palabras)
Artículo siguienteLa historia de la guillotina

Dejar respuesta

Please enter your comment!
Please enter your name here

FOLLOW US

Related Stories