Pascal: matrices
El lenguaje de programación Pascal proporciona una estructura de datos llamada matriz, que puede almacenar una colección secuencial de tamaño fijo de elementos del mismo tipo. Una matriz se usa para almacenar una colección de datos, pero a menudo es más útil pensar en una matriz como una colección de variables del mismo tipo.
En lugar de declarar variables individuales, como número1, número2, ... y número100, declaras una variable de matriz como números y usas números [1], números [2] y ..., números [100] para representar variables individuales. Se accede a un elemento específico de una matriz mediante un índice.
Todas las matrices constan de ubicaciones de memoria contiguas. La dirección más baja corresponde al primer elemento y la dirección más alta al último elemento.
Tenga en cuenta que si desea una matriz de estilo C a partir del índice 0, solo necesita comenzar el índice desde 0, en lugar de 1.
Declaración de matrices
Para declarar una matriz en Pascal, un programador puede declarar el tipo y luego crear variables de esa matriz o declarar directamente la variable de la matriz.
La forma general de declaración de tipo de matriz unidimensional es:
type
array-identifier = array[index-type] of element-type;
Dónde,
array-identifier : Indica el nombre del tipo de matriz.
index-type- especifica el subíndice de la matriz; puede ser cualquier tipo de datos escalares excepto real
element-type - especifica los tipos de valores que se almacenarán
Por ejemplo,
type
vector = array [ 1..25] of real;
var
velocity: vector;
Ahora, la velocidad es una matriz variable de tipo vectorial, que es suficiente para contener hasta 25 números reales.
Para iniciar la matriz desde el índice 0, la declaración sería:
type
vector = array [ 0..24] of real;
var
velocity: vector;
Tipos de subíndice de matriz
En Pascal, un subíndice de matriz podría ser de cualquier tipo escalar como, entero, booleano, enumerado o subrango, excepto real. Los subíndices de matriz también pueden tener valores negativos.
Por ejemplo,
type
temperature = array [-10 .. 50] of real;
var
day_temp, night_temp: temperature;
Tomemos otro ejemplo donde el subíndice es de tipo carácter:
type
ch_array = array[char] of 1..26;
var
alphabet: ch_array;
El subíndice puede ser de tipo enumerado:
type
color = ( red, black, blue, silver, beige);
car_color = array of [color] of boolean;
var
car_body: car_color;
Inicialización de matrices
En Pascal, las matrices se inicializan mediante asignación, ya sea especificando un subíndice en particular o usando un bucle for-do.
Por ejemplo
type
ch_array = array[char] of 1..26;
var
alphabet: ch_array;
c: char;
begin
...
for c:= 'A' to 'Z' do
alphabet[c] := ord[m];
(* the ord() function returns the ordinal values *)
Acceso a elementos de matriz
Se accede a un elemento indexando el nombre de la matriz. Esto se hace colocando el índice del elemento entre corchetes después del nombre de la matriz. Por ejemplo
a: integer;
a: = alphabet['A'];
La declaración anterior tomará el primer elemento de la matriz denominada alfabeto y asignará el valor a la variable a.
A continuación se muestra un ejemplo, que utilizará los tres conceptos mencionados anteriormente, a saber. declaración, asignación y acceso a matrices -
program exArrays;
var
n: array [1..10] of integer; (* n is an array of 10 integers *)
i, j: integer;
begin
(* initialize elements of array n to 0 *)
for i := 1 to 10 do
n[ i ] := i + 100; (* set element at location i to i + 100 *)
(* output each array element's value *)
for j:= 1 to 10 do
writeln('Element[', j, '] = ', n[j] );
end.
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
Element[10] = 110
Arreglos Pascal en detalle
Las matrices son importantes para Pascal y deberían necesitar muchos más detalles. A continuación, se presentan algunos conceptos importantes relacionados con la matriz que deberían quedar claros para un programador de Pascal:
No Señor | Concepto y descripción |
---|---|
1 |
Matrices multidimensionales
Pascal admite matrices multidimensionales. La forma más simple de la matriz multidimensional es la matriz bidimensional. |
2 |
Matriz dinámica
En este tipo de matrices, la longitud inicial es cero. La longitud real de la matriz debe establecerse con el estándarSetLength función. |
3 |
Matriz empaquetada
Estas matrices están empaquetadas en bits, es decir, cada carácter o valor de verdad se almacena en bytes consecutivos en lugar de usar una unidad de almacenamiento, generalmente una palabra (4 bytes o más). |
4 |
Pasar matrices a subprogramas
Puede pasar a un subprograma un puntero a una matriz especificando el nombre de la matriz sin un índice. |