Array/es

From Free Pascal wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) Bahasa Indonesia (id) 日本語 (ja) русский (ru)

Un array es un tipo (type) que agrupa un número de variables del mismo tipo. Se los llama vectores, arreglos o matrices (unidimensionales). Ejemplos son un array of char, un array of integer, y un array of real. De hecho, cualquier tipo, incluyendo tipos definidos por el usuario, se pueden usar en un vector. De todos modos, los elementos de un vector son siempre del mismo tipo. No se pueden agrupar en un vector diferentes tipos. Para ese propósito ver records.

Los arrays reflejan el concepto matemático de

  • vectores (una matriz unidimensional) y
  • matrices (matriz de dos o más dimensiones))


Vectores estáticos

La declaración funciona de forma similar a la de los tipos simples, pero es necesario agregar el número de elementos a través de un intervalo de índices, así como el tipo de elemento del vector o matriz.

program
...
var 
  nombredelavariable : array [indiceinicial..indicefinal] of type;
begin
  ...

indiceinicial debe ser menor o igual a indicefinal, y ambos deben resolverse a una constante de enteros, ya sea un valor entero o un valor const que sea un entero. Cualquiera o ambos números pueden ser negativos o cero.

Vector o matriz de una dimensión

Ejemplo de vector unidimensional:

type
  vector_de_enteros = array [1..10] of integer;
 
var
  Numeros: vector_de_enteros;

Vectores multidimencionales o matrices

Se admiten Multidimensional arrays como [x..y, z..t] y así sucesivamente.

Ejemplo de matriz:

type
  matriz = array [0..5, 1..3] of extended;
 
var
  matriz_dos_dimensiones: matriz;


Vectores dinámicos

Si no es posible conocer el número exacto de elementos necesarios del vector o matriz en tiempo de diseño, se puede utilizar el tipo dynamic array. Una matriz dinámica puede crecer o reducirse en tamaño durante la ejecución del programa.

Acceso a los elementos

Para acceder al elemento de un vector debe indicarse el índice entre corchetes [] después del nombre de la variable del tipo array. Luego ese elemento puede utilizarce como una variable común.

Var
   vector  : array [1..3] of Integer;
   matriz  : array[1..5,1..5] of Integer;
   unvalor : Integer;
...
begin
   vector[2] := 4 + 2;
   matriz[2,3] := 7;
   ...
   unvalor := vector[2]; // 6
   unvalor := matriz[2,3]; // 7
end.

Vectores literales

Hay dos formatos que se utilizan para vectores o arreglos literales, dependiendo del lugar donde se utilicen. En la sección de declaración de variables, se puede inicializar un vector estático (no es posible hacerlo con dynamic arrays) con una serie de valores entre paréntesis. En un bloque instrucciones es posible crear un vector anónimo con una serie de valores entre corchetes. Por ejemplo:

Var
   // inicializar un vector estático de enteros vía vector literal
   Numeros : array [1..3] of Integer = (1, 2, 3);
   
procedure ImprimirVector(entrada : array of String);
var 
   i : integer;
begin
    for i := 0 to length(entrada)-1 do
       write(entrada[i],' ');
    writeln;
end;

begin
    Writeln( Numeros[2] ); //2
    // crear tres elementos de vector de cadenas anónimas mediante un vector literal
    ImprimirVector( ['uno', 'dos', 'tres'] );
end.

Resultados:
2
uno dos tres


navigation bar: data types
simple data types

boolean byte cardinal char currency extended int64 integer longint pointer real shortint smallint word

complex data types

array class object record set string shortstring