Programação Java: Apostila de Java, módulo do curso Variáveis primitivas e Controle de Fluxo Tipos primitivos e valores

Linguagem Java , Programação Java, Java Curso gratis. Nesse artigo iremos comentar e resolver os exercícios propostos no módulo do curso, sobre Variáveis primitivas e Controle de Fluxo Tipos primitivos e valores da apostila FJ-11: Java e Orientação a Objetos, da IBM.
Clique aqui para saber sobre a IBM e sua apostila .

Clique aqui para baixar a apostila .
Recomendamos que tentem ao máximo resolver os exercícios, e só quando conseguir (ou depois de MUITO tentar) veja o código. Caso tenha dificuldades, veja a Solução, que conterá uma explicação a respeito do código, e tente criar seu código.

Programação é criatividade, logo existem mais de uma solução para o mesmo exercício.

Página 30, Exercício 3.3: Variáveis e Tipos primitivos

Enunciados

QUESTÃO 1:

Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada mês. Para fechar o balanço do primeiro trimestre, precisamos somar o gasto total. Sabendo que, em Janeiro, foram gastos 15000 reais,

em Fevereiro, 23000 reais e em Março, 17000 reais, faça um programa que calcule e imprima o gasto total

a) Crie uma classe chamada BalancoTrimestral com um bloco main, como nos exemplos anteriores;

b) Dentro do main (o miolo do programa), declare uma variável inteira chamada gastosJaneiro e

inicialize-a com 15000;

c) Crie também as variáveis gastosFevereiro e gastosMarco, inicializando-as com 23000 e 17000, respectivamente, utilize uma linha para cada declaração;

d) Crie uma variável chamada gastosTrimestre e inicialize-a com a soma das outras 3 variáveis:

int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;

e) Imprima a variável gastosTrimestre.

QUESTÃO 2:
Adicione código (sem alterar as linhas que já existem) na classe anterior para imprimir a média mensal
de gasto, criando uma variável mediaMensal junto com uma mensagem. Para isso, concatene a String
com o valor, usando “Valor da média mensal = ”+ mediaMensal.

Soluções

QUESTÃO 1:
Esse exemplo é bem simples e não há muito o que explicar, o passo-a-passo do enunciado é bem claro.
Mostramos uma maneira diferente de declarar várias variáveis do mesmo tipo (no caso, inteiro), bastante organizada e muito utilizada por programadores.

Ao invés de:
int variavel1;
int variavel2;

Fizemos:
int variavel1,
     variavel2;

<input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />

    </div>

    <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> BalancoTrimestral {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> gastosJaneiros = 15000,<br />            gastosFevereiro = 23000,<br />            gastosMarco = 17000;<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> gastosTrimestre = gastosJaneiros + gastosFevereiro + gastosMarco;<br /><br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(gastosTrimestre);<br /><br />    }<br /><br />}<br /></pre>
  </div>
</div>

QUESTÃO 2:
Como no trimestre há 3 meses, apenas temos que dividir o valor de ‘gastosTrimestre’ por 3 para obter a média mensal.

<input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />

    </div>

    <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> BalancoTrimestral {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> gastosJaneiros = 15000,<br />            gastosFevereiro = 23000,<br />            gastosMarco = 17000;<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> gastosTrimestre = gastosJaneiros + gastosFevereiro + gastosMarco;<br /><br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(gastosTrimestre);<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> mediaMensal = gastosTrimestre/3;<br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(<span style="color: #2a00ff;">"Valor da média mensal = "</span>+ mediaMensal);<br /><br />    }<br /><br />}<br /></pre>
  </div>
</div>



Página 40, Exercício 3.13: Fixação de Sintaxe

Enunciados

QUESTÃO 1:
Imprima todos os números de 150 a 300.

QUESTÃO 2:
Imprima a soma de 1 até 1000.

QUESTÃO 3:
Imprima todos os múltiplos de 3, entre 1 e 100.

QUESTÃO 4:
Imprima os fatoriais de 1 a 10.
O fatorial de um número n é n * n-1 * n-2 … até n = 10. Lembre-se de utilizar os parênteses.
O fatorial de 0 é 1
O fatorial de 1 é (0!) * 1 = 1
O fatorial de 2 é (1!) * 2 = 2
O fatorial de 3 é (2!) * 3 = 6
O fatorial de 4 é (3!) * 4 = 24

Faça um for que inicie uma variável n (número) como 1 e fatorial (resultado) como 1 e varia n de 1 até 10:

int fatorial = 1;
for (int n = 1; n }

