Instrução condicional - Correção

Transferir em PDF

Exercício

Escreva uma função vabsoluto(x) que tome um argumento real e devolva o seu valor absoluto.

Análise do enunciado

O valor absoluto de um número x, escrito x\mid x\mid, é a sua distância a zero. O valor absoluto de um número real positivo é portanto o próprio número e o valor absoluto de um número negativo é o oposto.

Formalmente podemos escrever:

  • x\mid x\mid = x se x é positivo
  • x\mid x\mid = -x se x é negativo

Queremos escrever uma função que tome um x real como argumento e devolva o seu valor absoluto. Teremos portanto de realizar um teste com o sinal de x para dar o resultado.

Resolução

Surge aqui uma instrução condicional que faz a distinção entre 2 casos:

  • se x é positivo, devolver x
  • caso contrário, devolver -x

O caso x = 0 pode ser incluído num ou noutro caso. Podemos escrever como desejarmos: if x > 0 ou if x >= 0.

image 1

Vamos portanto escrever a função seguinte:

image 2

No interpretador interativo podemos testar a função.

Uma nota para terminar

A função valor absoluto já está presente em Python. Basta escrever abs() para a utilizar:

>>> abs(-4)
4

Outro exercício

Escreva uma função mediana que toma uma série de números de qualquer tamanho como argumento e devolve a mediana da série.

Correção

image 3

Algumas notas sobre a correção

O comando sorted(lista) devolve a lista de valores ordenados por ordem crescente:

>>> sorted([5,3,4])
[3,4,5]

O caracter % (módulo) devolve o resto da divisão euclidiana. Assim numero % 2 testa se numero é par ou ímpar.

>>> 5 % 2
1

O índice de um elemento de uma lista deve ser um número inteiro. É por isso que utilizamos int (integer = inteiro em inglês) entre parênteses:

>>> int(4.0)
4

Para selecionar o k-ésimo elemento de uma lista L, escrevemos L[k-1]. De facto, o primeiro índice de uma lista em Python é 0. Aqui selecionamos o elemento colocado na posição (n+1)/2 na lista_valores, o 3.º elemento numa lista com 5 elementos.

>>> lista = [1,4,7,9,10]
>>> n = 5
>>> lista[int((n-1)/2)]
7