Laço fechado - Correção

Transferir em PDF

Exercício

Escreva a função soma(n) que tome um número inteiro como argumento e devolva a soma dos n primeiros inteiros (1 + 2 + 3 + … + n) e que contenha um laço for.

Análise do enunciado

Pretendemos utilizar um laço for na função soma(n). Portanto, antes de mais, é necessário identificar a operação repetitiva e determinar quantas vezes é repetida.

À mão, podemos começar por testar os casos n=1, n=2, n=3, …

  • n = 1 :

S(1) = 1

  • n = 2 :

S(2) = 1 + 2 = 3

  • n = 3 :

S(3) = 1 + 2 + 3 = 6

Continuando com n=4, n=5, … vamos facilmente perceber que é melhor adicionar 4, 5, … ao resultado anterior em vez de recalcular tudo: preferimos assim fazer S(4) = S(3) + 4 = 6 + 4 = 10 do que S(4) = 1 + 2 + 3 + 4.

Acabámos de distinguir então a operação que se repete: “S(i) = S(i-1) + i”.

Para calcular a soma dos números inteiros de 1 a n, é necessário fazer variar i de 1 a n. Utilizaremos então range(1,n+1).

Resolução

Tomamos S como a soma procurada. No início do laço, a variável S será 0: S = 0. No final do laço, queremos S = 1 + 2 + … + n.

image 1

Antes do laço for, a variável S é criada, começando por 0. A cada iteração do laço for, é executada a seguinte operação: “armazena S+i em S”.

Uma nota para terminar

Existe uma fórmula explícita em função de n para calcular a soma dos primeiros n números inteiros:

1+2+3+...+n=n(n+1)21 + 2 + 3 + ... + n = \frac{n(n+1)}{2}

Outro exercício

Escreva uma função potencia(x,n) que tome um valor real x e um inteiro natural n como argumento e devolva a x elevado n-ésima potência, xax^a.

Correção

image 2

Agumas notas sobre a correção

Como repetimos n vezes x×x×...×xx\times x\times ... \times x, utilizamos o laço for bem como a soma dos n primeiros números inteiros. Aqui multiplicamos o resultado por x a cada iteração.

image 3

Em Python, há a possibilidade de utilizar o duplo asterisco para representar a potência.

image 4

Além disso, o módulo math de Python dispõe da função pow(x,n) para calcular potências.