Pascal – O básico – Desafio Fibonacci
22, abril 2007 at 9:47 pm 16 comentários
Segue desafio da seqüência de Fibonacci. Se alguém tem um algoritmo mais eficaz, mandem aí! Gostaria de comparar com outras resoluções.
Program DesafioFibonacci; Uses crt; Var x, y, z : integer; Begin ClrScr; WriteLn('Sequencia de Fibonacci menor que 50'); x:=0; y:=1; z:=1; repeat Write(x,' '); x:=y; y:=z; z:=x+y; until x>50; ReadKey; End.
Abraços galera.
Entry filed under: CEFET, Estudos, FATEC, Pascal, Software, Tecnologia.
16 Comentários Add your own
Deixar mensagem para Oscar Bergamo Jr Cancelar resposta
Trackback this post | Subscribe to the comments via RSS Feed
1. Tiago MAC | 23, abril 2007 às 11:54 am
Olá, dei muitos códigos como esse na faculdade, mas hoje em dia já me “aposentei” do pascal… *rs, acontece quando nos deparamos com java…
pelo que vi o codigo esta bom, pela net também é possível encontrar alguns outros códigos tanto para fibonacci como para cálculo de P.I e outros algoritmos, lembro que teve um para achar números primos que me deu trabalho *rs!
vlw, um forte abraço.
2. Victor de Souza Couto | 23, abril 2007 às 5:06 pm
Olá Tiago,
eu estou estudando Pascal e Java nesse momento. Linguagens incomparáveis. Acredito que em breve só apareceram exemplos em Java no meu blog!
Vou tentar fazer um algoritmo para encontrar números primos. 😉
Até mais.
3. Jean Pierre | 19, maio 2007 às 3:56 am
Olá Victor, gostei muito de seu blog. Ele parece abordar dos mais variados temas relacionados a informática, isso, é bastante interessante! Porém como todo atrapalhado da informática, gostaria de saber se existe uma maneira mais fácil do que essa para fazer o desafio de Fibonacci.
desde já protesto manifestos de agradecimento,
Jean
4. Victor de Souza Couto | 19, maio 2007 às 4:04 am
Dalhe Jean,
tudo ok?
acredito que essa seja uma das formas mais simples de calcular a seqüência de Fibonacci.
Chegamos a realizar o desafio com o “WHILE”, mas mesmo assim não muda em nada na lógica do programa.
Acredito que chegamos na forma mais simplificada. Nada impede de continuarmos tentando simplificar mais ainda.
HeHe
Abraços Jean.
5. Rodrigo Fante | 6, julho 2007 às 7:08 am
Caraca, Pascal, me lembrei agora do primeiro ano de quando fazia faculdade ainda…
Era Pascal na veia.. ahahahhaha
Quanto tempo n via isso…
Muito bom.. flww
6. Felipe | 5, outubro 2007 às 1:46 am
A solução recursiva é mais elegante.
function fibonacci ( num : longint) : longint;
begin
if ( num <= 2 ) then
fibonacci := 1
else
fibonacci := fibonacci (num – 1) + fibonacci (num – 2);
end;
ainda pode ser calculada pela fórmula de Binet….
abraço
7. Anserson | 14, março 2008 às 3:20 pm
Espero q ajude
Program ExemploPzim ;
Var anterior1, anterior2, proximo: integer ;
i: integer ;
N: integer;
Begin
// Solicita o número de elementos da série
write(‘Informe o valor de N: ‘);
readln(N);
// Imprime primeiros dois elementos da série
anterior1:=1;
anterior2:=1;
write(‘1 1’);
// Cálculo da série
i:=3;
while ( i <= N ) do begin
proximo:= anterior1 + anterior2;
write(‘ ‘, proximo);
anterior2:= anterior1;
anterior1:= proximo;
i:= i+1;
end;
End.
8. codigosfonte | 16, abril 2008 às 8:30 pm
Ouço muito falar de fibonacci. Pelo código parece um programa bem simples. Porém você conhece algum site que explique a teoria de fibonacci? Um abraço.
9. Josi | 25, maio 2008 às 11:39 am
Humm.. Ola.. nao sei como fica em pascal..Mas a logica é simples…
A<—0
B<—1
Leia N
Imprima A,B
para i <– 1 ate n – 2 faça
c<— a+b
Imprima C
A<—B
B<—C
10. Fruggerr | 29, janeiro 2009 às 8:42 pm
//Programa que faz o Fibonacci até 15.
program Fibonacci;
uses crt;
var
i,num1,num2,soma:integer;
begin
num1:=0;
num2:=1;
writeln(‘# Programa Fibonacci para 15 termos. #’);
writeln(num1);
writeln(num2);
for i:=1 to 15 do
begin
soma:=num1+num2;
writeln(soma);
num1:=num2;
num2:=soma;
end;
readkey;
end.
11. rafael | 25, julho 2009 às 4:33 pm
Program Pzim ;
var
fibo1,fibo_1,fibo0,rep,b:integer;
Begin
fibo1:=1;
fibo_1:=1;
fibo0:=0;
write(‘digite a quantidade de sequencia fibonacci que voce deseja calcular!!’);
read(rep);
for b:=0 to rep do
begin
fibo0:=fibo1;
fibo1:=fibo_1;
fibo_1:=fibo1+fibo0;
write(fibo0,’ ‘);
end;
End.
12. Fabio Luna Goncalves | 13, abril 2011 às 2:23 am
program fribonacci;
uses crt;
var ni,i, ni1,ni2, n: integer;
begin
clrscr;
writeln(‘Digite o numero de fribonaci’);
readln(n);
ni:=0;
ni1:=1;
ni2:=0;
write(ni,’ ‘);
ni:=1;
for i:= 1 to n do
begin
write(ni,’ ‘);
ni:= ni1+ni2;
ni2:= ni1;
ni1:=ni;
end;
readln;
end.
Outro dia fui fazer a prova e nao consegui porem utilizando o pascal eu fiz rapidinho em casa, bom, estava sem pressao.
este ai ficou show.
13. Carlos Junior | 8, junho 2011 às 4:55 pm
Então eu gostaria de saber se alguem ae pode me mostra um exemplo de como ficaria com um procedimento recursivo que mostre ate o vigésimo termo na serie de Fibonacci. obrigado desde jah!
14. Rute | 27, maio 2012 às 2:27 am
Galera
gostaria de saber quem saber responde este problema em pascal por que eu já tentei mas não deu certo.
Desafio tem que ser em pascal.
desde já agradeço.
Nosso desafio, duas explicações para o mesmo problema:
– Problema de Josephus. Imagine que temos *n* pessoas dispostas em
círculo. Suponha que as pessoas estão numeradas 1 a *n* no sentido
horário. Começando com a pessoa de número 1, percorra o círculo no
sentido horário e elimine cada m-ésima pessoa enquanto o círculo tiver
duas ou mais pessoas. Qual o número do sobrevivente?
– PROBLEMA DE JOSEPHUS – Soldados cercados pelo inimigo decidem que um
deles deve tentar escapar para buscar reforços usando o único cavalo
disponível. Forma-se um círculo (lista circular), sorteia-se um número e se
começa a contar os nós da lista até que se chegue ao número escolhido.
Quando o soldado (nó) é retirado. O processo reinicia e continuará se
repetindo até que um último soldado seja o escolhido.
Existem várias maneiras de resolver o problema acima. Vamos utilizar lista
encadeada para a solução, o sorteio do dado(valor de m) será um numero
informado pelo usuario (lido do teclado).
Imaginem que vamos inserir normalmente os nomes dos soldados através do
inserir, quando o método (procedimento a ser criado josephus for chamado,
deve ser passado o valor do sorteio do dado, para eliminar alguem da lista
circular.
15. Rute | 27, maio 2012 às 2:29 am
Se conseguirem vou dica este site para muitos amigos que não conseguem fazerem este desafio.
o desafio esta lançado.
16. Oscar Bergamo Jr | 23, fevereiro 2014 às 9:33 pm
Segue uma forma de utilizar recursividade…
function Fibonacci(N: Word): UInt64;
begin
if N < 2 then
Result := N
else
Result := Fibonacci(N – 1) + Fibonacci(N – 2);
end;