Introdução
Muitas vezes, ao trabalhar com qualquer informação, você precisa lidar com dados tabulares. Os programas modernos geralmente trabalham com esses dados. O exemplo mais simples é programar jogos em um tabuleiro de xadrez: jogo da velha, xadrez, damas, etc.
Em matemática, tais estruturas são chamadas de matrizes.
Uma matriz é uma tabela retangular composta de elementos do mesmo tipo (números, strings, etc. .)< /div>
Tais dados em Pascal podem ser armazenados e processados como arrays bidimensionais - "arrays de arrays".
Para processar os dados da tabela, é necessário lembrar o estado de cada célula (célula). Cada célula tem dois números: um número de linha e um número de coluna.
Na matriz, cada elemento possui dois índices: primeiro é indicado o número da linha, depois o número da coluna. A numeração de linhas e colunas começa do zero.
Por exemplo, o elemento A[1][2] é o elemento localizado na segunda linha e na terceira coluna.
Assim como nos arrays (listas) comuns, para trabalhar com matrizes é preciso aprender a criá-las, inseri-las, processá-las e exibi-las.
Criação de matrizes
Tarefa
Cria na memória uma matriz do tamanho dado preenchida com zeros.
Para criar uma matriz corretamente, você precisa forçar o compilador a criar todas as strings na memória como objetos diferentes.
Para fazer isso, você deve primeiro criar uma matriz vazia, especificar o número de linhas na matriz e, em seguida, especificar o número de elementos em cada linha usando o método setLength() em um loop:
N:= 3
M := 2
setLength(A, N);
para i := 0 a N - 1 faça
setLength(A[i], M);
Preenchendo uma matriz com valores arbitrários
Depois de criar uma matriz, você pode preenchê-la com valores arbitrários. Como cada elemento possui dois índices, é necessário usar loops aninhados
para i := 0 a N comece
para j := 0 a M começar
A[i][j] := ...
fim;
fim;
Exibindo a matriz
Dois loops aninhados geralmente são usados para processar e exibir a lista. O primeiro ciclo é pelo número da linha, o segundo ciclo é pelos elementos dentro da linha.
Para exibir a matriz linha por linha, separando os números com espaços dentro de uma linha, você precisa escrever o seguinte fragmento:
for i := 0 to length(A) - 1 do begin // length(A) - retorna o número de linhas na matriz A
for j := 0 to length(A[i]) - 1 do // length(A[i]) - retorna o número de elementos na string i
escreva(a[i][j], ' ');
escrevaln(); // faz uma nova linha depois que a linha é exibida
fim;
O mesmo, mas não por índice, mas por valores de lista (o loop for pode iterar sobre todos os elementos da lista (array), string):
for row in a do begin // iterar sobre todas as linhas da matriz a
for elem in row do // faz um loop por todos os elementos na linha
escreva(elem, ' ');
escrevaln();
fim;
|
Preenchendo uma matriz com valores do teclado
Deixe o programa receber uma matriz bidimensional como entrada, na forma de n linhas, cada uma contendo m números separados por espaços. Você pode salvar esses dados em uma matriz bidimensional como esta:
ler(n, m);
definir comprimento(a, n);
para i:= 0 até n - 1 comece
definir comprimento(a[i], m);
for j := 0 a m - 1 do read(a[i][j]);
fim;
|
Cada elemento da matriz tem dois índices, então você precisa usar um loop aninhado para iterar sobre todos os elementos.
Normalmente, uma matriz é iterada linha por linha: o loop externo itera sobre os índices de linha, enquanto o loop interno itera sobre os índices de coluna.
Mas, se necessário, você pode iterar sobre a matriz e as colunas, então os ciclos são invertidos.
|