Aula Prática 9 - Vetores e Matrizes

Vetores

O objetivo desta parte da aula é experimentar a definição de funções que envolvem vetores de tipos numéricos. Após a realização da prática, deverá ter sido adquirida uma noção básica dos seguintes conceitos:

  • Criação e manipulação de vetores de tipos numéricos
  • Definição de funções envolvendo vetores

Os vetores aparecem representados por <e1, e2, ...>

Trabalho Prévio

Defina funções envolvendo vetores de inteiros que permitam:

1. Construir um vetor com os números naturais até um dado número n.

Exemplo:

    naturals(5) → <1, 2, 3, 4, 5>

2. Calcular o somatório dos números ímpares de um vetor de inteiros.

Exemplo:

    sum(<1, 3, 5, 8>) → 9

Exercícios

Utilizando sempre que possível as funções já desenvolvidas. defina funções envolvendo vetores de inteiros que permitam:

1. Calcular a média dos valores de um vetor.

Exemplo:

    mean(<13, 14, 16, 15>) → 14.5

2. Verificar se existe determinado número n num vetor.

Exemplo:

    exists(5, <1, 5, 2>) → True
    exists(5, <1, 6, 2>) → False

3. Contar o número de ocorrências de um determinado número num vetor.

Exemplo:

    count(3, <1, 3, 4, 5, 3>) → 2

4. Defina uma função que devolva o valor mínimo de um vetor (sem usar a função min()).

Exemplo:

    min_of(<5, 1, 6, 9, 3>) → 1

5. Obter a primeira metade de um vetor v

inclua um parâmetro booleano para permitir indicar se o elemento do meio é para incluir (caso o comprimento do vetor seja ímpar). Se o comprimento do vetor for par, este parâmetro não terá efeito. Exemplo:

    firstHalf(<1, 2, 3, 4, 5>, True)→ <1, 2, 3>
    firstHalf(<1, 2, 3, 4>, True) → <1, 2>
    firstHalf(<1, 2, 3, 4>, False) → <1, 2>
    firstHalf(<1, 2, 3, 4, 5>, False) → <1, 2>

6. Obter a segunda metade de um vetor, analogamente à alínea anterior.

Exemplo:

    secondHalf(<1, 2, 3, 4, 5>, True) → <3, 4, 5>
    secondHalf(<1, 2, 3, 4, 5>, False) → <4, 5>

7. Construir um vetor juntando outros dois vetores (parte esquerda e direita).

Exemplo:

    merge(<1, 2>, <9, 10>) → <1, 2, 9, 10>

8. Construa um vetor invertido com base noutro.

Ou seja, o novo vetor será composto pelos elementos do vetor dado pela ordem inversa. Exemplo:

    invert(<1, 2, 3>) → <3, 2, 1>

Matrizes

O objetivo desta parte da aula é experimentar a definição de funções e procedimentos que envolvam matrizes de inteiros. Após a realização da prática, deverá ter sido adquirida uma noção básica dos seguintes conceitos:

  • Criação e manipulação de matrizes de tipos numéricos

Exercícios

Desenvolva funções e procedimentos sobre matrizes, permitindo:

1. Criar uma matriz identidade de tamanho n.

    def identity(n):

2. Multiplicar uma matriz por um escalar (modificando-a).

    def multiply_by_scalar(m, s):

3. Efetuar a adição de duas matrizes, devolvendo uma nova matriz com o resultado.

    def sum_matrix(m1, m2):

4. Verificar se uma matriz é uma matriz identidade.

5. Verificar se uma matriz é simétrica.

Exercícios extra

1. Defina uma função para multiplicar duas matrizes, assumindo que as mesmas têm dimensões válidas para tal operação.

In [ ]: