Aula Prática 1 - Funções e Parâmetros

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

  • Função
  • Parâmetro(s) e Argumento(s)
  • Tipo de dados primitivos: int, float e bool
  • Instrução de devolução: return
  • Operadores aritméticos: +, - , *, /, //, %, **
  • Operadores de conversão entre tipos de dados numéricos: int(), float()
  • Operadores relacionais: == (igual), != (diferente), <, >, <=, >=
  • Operadores lógicos: not (negação), and (conjunção), or (disjunção)

Exercícios

Desenvolva uma função para cada um dos objectivos apresentados nas alíneas seguintes. Todas as funções podem ser definidas apenas com a instrução de retorno (return ...). Para cada função escreva expressões para as testar, utilizando argumentos para abranger as diferentes possibilidades de resultados (p.e. verdadeiro/falso, arredondamento por excesso/defeito).

1. Obter o dobro de um número.

A definição desta função é muito semelhante ao exemplo dado inicialmente.

In [1]:
 

2. Obter a diferença entre dois números (dados em dois parâmetros).

In [ ]:
 

3. Obter a percentagem de um valor relativamente a um total.

Exemplo: 2 num total de 8 corresponde a 25%.
O valor de percentagem deverá ser devolvido num número real (float) no intervalo [0.0, 1.0].

def percentage(n, total):
    ...
In [ ]:
 

4. Obter a média entre dois números inteiros.

Note que a média entre dois inteiros não é necessariamente um inteiro, pelo que o tipo de retorno deverá ser decimal (float).

In [ ]:
 

5. Arredondar um número decimal para inteiro.

Nesta função é necessário aplicar a truncagem (converter um decimal para inteiro, descartando a parte decimal).
Exemplos:

    rounded(4.3) => 4
    rounded(4.7) => 5
In [ ]:
 

6. Saber se um número inteiro é negativo.

O valor devolvido pela função deverá indicar se o número passado como argumento é ou não negativo, mediante um valor booleano (bool, que assume apenas os valores True ou False).

Exemplos:

    is_negative(-2) => True
    is_negative(3) => False

    def is_negative(n):
    ...
In [ ]:
 

7. Utilizando o operador aritmético de divisão inteira (%)

(a) Saber se um número inteiro é impar.
In [ ]:
 
(b) Saber se um número inteiro é par.
In [ ]:
 
(c) Saber se um número inteiro é múltiplo de outro.
In [ ]:
 

8. Saber se um número inteiro corresponde a um dígito (i.e. está entre 0 e 9)

Nesta função é necessário combinar duas condições lógicas (conjunção).

In [ ]:
 

9. Saber se um número está incluído num dado intervalo (fechado).

Exemplos:

    is_included(5, 4, 9) => True (5 está incluído em [4, 9])
    is_included(5, 6, 9) => False (5 não está incluído em [6, 9])
In [ ]:
 

10. Saber se um número está excluído de um dado intervalo (fechado).

Experimente uma solução baseada numa disjunção lógica e uma solução alternativa baseada numa negação da condição utilizada na alínea anterior.

Exemplos:

    is_excluded(4, 4, 9) => False (4 não está excluído de [4, 9])
    is_excluded(4, 5, 9) => True (4 está excluído de [5, 9])
In [ ]:
 

11. Calcular a operação lógica disjunção exclusiva (XOR) entre dois valores booleanos.

Exemplos:

    xor(True, False) => True
    xor(False, True) => True
    xor(True, True) => False
    xor(False, False) => False
In [ ]:
 

12. Saber se um carácter corresponde a uma vogal minúscula.

Exemplos:

    is_vowel('a') => True
    is_vowel('z') => False
In [ ]: