Sign in Join
Wiki copytemporary

Array/es: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Array/es

OldNewLine
1+Un **array** es un tipo (type) que agrupa un número de [[Variable|variables]] del mismo tipo. Se los llama vectores, arreglos o matrices (unidimensionales). Ejemplos son un array of [[Char/es|char]], un array of [[Integer|integer]], y un array of [[Real|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 [[Record/es|records]].
2+
3+Los arrays reflejan el concepto matemático de
4+
5+- vectores (una matriz unidimensional) y
6+- matrices (matriz de dos o más dimensiones))
7+
8+## Vectores estáticos
9+
10+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.
11+
12+``` pascal
13+program
14+...
15+var
16+ nombredelavariable : array [indiceinicial..indicefinal] of type;
17+begin
18+ ...
19+```
20+
21+**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/es|const]] que sea un entero. Cualquiera o ambos números pueden ser negativos o cero.
22+
23+### Vector o matriz de una dimensión
24+
25+Ejemplo de vector unidimensional:
26+
27+``` pascal
28+type
29+ vector_de_enteros = array [1..10] of integer;
30+
31+var
32+ Numeros: vector_de_enteros;
33+```
34+
35+### Vectores multidimencionales o matrices
36+
37+Se admiten [[Basic Pascal Tutorial/Chapter 5/Multidimensional arrays/es|Multidimensional arrays]] como \[x..y, z..t\] y así sucesivamente.
38+
39+Ejemplo de matriz:
40+
41+``` pascal
42+type
43+ matriz = array [0..5, 1..3] of extended;
44+
45+var
46+ matriz_dos_dimensiones: matriz;
47+```
48+
49+## Vectores dinámicos
50+
51+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/es|dynamic array]]. Una matriz dinámica puede crecer o reducirse en tamaño durante la ejecución del programa.
52+
53+## Acceso a los elementos
54+
55+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.
56+
57+``` pascal
58+Var
59+ vector : array [1..3] of Integer;
60+ matriz : array[1..5,1..5] of Integer;
61+ unvalor : Integer;
62+...
63+begin
64+ vector[2] := 4 + 2;
65+ matriz[2,3] := 7;
66+ ...
67+ unvalor := vector[2]; // 6
68+ unvalor := matriz[2,3]; // 7
69+end.
70+```
71+
72+## Vectores literales
73+
74+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 array/es|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:
75+
76+``` pascal
77+Var
78+ // inicializar un vector estático de enteros vía vector literal
79+ Numeros : array [1..3] of Integer = (1, 2, 3);
80+
81+procedure ImprimirVector(entrada : array of String);
82+var
83+ i : integer;
84+begin
85+ for i := 0 to length(entrada)-1 do
86+ write(entrada[i],' ');
87+ writeln;
88+end;
89+
90+begin
91+ Writeln( Numeros[2] ); // 2
92+ // crear tres elementos de vector de cadenas anónimas mediante un vector literal
93+ ImprimirVector( ['uno', 'dos', 'tres'] );
94+end.
95+```
96+
97+Resultados:
98+
99+`2`\
100+`uno dos tres`
101+
102+---
103+*From the Free Pascal wiki, page "Array/es", as it stood on 2023-01-25 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history