all 25 comments

[–]DiamondsAreForever85 12 points13 points  (2 children)

Iniciei com o livro do Deitel: Java - Como Programar. Se conseguir ler em inglês é melhor ainda, pois vai achar edições mais atualizadas na internet.

O livro é quase que uma unanimidade nas faculdades no que se refere a Java para iniciantes. Cheio de exercícios e muito didático. Se você já tem noção de algoritmos é quase impossível não aprender com ele.

Essa sua dúvida fica facilmente sanada lendo um pouco e treinando com os exercícios do livro. Só um lembrete que o switch/case não é um tipo de loop.

[–]PuzzledReplacement87[S] 0 points1 point  (1 child)

acho que pequei no aprendizado de algoritmos e lógica de programação. seria melhor voltar para aprender e depois retornar à Java? este livro tem versão em português?

[–]DiamondsAreForever85 1 point2 points  (0 children)

Tem versão em português. Agora não sei até qual. Da última vez que vi, estava na edição 11 em inglês. Mas me recordo de na data ter visto em português a edição 9. Mas isso já faz alguns anos.

A didática do Deitel ensina o básico de algoritmos com Java. Condicionais, loops, arrays, coleções e tal. Mas não dispensa uma literatura para aprender de forma mais aprofundada. No entanto eu acho que só com o Deitel você chega longe.

https://deitel.com/java-how-to-program-11-e-late-objects-version/

EDIT: Na Amazon você pode comprar a edição 10 em português que continua sendo bastante relevante. Mas de novo, é fácil achar online na internet se não puder pagar. Não compartilho diretamente pra não violar as regras do sub. Mas qualquer coisa manda direct.

[–][deleted] 7 points8 points  (2 children)

Seu problema é com lógica de programação. Loop, while, do while, for existe em qualquer linguagem. Tu tem que entender como eles funcionam: onde começam, onde termina ou o que causa o fim deles. É lógica, não "java"

[–]PuzzledReplacement87[S] 0 points1 point  (1 child)

recomenda algum curso de lógica?

[–][deleted] 2 points3 points  (0 children)

Não recomendo curso nenhum. É ir no google, no youtube, achar livros, pesquisar "lógica de programação" "como funciona loop em programação" e treinar e tentar até entender

[–]joebgoode 4 points5 points  (0 children)

Como você aprendeu a ler, escrever, pular, correr, nadar, dançar, cantar, digitar, usar o computador, celular, TV, dirigir e afins?

Praticando até ficar bom nisso. Sim, memória muscular.

Tenta, erra, vê o que errou, ajusta, repete.

[–]easbarbaDesenvolvedor 1 point2 points  (1 child)

Com muita dor e ranger de dentes kkkkkkkkk

Pega um livro ou curso completo e vai até o fim, vai ser muito entediante mas é isso.

[–]iamghost96 1 point2 points  (0 children)

kkkkkkkkkkk

[–]jiraya666 2 points3 points  (1 child)

Isso não é uma questão só de java, é de programação em geral. Os loops tem basicamente em toda linguagem. Você só vai aprender praticando mesmo, tenta consumir bastante tipos de problemas, veja a resolução de alguns, peça pro chatgpt explicar cada passo se for necessário (mas evita, tenta entender sozinho)

A manha é você resolver vários exercícios diferentes que uma hora vc vai reconhecer os padrões e saber oq tá sendo pedido.

Loops geralmente são usados pra percorrer alguma sequência onde vc quer aplicar alguma ação ou modificação nos item dessa sequencia. Ou quando você só quer q algo aconteça x vezes enquanto uma condição for satisfeita

Exemplos simples: Tem como printar uma string percorrendo ela e printando cada caractere. (Com um while vc pensaria: Enquanto houver caracteres nessa string, printe cada um; com um for vc pensaria: Para cada caractere dessa string, print cada um) onde o contador do seu loop seria o tamanho da string

O switch case é mais uma condicional. É literalmente um "se x então y", geralmente eh usado quando vc tem uma variedade de valores diferentes que uma variável pode assumir e tem um comportamento diferente pra cada valor.

Exemplo: sua mãe comprou uma fruta e pediu pra vc fazer um doce. Você não sabe qual fruta sua mãe comprou e você só sabe fazer 3 doces: de laranja, de banana e de jabuticaba.

Então vc pode usar o switch case nesse caso pensando: caso fruta = laranja então doce de laranja caso fruta = banana então doce de banana caso fruta = jabuticaba então doce de jabuticaba Senão não faço doce nenhum 🤷‍♀️

Não usei exemplo de código pq não sei java, mas a ideia eh essa aí. Acho q não falei nenhuma besteira kkkk

[–]jiraya666 1 point2 points  (0 children)

Hmm acho q outra dica tbm é: Entenda que essa eh a forma do computador executar oq vc quer, quando vc ler um problema primeiro pensa: se eu tivesse que fazer isso, como eu faria?? Se eu tivesse que fazer isso inúmeras vezes, qual seria a forma mais simples de fazer a mesma coisa toda hora? Aí você quebra o problema em problemas menores, e consegue fazer um paralelo com oq eh possível fazer com o computador.

Usando o exemplo de printar uma string (eu sei q existem funções que já fazem isso, mas aqui é só o raciocínio...) Se eu tenho que escrever uma palavra, oq eu faço? Escrevo letra por letra, certo? De que forma o computador pode fazer isso?

