Nesta aula vamos resolver o exercício 5 com fluxograma.
5) Imprimir o enésimo termo da sequência de fibonacci, onde n é um número inteiro maior que zero informado pelo usuário.
Antes de qualquer ação precisamos entender o que é essa tal sequência de Fibonacci famosa na matemática.
O que é essa tal sequência de Fibonacci?
Esta sequência possui dois termos iniciais, o 0 (primeiro) e o 1 (segundo). A partir do terceiro, cada novo termo é a soma dos dois anteriores. Com estas informações é possível construir parte da sequência, assim:
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Simples né?
Agora, precisamos perguntar ao usuário qual termo ele deseja, calcular e imprimi esse termo na tela.
Uma estratégia que podemos utilizar é a de manter apenas os dois últimos termos da sequência, assim:
Imagine que o usuário digitou 5. Ele deseja saber o quinto termo da sequência. Como sabemos apenas o primeiro e o segundo termos, podemos colocar cada um em uma variável, assim:
a = 0;
b = 1;
Como o próximo termo é a soma dos dois anteriores, vamos criar uma variável c para receber esse valor, assim:
c = a + b;
Perceba que agora os dois últimos termos da sequência são 1 (segundo na variável b) e outro 1 (terceiro na variável c). Então, podemos jogar fora o valor da variável a, assim:
a = b;
b = c;
Agora podemos calcular o quarto termo e salvar em c, assim;
c = a + b;
Novamente podemos jogar for o valor de a:
a = b;
b = c;
Agora vamos calcular o quinto termo:
c = a + b;
Perceba que as operações se repetem. Assim, podemos escreve-las uma vez dentro de um bloco de repetição.
O algoritmo a seguir apresenta esta ideia.
Além de inicializar as variáveis a e b, precisamos contar quantos termos já calculamos, por isso a variável contador inicializada com 2, pois já temos dois termos da sequência.
Inicialmente temos uma repetição para garantir que o valor digitado será maior que zero.
Uma vez que o valor digitado é maior que zero, precisamos agora verificar que valor é esse. Se for 1, nós já sabemos o primeiro terma, bastando assim imprimi-lo na tela. Da mesma forma se for 2, também já sabemos este termo bastando imprimi-lo na tela.
Contudo, se for maior que 2, precisamos então calcular este termo.
Calculamos o novo termo e salvamos na variável c. Atualizamos as variáveis a e b e incrementamos a variável contador. Isso será repetido enquanto contador for menor que n.
Quando contador for igual a n significa que o enésimo termo acabou de ser calculado e está nas variáveis b e c. Basta imprimir o valor de uma dessas variáveis.
programa{ funcao inicio(){ inteiro a = 0, b = 1, c = 0, n, contador = 2 faca{ escreva("Qual número deseja calcular? ") leia(n) }enquanto(n < 1) se(n == 1){ escreva("0\n") } senao{ se(n == 2){ escreva("1\n") } senao{ enquanto(contador < n){ c = a + b a = b b = c contador++ escreva(c, ", ") } escreva("\nO ", n, "º termo é: ", c, "\n") } } } }