Dúvida iniciante!

12 respostas
monthiel

Olá pessoas, bom dia!

Esse é meu primeiro tópico no GUJ. Adorei o site e já vi muitas matérias que vão me ajudar muito. Então vamos lá:

Minha primeira dúvida é a seguinte: Estou lendo o livro Java - Como programar --que por sinal é ótimo–, e nele vi que todo código deve iniciar da seguinte forma:

class { public static void main(String[] args) }

Li a explicação do livro, no entanto, ela é muito técnica (nem tanto), mas acabei não entendendo direito porque sempre devemos começar dessa forma. Então, gostaria que me explicassem:

public;

static;

void;

main;

String;

Claro, se não for pedir muito.

Então é isso, tenha um bom dia todos.

Monthiel,

12 Respostas

elomarns

Olá monthiel. Seja bem vindo ao GUJ!

Antes de mais nada, devo fazer uma pequena correção. O Java - Como Programar não diz que todo código deve começar dessa forma, são assim apenas os pequenos programas do início do livro, que por serem simples, só requerem uma classe com o método main. Em geral, aplicativos Java são mais complexos, possuindo dezenas, centenas ou milhares de classes, mais obviamente não faria sentido começar com um programa assim, por isso o livro usa essa abordagem.

Em relação ao método mais famoso do Java, o método main, saiba que ele é o método que a JVM irá invocar toda vez que você utilizar o comando java NomeDaClasse na janela de comando. Ele é o ponto de entrada de um aplicativo Java, sendo que em programas mais simples ele contém todo o código, mas em geral, ele apenas cria os objetos que iniciaram a cadeia de eventos que faz o programa funcionar. Veja abaixo a explicação de cada parte do cabeçalho do método main:

public static void main(String[] args)

public: é um modificador de acesso, que diz, nesse caso, que o método, no caso o main, é público, ou seja, pode ser chamado dentro e fora da classe onde ele se encontra. Por uma exigência da especificação do Java, o método main deve ser público.

static: a palavra-chave static, neste caso, informa que não é preciso criar um objeto da classe onde o main está declarado para chamá-lo. Métodos marcados com esta palavra chave são chamados de métodos estáticos. É especialmente importante que o main seja um método estático, já que quando ele é chamado pela JVM não existe ainda nenhum objeto criado, portanto ele só pode ser chamado porque é um método estático.

void: especifica que o método não retornará valor algum após a sua execução. Só pra constar, existem métodos que retornam valores, como você verá no capítulo 3 do livro.

main: é o nome do método.

String[]: é o tipo de parâmetro do método, no caso um array de Strings.

args: é o nome do parâmetro do método.

Sendo assim, para que seu aplicativo Java seja executado, você deve ter uma classe que contenha um método main, sendo que este método deve ser declarado exatamento como acima, inclusive considerando as letras maiúsculas e minúsculas, exceto pelo parâmetro do método main, que embora seja frequentemente nomeado como args, pode possuir outro nome.

Bom, é isso. Espero ter respondido a sua dúvida, e caso tenha errado em alguma parte, alguém por favor me corrija.

lenando

só para constar, o método main também pode ser chamado com varargs.

public static void main(String ... argumentos)  {}

Att.
Fernando.

Omeganosferatu

Não complica lenando hehehehe

Monthiel uma dica, pra aprender java e programar em java é preciso de abstração e paciência cara, no começo ( ainda mais com auxilio de livros como o seu por exemplo ) você vai usar muita coisa que só vai saber realmente pra que serve em capitulos mais avançados do livro. O segredo é ter paciência e tentar absolver tudo que é passado capitulo por capitulo. O segredo é devorar o elefante em partes ( clichê ) se você tentar olhar JAVA de uma forma geral e querer saber tudo de uma vez, você vai pirar

monthiel

Olá pessoas,

Obrigado pelas respostas, e por elas vi que sou obrigado a voltar do primeiro capítulo. Pois até entendi até o capítulo que estou ( 3 ), mas muitos detalhes se passarão e não aprendi.

Um detalhe importante que esqueci de falar é o seguinte: Não tenho conhecimentos de programação em nenhuma outra linguagem; claro, tenho a noção básica que todos colocam no curriculo, mas programar mesmo, do início, meio e fim, não ainda.