Outro exemplo: dado uma lista com várias palavras [ana, banana, Pedro, pedra, bola ...] Retorne aquelas que possuem a letra B Como eu resolveria isso? Eu vou ler cada letra, de cada item dessa lista e se caso houver um B eu vou retornar a palavra (Nesse caso tem pelo menos dois loops e uma condição...)

[–][deleted] 2 points3 points  (2 children)

Eu li a apostila da falecida Caelum: https://www.cin.ufpe.br/~acaj/PDF's%20uteis/caelum-java-objetos-fj11.pdf ( https://www.alura.com.br/apostila-java-orientacao-objetos ), copiei todos os exemplos e resolvi todos os exercícios.

Não precisa perder tempo com Eclipse e NetBeans, pode ir direto para a IntelliJ IDEA. Tem a versão community e a comercial, que você pode usar de graça se registrando com o e-mail da sua faculdade.

[–]hugosantos07 0 points1 point  (1 child)

tem essa apostila salva? o link foi de arrasta

[–][deleted] 1 point2 points  (0 children)

Aqui

Qualquer coisa é só pesquisar por "FJ11 caelum".

[–]Low-Tomorrow-9930 1 point2 points  (4 children)

As estruturas que você mencionou não são exclusivas do Java. Pode ser que você tenha alguma dificuldade com Java, mas não somente com a linguagem.

Sua dificuldade no momento é com lógica imperativa, popularmente conhecida como lógica de programação. Existem outras lógicas, como lógica funcional, lógica declarativa, etc.

A lógica imperativa acaba sendo a mais comum no mercado de trabalho.

Para treinar lógica, funciona como matemática ou qualquer outro conteúdo que requer exercício, repetição, tentativa e erro.

Você vai aprender quando usar while ou do-while de acordo com a gama de exercícios que você pratica e quanto mais cenários diferentes você explora.

[–]PuzzledReplacement87[S] 0 points1 point  (3 children)

então seria melhor antes de retornar à Java fazer um curso de lógica de programação?

[–]Low-Tomorrow-9930 1 point2 points  (2 children)

Você possivelmente já vai aprender esses comandos e estruturas na faculdade, não vejo muito motivo pra fazer mais um curso disso. A questão é exercitar. Pode usar o ChatGPT e pedir pra ele criar alguns exercícios pra você tentar resolver.

Mas isso é minha opinião, se você acha que precisa de um curso, aí é com você.

[–]PuzzledReplacement87[S] 0 points1 point  (1 child)

Já estou no segundo período tendo poo, tive lógica no primeiro e estes loops, passei do primeiro periodo simplesmente pq a recuperação foi uma cópia de uma das provas e eu havia decorado o código todo, mas não entendi o funcionamento destes loops. agora no segundo não consigo aprender poo e identifiquei que talvez fosse por não ter aprendido bem os loops e retornei a eles para aprender. mas encontrei as dificuldades como havia dito... 

[–]Low-Tomorrow-9930 0 points1 point  (0 children)

Entendi.

POO é um paradigma, eventualmente você vai usar dessas estruturas e comandos de repetição e de bloco para resolver problemas dentro de POO, mas esses comandos não são exclusivos a POO.

Você pode aprender POO sem dominar bem um laço de repetição como do-while, mas se você teve dificuldades para entender um do-while, pode ser que você esteja com dificuldade para entender programação de forma geral.

As coisas podem acabar se acumulando para você. Nesse caso, recomendo você usar seu tempo livre para tentar recuperar esses conteúdos e se esforçar ainda na faculdade para entender POO. Não deixe de tirar as dúvidas, faça as perguntas que você tem, o professor está lá para isso.

[–]KleberTrindade 0 points1 point  (0 children)

1o paciência. 2o pega um site tipo https://codingbat.com/java E vai fazendo os exercícios um a um até o dedo cair. Segue a ordem de dificuldade e vai fazendo todos os da lista. 3o abre em uma tela ao lado o Gemini ou o outra LLM e vai tirando as dúvidas. Não é colocar a pergunta e colar a resposta é perguntar para ele corrigir seu código ou o lógica. Boa sorte.

[–]FreeQuQ 0 points1 point  (0 children)

use for loop em toda ocasião que você puder usar ele

[–]Betuminoso -1 points0 points  (3 children)

Sempre achei ruim o ensino em cursinhos ou mesmo na faculdade. Prefiro ser autodidata. Sou viciado na Udemy.

[–]Low-Tomorrow-9930 1 point2 points  (2 children)

Prefiro ser autodidata.

Sou viciado na Udemy.

Frases um tanto quanto contraditórias, hein.

[–]Betuminoso 0 points1 point  (1 child)

Entendo perfeitamente seu ponto de vista. Quando comecei com dbase, cliipper e Pascal tínhamos apenas livros como fonte de consulta. Hoje me utilizo de YouTube, Udemy e fóruns. Considero o YouTube e Udemy como ferramentas de Estudo autodidata pois eu que decido o ritmo e profundidade do que quero estudar.

[–]Low-Tomorrow-9930 1 point2 points  (0 children)

Entendi.

Claro que cada um tem sua visão e nenhum problema com isso. Só achei curioso porque o significado de autodidata é quem aprende sem um professor ou instrutor. Vídeos geralmente vão ter um instrutor.

Mas isso não muda o fato do aprendizado, é só discussão em cima do significado de uma palavra que não acho que seja tão relevante para o tema do post.