Pascal - Arrays
A linguagem de programação Pascal fornece uma estrutura de dados chamada array, que pode armazenar uma coleção sequencial de tamanho fixo de elementos do mesmo tipo. Uma matriz é usada para armazenar uma coleção de dados, mas geralmente é mais útil pensar em uma matriz como uma coleção de variáveis do mesmo tipo.
Em vez de declarar variáveis individuais, como número1, número2, ... e número100, você declara uma variável de matriz, como números e usa números [1], números [2] e ..., números [100] para representar variáveis individuais. Um elemento específico em uma matriz é acessado por um índice.
Todas as matrizes consistem em locais de memória contíguos. O endereço mais baixo corresponde ao primeiro elemento e o endereço mais alto ao último elemento.
Observe que se você quiser uma matriz de estilo C começando do índice 0, você só precisa iniciar o índice do 0, em vez de 1.
Declaração de matrizes
Para declarar um array em Pascal, um programador pode declarar o tipo e então criar variáveis desse array ou declarar diretamente a variável do array.
A forma geral de declaração de tipo de array unidimensional é -
type
array-identifier = array[index-type] of element-type;
Onde,
array-identifier - indica o nome do tipo de array.
index-type- especifica o subscrito da matriz; pode ser qualquer tipo de dados escalar exceto real
element-type - especifica os tipos de valores que serão armazenados
Por exemplo,
type
vector = array [ 1..25] of real;
var
velocity: vector;
Agora, a velocidade é uma matriz variável do tipo vetorial, que é suficiente para conter até 25 números reais.
Para iniciar a matriz do índice 0, a declaração seria -
type
vector = array [ 0..24] of real;
var
velocity: vector;
Tipos de subscrito de matriz
Em Pascal, um subscrito de matriz pode ser de qualquer tipo escalar, como inteiro, booleano, enumerado ou subfaixa, exceto real. Os subscritos da matriz também podem ter valores negativos.
Por exemplo,
type
temperature = array [-10 .. 50] of real;
var
day_temp, night_temp: temperature;
Vamos pegar outro exemplo em que o subscrito é do tipo de caractere -
type
ch_array = array[char] of 1..26;
var
alphabet: ch_array;
O subscrito pode ser do tipo enumerado -
type
color = ( red, black, blue, silver, beige);
car_color = array of [color] of boolean;
var
car_body: car_color;
Inicializando matrizes
Em Pascal, os arrays são inicializados por meio de atribuição, especificando um determinado subscrito ou usando um loop for-do.
Por exemplo -
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 *)
Acessando Elementos de Matriz
Um elemento é acessado indexando o nome da matriz. Isso é feito colocando o índice do elemento entre colchetes após o nome da matriz. Por exemplo -
a: integer;
a: = alphabet['A'];
A instrução acima pegará o primeiro elemento do array chamado alphabet e atribuirá o valor à variável a.
A seguir está um exemplo, que usará todos os três conceitos acima mencionados viz. declaração, atribuição e acesso a matrizes -
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.
Quando o código acima é compilado e executado, ele produz o seguinte 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
Pascal Arrays em detalhes
Os arrays são importantes para Pascal e precisam de muitos mais detalhes. Seguem alguns conceitos importantes relacionados a array que devem ser claros para um programador Pascal -
Sr. Não | Conceito e descrição |
---|---|
1 |
Matrizes multidimensionais
Pascal oferece suporte a matrizes multidimensionais. A forma mais simples do array multidimensional é o array bidimensional. |
2 |
Array dinâmico
Nesse tipo de matriz, o comprimento inicial é zero. O comprimento real da matriz deve ser definido com o padrãoSetLength função. |
3 |
Matriz embalada
Essas matrizes são compactadas em bits, ou seja, cada caractere ou valores verdade são armazenados em bytes consecutivos em vez de usar uma unidade de armazenamento, geralmente uma palavra (4 bytes ou mais). |
4 |
Passando matrizes para subprogramas
Você pode passar para um subprograma um ponteiro para uma matriz especificando o nome da matriz sem um índice. |