0

Você sabe viajar na memória com Loops?

Lucio Sousa
Lucio Sousa

Você sabe Loops? Ou já caiu em um Loop temporal da morte?


Quando eu era professor de Matemática, adorava pensar em problema e como resolve-los, hoje estou em migração de carreira, ou tentando (espero que a idade permita ainda! hehehe!)


Mas vamis lá, me ví pensando em como resolver problemas de computação em uma ferramenta que sempre me trouxe

dúvidas, os Loops.


Quem dera-me fossem apenas um fenômenos de viagem no tempo ou temas para vídeo-games.


Não vou entrar no mérito e explicar a você o que é um Loop, se chegou até aqui é porque o título tenha chamado sua curiosidade.


Conte de um até N(vamos supor que N é cinco, você pode usar o Scanner para definir seu limite).


Quero mostrar o resultado de forma decrescente, como resolvi:


Bem, queria fazer de várias maneiras usando loops. Sempre tive dificuldades com o for, depois que aprendi o for, o while entrou em desuso

para mim, como sempre programei em linguagem C devido a eletrônica, fiquei preguiçoso, mas vamos lá.


Resolvendo usando for:


for (int i = 5 ; i > 0 ; i--) {

System.out.println(i);

}

Parece trivial e de certa forma o é, mas tive que escrever no papel (mania de matemática) para entender o problema e depois passar para 

o código.


E usando o While?


int j = 4;

while((j >= 0) && (j <= 4)) {

System.out.println(j--);

}


A coisa meio que mudou de figura, pois tive que definir um limite para os números (viva [0:4]) quem passou no ensino médio entenderá a referência.


Mas não desisti, ficar fazendo códigos com números bobinhos não pode ser o supra sumo da questão, vamos incrementar um pouco mais.


E se eu quizesse a soma de todas as iterações de uma faixa de números e depois dividir essa soma. Aliás, algoritmo muito utilizado 

em estatística.


Primeiro vamos realizar uma somatória simples. Aqui estou utilizando um numero absoluto, mas poderia fazer com a fórmula de desvio padrão que funcionaria de boas.


for (int i = 0; i < 5 ; i++) {

soma = soma + i;

// System.out.println(soma);

}

System.out.println("A soma total foi: " + soma);

Vou deixar o comentário para que possa testar.


Não feliz, fiz com o while.


int soma = 0;

int x = 0;

while(x < 5) {

soma = soma + x;

x++;

}

System.out.println("A soma total foi: " + soma + " com limite máximo de " + x);

Legal, até aqui estava pegando a manha da coisa(tudo bem, ninguém mais fala manha e sei que sou cringe, mas vambora)!

Fazer da forma abaixo também rola, mas não é uma boa prática, então recomendo sempre a utilizar o padrão onde todos possam trabalhar com harmonia.

int soma = 0;

for (int i = 1; i < 5 ; soma += i++);

System.out.println("Total: " + soma);


Bom, fiz algo um pouco mais elaborado. Lembrei das boas funções AVG do MySQL que aprendi na ETEC e nos tempos das aulas livres na Universidade.


O que o código abaixo faz:


Scanner lerteclado = new Scanner(System.in);

double soma = 0;

System.out.printf("divisor: ");

double divisao = lerteclado.nextDouble();

System.out.printf("Limite: ");

double limite = lerteclado.nextDouble();

for (int i = 0; i < limite; i++) {

soma = soma + i; 

System.out.println("valor de i => " + i + " , soma: " + soma);

}

System.out.println("O resultado é da : " + soma/divisao); 

Espero que tenha se divertido com os códigos e possa ter contribuído com seu aprendizado.

Dica, bole problemas e tente resolvê-los. Pense na saída e faça o código para que saia como espera que saia.

Se você gostou desse artigo, posso pensar em uma parte 2.

Grande abraço e nos vemos nos fóruns da vida por aí.




0
0

Comentários (0)

Desenvolver para se desenvolver.

Brasil