Além disso, tenho um sério problema de Lógica; nossa como é difícil! Em um exercício na faculdade, que poderia ser resolvido em 5 linhas, eu fazia um fluxograma de 40 (* risos *). Eu ri, mas isso é muito sério. Tenho dois problemas pela frente; a Lógica e o Java.

Bom, conto com a ajuda de todos!

Att,
Monthiel

dreamspeaker

Dois pontos positivos, você não iscrevi axim e tem noção das suas dificuldades… bom, bom… cai de cabeça no que você quer aprender, velhinho! E boa sorte!

elomarns

Olá novamente montihel.

Em relação ao seu problema de lógica, eu acredito que ele pode ser resolvido junto com o aprendizado do Java, embora muitos aqui aconselhem primeiro o estudo de lógica. Uma boa abordagem pra melhorar sua lógica é fazer, pelo menos, todos os exercícios dos primeiros capítulos do livro Java - Como Programar, além de ler o livro com atenção e sem pressa de acabar por acabar.

lenando

Sinceramente acredito que o velho e bom Portugol para o aprendizado de lógica de programação seja o mais interessante, pois não obriga o aluno a se ater aos detalhes de uma linguagem de programação que é muitas vezes complexa, como o Java.

Meu conselho é enfiar a cara em exercícios, acredito que deva haver bons livros de lógica e refaça seus exercícios, otimizandos, eliminando código redundante ou melhorando a lógica que inicialmente você fez.

Porém, assim que sentir seguro em lógica, pule para dentro de Java de cabeça :stuck_out_tongue: pois nesse momento você já conseguirá entender a lógica estruturada e a lógica envolvida na orientação a objetos e as regras e segredos do nosso amigo Java :-o

Espero ter ajudado.

Att.
Fernando Lewandowski Albuquerque

elomarns

lenando:
Sinceramente acredito que o velho e bom Portugol para o aprendizado de lógica de programação seja o mais interessante, pois não obriga o aluno a se ater aos detalhes de uma linguagem de programação que é muitas vezes complexa, como o Java.

Meu conselho é enfiar a cara em exercícios, acredito que deva haver bons livros de lógica e refaça seus exercícios, otimizandos, eliminando código redundante ou melhorando a lógica que inicialmente você fez.

Porém, assim que sentir seguro em lógica, pule para dentro de Java de cabeça :stuck_out_tongue: pois nesse momento você já conseguirá entender a lógica estruturada e a lógica envolvida na orientação a objetos e as regras e segredos do nosso amigo Java :-o

Espero ter ajudado.

Att.
Fernando Lewandowski Albuquerque


Respeito sua opinião, não haveria porque não respeitar, afinal, você expôs bem o seu ponto de vista, que, aliás, faz sentido. No entanto, eu discordo desta abordagem.

Em geral, quando alguém pergunta aqui, ou em outros lugares, qual é a sequência de estudo para aprender Java, é recomendado estudar primeiro lógica de programação, depois programação orientada a objetos, e só então Java. É evidente que esta sequência de estudo produz resultado, mas eu acho que ela assusta um pouco aqueles que não conheçam nenhum destes assuntos, já que se vêem na situação de ter que aprender dois assuntos antes de partir pro Java, o que acaba por mistificar a plataforma. Além disso, acredito que esta sequência de estudo não é a mais adequada também devido ao tempo gasto.

Na minha opinião, pode-se aprender lógica de programação diretamente com Java, ou com outra linguagem qualquer, pois mesmo que você tenha que se ater aos detalhes da sintaxe do Java, isso provavelmente não será problema, já que a sintaxe necessária para aprender conceitos relativos a lógica de programação, como estruturas de controle, é relativamente simples, a dificuldade geralmente está nos conceitos. Além disso, o Portugol também tem uma sintaxe, e mesmo sendo mais simples que a sintaxe do Java, ela também terá que ser aprendida. Sendo assim, em ambos os casos vai ser necessário aprender uma sintaxe, ainda que uma delas seja mais simples que a outra, sendo que no caso do Java o estudante vai poder visualizar o resultado do seu estudo, ou seja, vai poder executar os seus pequenos programas e ver o resultado na prática. A teoria do aprendizado afirma que se aprende melhor quando você pratica algo do que quando você apenas lê, e mesmo que com o Portugol haja prática, ela é restrita à escrita, não há nenhum resultado mais palpável produzido.