QUESTÃO 5:
No código do exercício anterior, aumente a quantidade de números que terão os fatoriais impressos, até 20, 30, 40. Em um determinado momento, além desse cálculo demorar, vai começar a mostrar respostas completamente erradas. Por quê? Mude de int para long, e você poderá ver alguma mudança.

QUESTÃO 6: 
Imprima os primeiros números da série de Fibonacci até passar de 100. A série de Fibonacci é a seguinte: 0,1,1,2,3,5,8,13,21, etc… Para calculá-la, o primeiro elemento vale 0, o segundo vale 1, daí por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento (ex: 8= 5 + 3).

QUESTÃO 7: 
Escreva um programa que, dada uma variável x (com valor 180, por exemplo), temos um novo
x de acordo com a seguinte regra:
• se x é par, x = x / 2
• se x é impar, x = 3 * x + 1
• imprime x
• O programa deve parar quando x tiver o valor igual a 1. Por exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> ˜8 -> 4 -> 2 -> 1

QUESTÃO 8: 
Imprima a seguinte tabela, usando fors encadeados:
1
2 4
3 6 9
4 8 12 16
n n*2 n*3 …. n*n

Clique aqui para aprender sobre o laço for em Java.
Clique aqui para aprender sobre o laço while em Java.

<

p>

<h3>
  <span style="font-size: large;">Soluções</span>
</h3>

<p>
  <b><span style="color: red;">QUESTÃO 1:</span></b><br />O que fizemos foi usar a variável &#8216;numero&rsquo; iniciar em 150 e terminar em 300.<br />Dentro do for fazemos ela começar em 150, terminar em 300 e ser incrementada em 1, cada iteração.
</p>

<p>
  No laço while, a idéia é semelhante. Porém a variável tem que ser inicializada antes do laço, e ser incrementada dentro do próprio laço while.
</p>

<p>
  Usando o laço for:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM1 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero;<br /><br /><span style="color: #7f0055; font-weight: bold;">for</span>(numero = 150 ; numero             <span style="color: #7f0055; font-weight: bold;">System</span>.out.println(numero);<br />        }<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  Usando o laço while:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM1 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero=150;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>(numero            <span style="color: #7f0055; font-weight: bold;">System</span>.out.println(numero);<br />            numero++;<br />        }<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  <b><br /></b><b><br /></b><b><span style="color: red;">QUESTÃO 2:</span></b><br />Definimos duas variáveis inteiras, a &#8216;numero&rsquo; que irá percorrer do número 1 até 1000. A variável &#8216;soma&rsquo; é inicializada em 0 e servirá para armazenar o valor de todos os números, de 1 até 1000.<br />Isso acontece no código: soma = soma + numero;<br />Ou seja, o valor da variável &#8216;soma&rsquo; é seu antigo valor somado com o valor da variável &#8216;numero&rsquo;.
</p>

<p>
  Usando o laço for:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM2 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero,<br />            soma=0;<br /><br /><span style="color: #7f0055; font-weight: bold;">for</span>(numero = 1 ; numero             soma = soma + numero;<br />        }<br /><br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(<span style="color: #2a00ff;">"Soma: "</span>+soma);<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  Usando o laço while:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM2 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero=1,<br />            soma=0;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>(numero            soma = soma + numero;<br />            numero++;<br />        }<br /><br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(<span style="color: #2a00ff;">"Soma: "</span>+soma);<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  <b><span style="color: red;">QUESTÃO 3:</span></b><br />Assim como nos exemplos anteriores, vamos usar a variável inteira &#8216;numero&rsquo; para percorrer do número 1 até 100. Porém, não vamos imprimir todos os números, somente os que são divisíveis por 3.
</p>

<p>
  Para tal, vamos usar o teste condicional if else , que fará com que somente os números que deixam resto 0 na divisão por 3: <span style="background-color: white;">numero % 3 == 0</span><br /><span style="background-color: white;"> Clique aqui para estudar o símbolo % (módulo ou resto da divisão). </span>
</p>

<p>
  Assim, colocamos o print dentro dos colchetes do <i>if</i>, para que somente os número divisíveis por 3 que sejam impressos na tela.<br />Note que no laço while, o incremento (numero++) é feito fora do teste condicional <i>if</i>, pois a variável deve crescer sempre, não somente &#8216;numero&rsquo; for divisível por 3.
</p>

