Matrizes e vetores
Matrizes são um agrupamento de variáveis do mesmo tipo, organizada em linhas e colunas. Na programação HP PPL, as linhas e colunas começam em 1.
Sintaxe:
EXPORT Matriz()
BEGIN
PRINT();
M1(1,1) := 3.4;
M1(1,2) := #3h;
PRINT(M1);
END;
Irá produzir a seguinte tela:
Já um vetor, é um tipo especial de matriz, com 1 linha e N colunas, o exemplo a seguir, foi criado o vetor e atribuído os valores correspondentes.
EXPORT Matriz()
BEGIN
PRINT();
LOCAL vetor = [2, 4, 35, 50, 23, 17, 9, 12, 27, 5];
PRINT (vetor);
END;
Resultado
Acessando valores de uma matriz ou vetor
A forma de acessar um valor na matriz é referenciando a linha e coluna que se deseja acessar:
M1(2,3) := 3.4;
Nesse exemplo foi atribuido o valor 3.4 a matriz M1 (variável padrão do sistema) na linha 2, coluna 3. A forma de se obter o valor é igual a de uma variável qualquer, porém, lembrando de passer o número da linha e da coluna.
Para o vetor, como é uma matriz unidimensional (apenas 1 linha), pode-se acessar o elemento apenas com uma referência:
LOCAL vetor = [2, 4, 35, 50, 23, 17, 9, 12, 27, 5];
PRINT (vetor(3));
A tela resultante será:
Exemplo de uso de matrizes com FOR
Faça um programa que dado o vetor unidimensional [2, 4, 35, 50, 23, 17, 9, 12, 27, 5] retorne:
- 1 maior valor
- 2 menor valor
- 3 média dos valores
EXPORT Matriz()
BEGIN
PRINT();
LOCAL i;
LOCAL maior := -MAXREAL;
LOCAL menor := MAXREAL;
LOCAL soma := 0, media;
LOCAL vetor := [2, 4, 35, 50, 23, 17, 9, 12, 27, 5] ;
LOCAL tamanho := SIZE(vetor); //A função SIZE retorna uma lista com a quantidade de elementos, no caso de um vetor no formato {colunas}, no caso de uma matriz no formato {linhas, colunas}
FOR i FROM 1 to tamanho(1) DO // Percorre a lista
IF vetor(i) > maior THEN
maior := vetor(i) ;
END;
IF vetor(i) < menor THEN
menor:= vetor(i) ;
END;
soma := soma + vetor(i);
END;
media := soma/ tamanho(1) ;
PRINT("Maior valor: "+maior + ", menor: " + menor + ", média: " + media);
END;
O resultado:
Outro exemplo
Para o mesmo exemplo anterior, podemos utilizar funções nativas da linguagem e simplificar o programa:
EXPORT Matriz()
BEGIN
PRINT();
LOCAL maior;
LOCAL menor;
LOCAL media;
LOCAL vetor := [2, 4, 35, 50, 23, 17, 9, 12, 27, 5] ;
maior := max(vetor);
menor := min(vetor);
media := mean(vetor);
PRINT("Maior valor: "+maior + ", menor: " + menor + ", média: " + media);
// A função approx é utilizada para aproximar o valor que foi produzido pelo CAS.
END;
O resultado:
Atividade
Construa os programas:
- 1. Faça um programa que da uma matriz, retorne:
- A soma de cada linha
- A soma de cada coluna
- A soma dos elementos da diagonal principal
- A soma dos elementos da diagonal secundária
- 2. Faça um programa que apresente automaticamente uma matriz de dimensões 4x5, sendo que o valor de \(A _{i, j} = 3i + j^2 \).
- 3. Através de laços de repetição e decisão imprima uma matriz \(B = (b_{ij})_{5x5} \) tal que: \[b_{ij}= \begin{cases} -2 & se & i > j \\ 1 & se & i = j \\ 2 & se & i < j \\ \end{cases} \]