Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvidas de iniciantes

Olá amigos, olha eu aqui novamente, gostaria o seguinte. Estou iniciando com a linguagem java há pouco tempo, pra falar a verdade li apenas um ebook, sobre java básico. E resolvi fazer o curso pois achei que essa seria a linguagem que mais me atraiu. No entanto, nos exercícios, fico meio perdido, além da demora constante para resolver algo talvez simples se torna complicado. Mas estou gostando.

1) É normal, fazer esses exercícios com consulta para lembrar ou até mesmo copiar algo ? Porque é o que esta ocorrendo. Me ajude please rs =/

2) Abaixo está o código que tbm surgiu algumas dúvidas, eu estou fazendo mas não entendo essa logica, se puder, explicar passo a passo ficaria feliz. Segue o código.

boolean contem(Funcionario f) { for (int i = 0; i < this.livre; i++) { //DUVIDA NESSA LINHA if (f == this.empregados[i]) { // DUVIDA NESSA LINHA return true; } } return false; }

3 respostas
solução!

Fala Diego, blz ? Começar algo sempre é um desafio, não se preocupado se no começo parecer meio perdido. Isso é normal, o importante é sua dedicação em aprender. Começou fazendo esse curso então está no caminho certo. Sempre estude, não só aqui mas em outras midias também como livros por exemplo. Bom com relação a sua primeira pergunta, é normal sim fazer uma consulta durante os exercicios. O ideal é tentar fazer primeiro antes de consultar. Mas o mais importante sempre praticar. Acabou o curso ? Vai praticar. A tendencia é você esquecer se não praticar. Agora vamos lá pra segunda dúvida: tratá-se de um laço com uma verificação dentro. O for está fazendo uma iteração (percorrendo) o array empregados e a cada iteração esta sendo comparado se o funcionario que foi passado no parametro (Funcionario f) é igual ao funcionario "da vez" dentro do array ( if (f == this.empregados[i]) ). Se o funcionario for igual o metodo retorna verdadeiro: return true;. Se caso o laço terminar e em nenhuma vez a condição for satisfeita será retornado false, ou seja, não contem o funcionario na lista. Espero ter ajudado Diego. Qualquer duvidas só chamar. Bons estudos.

1  boolean contem(Funcionario f) { 
2    for (int i = 0; i < this.livre; i++) { 
3       if (f == this.empregados[i]) { 
4          return true; 
5       } 
6    } 
7    return false; 
8 }

o for é declarado da seguinte forma:

for (declaração_de_uma_variável; condição; incremento) {

}

Tudo que estiver dentro do for será executado n vezes até que a condição não seja mais satisfeita e a cada execução o i é incrementado em 1 i++.

Já o this.empregados é um array de funcionários(lista que contem vários funcionários dentro dela).

dito isso vamos analisar o código:

suponhamos que o valor de this.livre seja 10 o nosso for será executado 10 vezes e a variável i será incrementado a cada execução, ou seja, na primeira iteração terá o valor mudado para 1, na segunda para 2 e assim por diante.

suponhamos também que a minha lista de empregados tenha 10 funcionários:

empregados[funcionario1, funcionario2, funcionario3...]

a linha 3 simplismente compara o Funcionario f com um funcionário da lista de empregados em uma determinada posição da lista.

if (f == this.empregados[i])

como o for é executado 10 vezes e o valor de i é sempre incrementado, isso garante que a comparação é feita com todos os elementos da lista. Assim:

na primeira execução if (f == this.empregados[0])

na segunda execução if (f == this.empregados[1])

na terceira execução if (f == this.empregados[2])

...

Meus caros vcs são sensacionais, Tiago obrigado pelas palavras, achei que era somente eu que consultava. Mas fico mais tranquilo com que seja normal isso. Eu vou ser um desenvolvedor java SIM! João obrigado, sua forma de explicar foi excelente e bem didática, conseguiu me fazer entender. Obrigado por compartilhar o tempo e conhecimento de vcs obrigado mesmo.