<p>
  Usando o laço for:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM3 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero;<br /><br /><span style="color: #7f0055; font-weight: bold;">for</span>(numero = 1 ; numero             <span style="color: #7f0055; font-weight: bold;">if</span>( numero%3 == 0){<br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(numero);<br />            }<br />        }<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  Usando o laço while:
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM3 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> numero=1;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>(numero             <span style="color: #7f0055; font-weight: bold;">if</span>( numero%3 == 0){<br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(numero);<br />            }<br />            numero++;<br />        }<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  <b><span style="color: red;">QUESTÃO 4:</span></b><br />Essa questão é bem interessante! O segredo dela é dado no próprio enunciado.<br />Por exemplo, 5! = 5x4x3x2x1 , ok?<br />Se você é iniciante e tentou, provavelmente fez assim. Porém isso não é necessário.<br />Porque calcular tudo isso se você, ao calcular &#8216;5!&rsquo; já possui o valor de &#8216;4!&rsquo;?
</p>

<p>
  Inicialmente fazemos fatorial=1<br />Essa variável, como o próprio nome diz, irá armazenar o valor dos fatoriais de 1 até 10.<br />A chave de tudo é o: <span style="color: red;">fatorial = fatorial * n</span><br />Essa linha diz: o novo valor de &#8216;fatorial&rsquo; é o valor antigo dessa variável que é (fatorial-1)! multiplicado por um número &#8216;n&rsquo;, onde esse n vai de 1 até 2.
</p>

<p>
  Ora, inicialmente fazemos fatorial=1.<br />Então a primeira iteração é: fatorial = (1!) * 1 = 1<br />Depois, para n=2: fatorial = (1!) * 2 = 2!<br />Para n=3: fatorial = (2!) * 3 = 3!<br />Para n=4: fatorial = (3!) * 4 = 4!<br />&hellip;<br />Para n=10: fatorial = (9!) * 10 = 10!
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBMFatorial {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><br /><span style="color: #7f0055; font-weight: bold;">int</span> n,<br />            fatorial=1;<br /><br /><span style="color: #7f0055; font-weight: bold;">for</span>(n=1 ; n            fatorial = fatorial * n;<br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println(<span style="color: #2a00ff;">"O fatorial de "</span>+ n + <span style="color: #2a00ff;">" é ("</span> +(n-1)+<span style="color: #2a00ff;">"!) * "</span>+n+<span style="color: #2a00ff;">" = "</span>+fatorial);            <br />        }<br /><br />    }<br /><br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
</p>

<h3>
</h3>

<p>
  <b><span style="color: red;">QUESTÃO 5:</span></b><br />Fatorial é um cálculo um pouco trabalhoso para o Java, pois é um número que cresce assustadoramente.<br /> Segundo a documentação oficial , a variável do tipo <i style="font-weight: bold;">int</i> pode variar de -2.147.483.648 até o máximo 2.147.483.647
</p>

<p>
  Note que:<br />12! = 479.001.600<br />13! = 6.227.020.800
</p>

<p>
  Ou seja, até n=12, tudo ok. Passou disso, o Java imprime valores errados, pois extrapola o máximo que a variável inteira pode suportar.
</p>

<p>
  Já o tipo <i style="font-weight: bold;">long</i> pode armazenar inteiros de tamanho até 9.223.372.036.854.775.807<br />Ou seja, suporte até 20! = 2.432.902.008.176.640.000
</p>

<p>
  <b><span style="color: red;">QUESTÃO 6: </span></b><br />Vamos chamar o n-ésimo termo da série de &#8216;numero&rsquo;, o (n-1)-ésimo termo de &#8216;ultimo&rsquo; e o (n-2)-ésimo de &#8216;penultimo&rsquo;.<br />Assim, temos a fórmula geral: <span style="color: red;">numero = ultimo + penultimo;</span><br /><span style="color: red;"><br /></span>Até aqui, sem segredos. Imprimimos o &#8216;numero&rsquo; e tudo ok.<br />O problema é na hora de descobrir o próximo número.
</p>

