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} \]