Estou começando agora a programar, já li varias vezes o tutorial da Caelum…ao menos umas 5 vezes ele todo
Estou lendo agora sobre, lógica de programação, sei qeu juntando tudo ate agora só fiz isso:
No tutorial da Caelum tem exercicios, um ate agora dificil é esse: Imprimir os numeros de Fibonacci de 0 a 100, usando somente
duas variaveis. Só queria esclrecer duvidas, eles dizem duas variaveis, tenho a variavel “i” mas so no contador, ou isso não vale?
E tb pq meu código não para quando chega no 1oo? for (i = 0; i < 100; i++)
Agradeço qualquer ajuda pra entender o que está acontecendo neste pequeno código.
PS: isso e dificil mesmo de fazer, ou eu ainda sou muio leigo mesmo em lógica de programação?
Não, queria que ele imprimisse a sequencia do Fibonaci, que seria: 0-1-1-2-3-5-8-13-21-34-55-89.
M
mouzer
coloca o enunciado do exercicio ai
J
javaini
ah, ele tb não parou no 99 com esse exemplo acima, a sequenci dos numeros começa com o zero, ai soma com o “1” e sai o primeiro resultado, 1, como esta acima 0+1=1
acima esta 0-1-1, seguinte 1+1=2, seguinte 2+1=3
ai formamos a sequencia: 0-1-1-2-3-5…
ai obrigado o contador parou no 100, deixa eu ver agora se consigo o codigo da maneira certa, qualqeur coisa volto aqui, senão vc me entrega ele pronto rsrsrsr, mas so pode me responder: eles qeurem qeu seja somente duas variaveis, a do contador tb é variavel, será qeu vale, pq ai teria 3, o exercico diz claramente , somente duas variaveis
B
Binnho
Tenta assim, eu não tive como testar pois estou sem eclipse aqui!
Posso estar enganado, mas vc colocou um array nisso aqui?
Bom se foi, ainda bem…pq pra mim não serve, nem qeu ele funcione…desculpe estar sendo rude, mas não qeuro o código pronto, queria que alguem pudesse comentar meu primeiro código lá em cima, isso pra mim seria de grande ajuda, tentei entender o pq ele está fazendo da maneira com está, mas mesmo colocando em papel, ele me pareceu confuso, pq pelo qeu vi ele teria qeu parar em 100 como esta no contador, mas não para, ah so pra saber tenho qeu fazer isso somente com if e for… obrigado pela ajuda
adriano_si
javaini:
Posso estar enganado, mas vc colocou um array nisso aqui?
Bom se foi, ainda bem…pq pra mim não serve, nem qeu ele funcione…desculpe estar sendo rude, mas não qeuro o código pronto, queria que alguem pudesse comentar meu primeiro código lá em cima, isso pra mim seria de grande ajuda, tentei entender o pq ele está fazendo da maneira com está, mas mesmo colocando em papel, ele me pareceu confuso, pq pelo qeu vi ele teria qeu parar em 100 como esta no contador, mas não para, ah so pra saber tenho qeu fazer isso somente com if e for… obrigado pela ajuda
Cara, parabéns pela atitude de querer aprender, mas realmente tá faltando um pouco de lógica pra você…
Seu for está executando exatamente 100 vezes, nada a mais e nada a menos que isso… o que acontece é que logo no inicio você faz um IF e verifica se X é menor ou igual a 0 e se for, você imprime 0…
Em determinado momento ocorre que essa expressão y = x - y; vai gerar um número negativo que fará com que essa expressão x = x + y; também deixa x < 0, logo ele está imprimindo mais linhas do que o comum… meus 2 cents de contribuição…
classTeste3{// teste3 diferente de Teste3... comece a usar a convenção Java para nomear suas classespublicstaticvoidmain(String[]args){intx=0;inty=1;// tirei a declaração de int i daqui e coloquei dentro do for, fica mais simples de ler e deixa i como variavel de escopo do laço; for(inti=0;i<100;i++){if(x<=0)System.out.println("0");x=x+y;y=x-y;System.out.println(x);System.out.println("i:"+i);// aqui só mandei imprimir o i pra vc poder ver o contador executando apenas de 0 - 99, ou seja, 100 vezes}}}
adriano_si
cara… fazendo uns testes nos teus códigos, verifiquei que com as 100 posições será impossível fazer Fibonacci com tipo int…
Dica: int tem o tamanho de 32 bits e tem um intervalo que vai de -x até x, logo se teu numero ultrapassar os bits desse valor, o proximo bit começa a afetar o sinal do teu número…
Bons estudos…
PS: se desistir tenho o código pronto… tá igual o teu, só tem 2 diferenças…
[EDIT] - ou seja, não estava faltando lógica pra você… heueheue
Anime
Oi javaini,
Será que é isso que você quer…testa ai… :roll:
importjavax.swing.JOptionPane;classfibonacci{publicstaticvoidmain(Stringargs[]){inti,num_anterior,num_atual,novo_numero;num_anterior=0;num_atual=1;Stringmensagem=" O 1- numero fibonacci 1\n";for(i=2;i<=100;i++){novo_numero=num_atual+num_anterior;num_anterior=num_atual;num_atual=novo_numero;mensagem=mensagem+" O "+i+". numero fibonacci e "+novo_numero+"\n";}System.out.println(mensagem);//JOptionPane.showMessageDialog(null,mensagem);}}
J
javaini
vlw ai por todos qeu ajudaram, as respotas ajudaram aqui, vou continuar com logica de programção, mas vou falr ta meio dificil, to tentando como dizem na logica, faço as coisa primeiro sem ser codigo, depois tento passar em codigo, pelo qeu dizem está certo assim, ou não, logo abre curso aqui, ai paro de encher, é qeu queria entrar lá com alguma bagagem…
J
javaini
entendi pouco mais agora, vou tentar fazer como pede o exercicio…
Anime
Isso mesmo,deve desenvolver a lógica primeiro…Você é esforçado heim,parabéns e não desista…
Me desculpe por ter entregado a resposta pronta e parabéns pela atitude de não querer código pronto.
Apenas mostrei uma forma de utilizar menos variáveis.
Anime
javaini:
Posso estar enganado, mas vc colocou um array nisso aqui?
Bom se foi, ainda bem…pq pra mim não serve, nem qeu ele funcione…desculpe estar sendo rude, mas não qeuro o código pronto, queria que alguem pudesse comentar meu primeiro código lá em cima, isso pra mim seria de grande ajuda, tentei entender o pq ele está fazendo da maneira com está, mas mesmo colocando em papel, ele me pareceu confuso, pq pelo qeu vi ele teria qeu parar em 100 como esta no contador, mas não para, ah so pra saber tenho qeu fazer isso somente com if e for… obrigado pela ajuda
Afff…que fora…não tinha lido isso…foi mal… :oops:
adriano_si
Cara… estás no caminho certo… trabalhe bem sua lógica de Programação e não desista… como te falei… você não foi no rumo errado, tava com a lógica boa para o que estava precisando (fazer Fibonacci com 2 variáveis)
Bom… a galera colocou aí com int puro… testei aqui e não funcionou, porque a partir de um determinado ponto, o valor de x estrapolava o tamnaho de um tipo int e começava a mudar o sinal do valor (não te preocupa com isso agora)… Por isso fiz assim:
Detalhe, pra poder fazer o fibonacci dos 100 primeiros números só troquei a variável de int para BigInteger
Abs
E
evefuji
eu não sei se entendi direito, mas não são os 100 primeiros números de fibonacci, são os números de fibonacci de 0 a 100.
E só para te fazer quebrar um pouco mais a cabeça, dá para fazer somente com o contador e mais uma variável (justamente por ser de 0 a 100, e não os 100 primeiros).
Para te ajudar um pouco, pensa assim, o seu contador não precisa necessariamente ser acrescentado de 1 em 1, mas pode ser acrescentado pelo valor de uma outra variável, vou dar um exemplo:
intx=0;for(inti=0; i<=100; i+=x){x++}
J
javaini
com duas variaveis e somente com if e for, fica complicado , com 3 variaveis é taõ facil,eheheheeh, ai agora chegou esse aqui qeu me diz que da pra fazer somente com uma variavel…, bom eu ainda não sei como fazer com duas, mas qeuro fazer de alguma forma, com o qeu sei ate agora, se não der certo, vou pular esse estudo e começar Array, ai quando eu estiver masi familiarizado volto aqui e faço…, mais uma vez obrigado a todos, mas olhem so assim qeu eu conseguir fazer esses exercicios volto aqui so pra postar, podem esperar…vlw
E
evefuji
javaini, nem é tão complicado assim. Olha o código que eu postei e pensa sobre ele, mudando uma instrução você consegue .
Repare que você não precisa de if.
Vamos lá, falta pouco, XD
J
javaini
eu vou tentar sim, ele tb, ja ja tenho que sair, mas vou dormir com isso na cabeça, e amanha cedo vou quebrar a cabeça com ele. vlw
J
javaini
olha inda to tentando entender em como fazer da maneira qeu vc falou, somente uma variavel, realmente não entendi como, não consigo achar uma maneira matematicamente pra somar "i"e “x” na sequencia de Fibonacci, se eu não tiver um lugar pra guardar o valor de “x” . No seu for (int i…“i+=x” aqui ele adiciona e atribui valor de x, e aqui x++, e a mesma coisa que isso: “x=x+1”, sendo assim “i” sempre vai valer : 1-2-3-4-5-6…
Mas não faça pra mim nadinha, to so mostrando qeu to tentando ainda, não desisti…Obrigado Adriano_si , Anime, evefuji…
J
javaini
Obrigado a Binnho tb, e não esquentem com as resposta que deram, to usando como modelos, ta sendo de grande ajuda, pra entender a sintaxe
Anime
Por nada…quando conseguir posta ai pra gente vê…
J
javaini
Bem, eu não sei se alguém que me ajudou aqui, ainda está interessado em saber, eu voltei nele de novo
dei uma melhorada no código (to evoluindo “acho” rs), deêm uma olhada e digam se está indo no caminho certo.
mas eu ja passei deste exercicio, to agora aprendendo programação orientada a objeto, é meio confuso entender
“classes, métodos, objetos…”, mas seguindo agora direitinho a apostila, to fazendo uma conta de banco (ja devem ter passado por isso rs),
ja tenho a classe conta, a classe conta, já faz saques e depósitos, agora vou fazer a classe cliente…depois ainda não sei o que vou fazer,
mas estamos indo, espero qeu bem, meus códigos agora estão até mais bonitinhos, até eu to entendendo rsrs…
Obrigado anime, pela força