<p>
  Para calcularmos o próximo termo da série (&#8216;numero&rsquo;), temos que mudar os valores de &#8216;ultimo&rsquo; e &#8216;penultimo&rsquo;.<br />Para tal, o valor de &#8216;penultimo&rsquo; agora será o valor de &#8216;ultimo&rsquo;, e o valor de &#8216;ultimo&rsquo; será agora o valor de &#8216;numero&rsquo;. Após fazer isso, podemos calcular o novo valor de &#8216;numero&rsquo;, que é &#8216;ultimo + penultimo&rsquo;.
</p>

<p>
  Por exemplo, chegamos em um ponto que:<br />numero = 21<br />ultimo = 13<br />penultimo = 8
</p>

<p>
  Para calcular o próximo termo, fazemos &#8216;penultimo=ultimo&rsquo;, ou seja, agora:<br />penultimo = 13<br />Analogamente, fazemos &#8216;ultimo=numero&rsquo;, e temos:<br />ultimo=21
</p>

<p>
  De posse desses novos valores, temos o novo valor de &#8216;numero&rsquo;, que é: 21 + 13 = 34, que é o próximo termo da série.
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBMFibonacci {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><span style="color: #7f0055; font-weight: bold;">int</span> numero, <br />            ultimo=1, <br />            penultimo=0;<br /><br />        numero = ultimo + penultimo;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>(numero            <span style="color: #7f0055; font-weight: bold;">System</span>.out.println(numero);<br /><br />            penultimo=ultimo;<br />            ultimo=numero;<br />            numero = ultimo + penultimo;<br /><br />        }<br />    }<br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  <b><span style="color: red;">QUESTÃO 7:</span></b><br />A primeira coisa a se fazer é declarar o inteiro &#8216;x&rsquo; e inicializá-lo com algum valor (13, por exemplo).<br />Após isso, o aplicativo entra um loop através do laço <i style="font-weight: bold;">while</i>, que só termina quando x for 1.<br />Fazemos isso assim: while( x !=1 )<br />Isso quer dizer: &ldquo;enquando x não for 1, continue nesse looping&rdquo;.
</p>

<p>
  A cada iteração, o valor de x irá mudar.<br />Se x for par, ele mudará seu valor para &#8216;x/2&rsquo;, e caso seja ímpar mudará seu valor para &#8216;3*x + 1&rsquo;.
</p>

<p>
  Para controlar como ocorrerão essas mudanças de valores, vamos usar o teste condicional if else.<br />Vamos checar se x é par através do seguinte código: if ( x % 2 == 0)<br />Ou seja, se x deixa resto 0 na divisão de por 2, é porque x é par.<br />Se isso for verdade, x assumirá a metade de seu valor: x = x/2;
</p>

<p>
  Mas ora, um número só poderá ser par ou ímpar. Se o if for falso, é porque o número é impar e o que vai ocorrer nesse caso será o que está dentro do bloco do <i style="font-weight: bold;">else </i>: x = 3*x + 1
</p>

<p>
  Após cada mudança, apenas imprimimos o valor de x.
</p>



    <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
  </div>





        </div>

        <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM7 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><span style="color: #7f0055; font-weight: bold;">int</span> x=13;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>(x != 1){<br /><span style="color: #7f0055; font-weight: bold;">if</span>( x%2== 0){<br />                x = x/2;<br />            } <span style="color: #7f0055; font-weight: bold;">else</span> {<br />                x = 3*x +1;<br />            }            <br /><br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.print(<span style="color: #2a00ff;">" -&gt; "</span>+x);<br />        }<br />    }<br />}<br /></pre>
      </div>
    </div>
  </div>
</div>

<p>
  <b><span style="color: red;">QUESTÃO 8: </span></b><br />Como é pedido, vamos usar dois laços <i style="font-weight: bold;">for</i> para resolver essa questão. O primeiro laço é para controlar quantas linhas existem no nosso resultado final. Assim, se n=5, existirá 5 linhas.<br />O segundo laço vai imprimir o resultado de cada linha, suas colunas.<br />Assim, se n=5, o resultado é: 5*1 5*2 5*3  5*4  5*5 <br />Ou seja, a linha é a 5, e as colunas são 1, 2, 3, 4, e 5 (sempre variam de 1 até o valor da linha).
</p>

<p>
  O grande segredo de tudo é revelado na última linha do enunciado: n*1   n*2   n*3 &hellip;. n*n<br />Essa é a fórmula geral. Onde &#8216;n&rsquo; é a linha atual, e em cada linha é impresso o produto de &#8216;n&rsquo; por um número que varia de 1 até o próprio valor da linha, o &#8216;n&rsquo;. Construímos isso com os laços <i style="font-weight: bold;">for</i> encadeados:
</p>