Já em relação ao estudo da programação orientada a objetos, eu novamente acredito que pode-se usar o Java como ferramenta de aprendizado, afinal, o Java é uma linguagem orientada a objetos. Sendo assim, novamente entra-se na questão de você aprender algo apenas na teoria, sem poder vislumbrar um resultado visível, para só depois ir pra prática, em comparação com aprender a teoria e a prática simultaneamente, vendo diretamente o resultado da utilização do que se está aprendendo.

Por fim, vale mencionar novamente que eu não estou questionando a eficácia da abordagem tradicional, nem a desmerecendo, até porque acredito que ela funciona. Só acho que ela não é a única a ser considerada, além de não ser a minha preferida ao recomendar uma sequência de estudo a alguém sem muitos conhecimentos em programação.

lenando

elomarns:
lenando:
Sinceramente acredito que o velho e bom Portugol para o aprendizado de lógica de programação seja o mais interessante, pois não obriga o aluno a se ater aos detalhes de uma linguagem de programação que é muitas vezes complexa, como o Java.

Meu conselho é enfiar a cara em exercícios, acredito que deva haver bons livros de lógica e refaça seus exercícios, otimizandos, eliminando código redundante ou melhorando a lógica que inicialmente você fez.

Porém, assim que sentir seguro em lógica, pule para dentro de Java de cabeça :stuck_out_tongue: pois nesse momento você já conseguirá entender a lógica estruturada e a lógica envolvida na orientação a objetos e as regras e segredos do nosso amigo Java :-o

Espero ter ajudado.

Att.
Fernando Lewandowski Albuquerque


Respeito sua opinião, não haveria porque não respeitar, afinal, você expôs bem o seu ponto de vista, que, aliás, faz sentido. No entanto, eu discordo desta abordagem.

Em geral, quando alguém pergunta aqui, ou em outros lugares, qual é a sequência de estudo para aprender Java, é recomendado estudar primeiro lógica de programação, depois programação orientada a objetos, e só então Java. É evidente que esta sequência de estudo produz resultado, mas eu acho que ela assusta um pouco aqueles que não conheçam nenhum destes assuntos, já que se vêem na situação de ter que aprender dois assuntos antes de partir pro Java, o que acaba por mistificar a plataforma. Além disso, acredito que esta sequência de estudo não é a mais adequada também devido ao tempo gasto.

Na minha opinião, pode-se aprender lógica de programação diretamente com Java, ou com outra linguagem qualquer, pois mesmo que você tenha que se ater aos detalhes da sintaxe do Java, isso provavelmente não será problema, já que a sintaxe necessária para aprender conceitos relativos a lógica de programação, como estruturas de controle, é relativamente simples, a dificuldade geralmente está nos conceitos. Além disso, o Portugol também tem uma sintaxe, e mesmo sendo mais simples que a sintaxe do Java, ela também terá que ser aprendida. Sendo assim, em ambos os casos vai ser necessário aprender uma sintaxe, ainda que uma delas seja mais simples que a outra, sendo que no caso do Java o estudante vai poder visualizar o resultado do seu estudo, ou seja, vai poder executar os seus pequenos programas e ver o resultado na prática. A teoria do aprendizado afirma que se aprende melhor quando você pratica algo do que quando você apenas lê, e mesmo que com o Portugol haja prática, ela é restrita à escrita, não há nenhum resultado mais palpável produzido.

Já em relação ao estudo da programação orientada a objetos, eu novamente acredito que pode-se usar o Java como ferramenta de aprendizado, afinal, o Java é uma linguagem orientada a objetos. Sendo assim, novamente entra-se na questão de você aprender algo apenas na teoria, sem poder vislumbrar um resultado visível, para só depois ir pra prática, em comparação com aprender a teoria e a prática simultaneamente, vendo diretamente o resultado da utilização do que se está aprendendo.

Por fim, vale mencionar novamente que eu não estou questionando a eficácia da abordagem tradicional, nem a desmerecendo, até porque acredito que ela funciona. Só acho que ela não é a única a ser considerada, além de não ser a minha preferida ao recomendar uma sequência de estudo a alguém sem muitos conhecimentos em programação.

Concordo que Portugol tem também uma sintaxe a ser aprendida, mas não se compara com a complexidade de Java …

