aula 79

Exercício 5 | Imprimir o enésimo termo da sequência de Fibonacci com Portugol

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")
			}
		}
	}
}


Deixe um comentário

dez − oito =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.