<p>
  <span style="color: red;">        for(linha=1 ; linha <br /><span style="color: red;">            for(coluna=1 ; coluna <br /><span style="color: red;">                System.out.print(linha*coluna + &ldquo; &rdquo;);</span><br /><span style="color: red;">            }</span><br /><span style="color: red;">            System.out.println();</span><br /><span style="color: red;">        }</span><br /><span style="color: red;"><br /></span>Após cada linha ser expressa (ou seja, após cada iteraçao do primeiro laço, temos que imprimir uma quebra de linha, por isso o <i>println</i> ali no final.</p> 



      <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
    </div>





          </div>

          <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM8 {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><span style="color: #7f0055; font-weight: bold;">int</span> n=5,<br />            linha,<br />            coluna;<br /><br /><span style="color: #7f0055; font-weight: bold;">for</span>(linha=1 ; linha             <span style="color: #7f0055; font-weight: bold;">for</span>(coluna=1 ; coluna                 <span style="color: #7f0055; font-weight: bold;">System</span>.out.print(linha*coluna + <span style="color: #2a00ff;">" "</span>);<br />            }<br /><span style="color: #7f0055; font-weight: bold;">System</span>.out.println();<br />        }<br /><br />    }<br />}<br /></pre>
        </div>
      </div>
    </div>
  </div>

  <p>
  </p>

  <h2>
    <span style="font-size: x-large;">Página 41, Exercício 3.14 Desafios: Fibonacci</span>
  </h2>

  <p>
    <span style="color: red;"><b>QUESTÃO 1:</b></span><br />Faça o exercício da série de Fibonacci usando apenas duas variáveis.
  </p>

  <p>
    <b>Solução:</b><br />Essa questão é um pouco mais complicada, vai precisar de conhecimentos em Programação e um pouco de Matemática, mas não deixa de ser simples e engenhosa.
  </p>

  <p>
    Na seção passada usamos três variáveis: &#8216;numero&rsquo;, &#8216;ultimo&rsquo; e &#8216;penultimo&rsquo;, para descrever o n-ésimo, (n-1)-ésimo e o (n-2)-ésimo termo, respectivamente.<br />Vamos excluir a variável &#8216;numero&rsquo;, e trabalhar somente com o &#8216;ultimo&rsquo; e &#8216;penultimo&rsquo;.
  </p>

  <p>
    Vamos supor que em um determinado ponto temos:<br /><span style="color: red;">ultimo=5</span><br /><span style="color: red;">penultimo=3</span>
  </p>

  <p>
    É fácil ver que o próximo termo é sempre (ultimo + penultimo), que nesse caso é 8.<br />Nosso objetivo então é fazer com que as variáveis tenham o valor ultimo=8 e penultimo=5, concorda?
  </p>

  <p>
    Para que consigamos gerar mais números de Fibonacci, fazemos com que &#8216;ultimo&rsquo; receba seu antigo valor somado com o valor de &#8216;penultimo&rsquo;, pois assim a variável &#8216;ultimo&rsquo; terá a soma dos dois números anteriores, como diz a regra de Fibonacci. Em Java, fica assim:<br /><span style="color: red;">ultimo = ultimo + penultimo</span>
  </p>

  <p>
    Agora ultimo = 8, e penultimo = 3.<br />Nosso objetivo agora é fazer com que penultimo receba o valor 5. Mas como, se nenhuma das variáveis possui valor 5? De onde obter esse valor?<br />De uma relação matemática da série de Fibonacci! Note que sempre: <span style="color: red;">ultimo = numero penultimo</span><br />Veja como obter 5:  5 = 8 -3 , ou seja, é o novo valor de &#8216;ultimo&rsquo; subtraído do atual valor de &#8216;penultimo&rsquo;.
  </p>

  <p>
    Em Java fica assim: <span style="color: red;">penultimo = ultimo penultimo</span>
  </p>


    <img border="0" height="144" src="http://localhost/www/jar_java/uploads/Desafio_IBM_Fibonacci.png" width="640" />
  </div>

  <p>
    Veja como fica o resultado:
  </p>



      <input onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Código Java'; }" style="font-size: 12px; margin: 0px; padding: 0px; width: 75px;" type="button" value="Código Java" />
    </div>





          </div>

          <pre style="background: #ffffff; color: black;"><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">class</span> IBM_Desafio_Fibonacci {<br /><br /><span style="color: #7f0055; font-weight: bold;">public</span> <span style="color: #7f0055; font-weight: bold;">static</span> <span style="color: #7f0055; font-weight: bold;">void</span> main(<span style="color: #7f0055; font-weight: bold;">String</span>[] args) {<br /><span style="color: #7f0055; font-weight: bold;">int</span> ultimo=1, <br />            penultimo=0;<br /><br /><span style="color: #7f0055; font-weight: bold;">while</span>( (ultimo + penultimo)             <span style="color: #7f0055; font-weight: bold;">System</span>.out.println(ultimo + penultimo);<br /><br />            ultimo = ultimo + penultimo;<br />            penultimo = ultimo penultimo;<br />        }<br /><br />    }<br />}<br /></pre>
        </div>
      </div>
    </div>
  </div>

  <p>
    </span></span>
  </p>

Tags: java, linguagem java