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.