Respeito sua opinião, porém não concordo. Acredito que uma base sólida em lógica essencial e sem ligação com nenhuma linguagem (inicialmente) é indispensável, algo que após aprendido o aluno levará consigo para as “n” linguagens que aprenderá em sua carreira.

E ainda, imagine um iniciante em lógica essencial (curioso em conhecer todo o potencial da linguagem) se deparando com threads, conceitos OO ou generics de Java ? … Acredito que este iniciante ainda não terá armas suficientes para enfrentar toda essa complexidade … e aí sim estaremos mistificando Java, mediante essa metodologia. E claro que ele não é obrigado a usar essa complexidade, mas vai convencer um iniciante a não usar todo o potencial que lhe é fornecido :slight_smile:

Att.
Fernando.

elomarns

Concordo com você sobre a importância de se conhecer lógica de programação, no entanto, acho que você não entendeu completamente a minha opinião sobre o assunto. Eu acredito que você pode aprender lógica de programação diretamente com uma linguagem de programação real, ao invés de usar Portugol. Ou seja, neste caso, o foco do estudo não seria necessariamente o Java, e sim lógica de programação. O Java seria apenas uma ferramenta, portanto não se utilizaria de nenhum conceito muito complexo do Java, nem nada relativo a API que fuja do básico. Com esse objetivo em mente, eu acredito que o estudante poderá aprender lógica de programação de uma forma mais genérica, mesmo estando usando uma linguagem de programação como ferramenta, podendo assim levar consigo esta bagagem para qualquer outra linguagem de programação que ele venha a aprender no futuro, além de poder prosseguir nos seus estudos, agora estudando programação orientada a objetos com Java, e em seguida finalmente partir para os recursos mais avançados do Java, como os mencionados por você.

De qualquer forma, eu novamente devo dizer que respeito e também compreendo a sua opinião, já que a sequência de estudo mencionada por você é uma abordagem reconhecidamente eficiente.

rodrigo_salla

Prezado monthiel…

Eu não tive contato com esse livro que você está utilizando, mas conheço e vejo aqui muitas pessoas que o indicam, por isso, acredito que o livro deva realmente ser bom. Bem, você tem um livro pra seguir, colegas no guj pra postar e ajudar a resolver suas dúvidas, na minha opinião você deve agora começar o livro novamente e devagar, com muita paciência e fazer todos os exercícios, não importa quanto tempo demorar e nem se está fazendo da melhor forma, você deve apenas satisfazer o objetivo, depois, quando tiver mais a vontade e seguro, otimizar seus códigos.

Também tive medo e problemas quando me falaram de lógica, nunca tinha programado, (sou Adm de empresas e o Java pra mim é tudo, apesar de não ganhar dinherio e nem trabalhar com ele, risos, mas vou fazer outra faculdade ou um mestrado só pra mudar de emprego trabalhar com Java e olha que tenho 31 anos, risos, de tanto que gostei) porém, tudo isso é superado se você realmente desejar e se empenhar, tem uma monte de material e colegas excelentes na net para o ajudarem, na verdade, no final, so depende de você, acredito também que só vai aprender com muito estudo e fazendo muitos exercícios, não desanime se for isso mesmo que você gosta e quer seguir…

Desculpem-me pelo desabafo!!!

Rodrigo

monthiel

Olá, boa noite!

Em primeiro lugar gostaria muito de agradecer a receptividade de todos. É muito bom saber que existem pessoas inteligentes que gostam de compartilhar suas idéias, opiniões e conhecimentos.

dreamspeaker. Gosto de um português bem escrito, para que a leitura seja agradável; e na minha opinião, quem ixcrevi axim é simplesmente ridículo. Tudo bem, cometo muitos erros de ortografia, condordância, etc. Mas faço o máximo que posso para não cometer * risos *

Bom, em relação a Lógica, concordo com o amigo que é necessário ter uma boa noção antes de partir para uma linguagem, independente de qual seja. Mas também acredito que estudando Java, consiga uma boa noção de lógica. E com a prática dos exercícios propostos; ela se torne constante na mente e você acaba aprendendo sem perceber.

Enfim, voltei do primeiro capítulo do livro. Comprei um caderno e uma caneta exclusivamente para anotar as palavras chaves, classes, etc. Assim aprendo melhor.

Agradeço a todos a atenção dispensada,

Monthiel

Criado 20 de abril de 2007
Ultima resposta 23 de abr. de 2007
Respostas 12
Participantes 6