Eu fiz meu primeiro exame de programação recentemente ... e bem, eu quase o fracassei. Não fez muito bem. Eu só tenho a mim mesma que, fora do período da faculdade, praticamente não fiz nada.
Agora tenho outro próximo do verão e não vou permitir que isso aconteça novamente. Há algumas semanas que eu tenho lido, lido e lido um pouco mais. Continuo revisando as coisas mais antigas que perdi e as mais recentes que estamos fazendo. Então, obviamente, eu posso notar uma enorme diferença na minha compreensão do idioma. No entanto, é isso. Eu posso ler o código e agora tenho uma idéia do que está acontecendo no código ... mas quando se trata de escrever o código sozinho, sou apenas ignorante. É como se eu nunca soubesse qual abordagem adotar e nunca possa realmente compreender completamente as perguntas.
Eu leio bastante (lendo cerca de 5 a 6 horas no mês passado) todos os dias ... Mas, ao abrir meu IDE, sempre me sinto condenado, é realmente desmotivador. Especialmente porque tenho conhecimento de nós, listas, listas de matrizes, interfaces etc., além de lê-los em uma página sobre isso. Eu posso apontar exatamente tudo o que está acontecendo em um programa, para anotar um código de pré-amostra que acho bom ... mas escrever meu próprio código é outra história.
fonte
Respostas:
Você aprende a escrever programas escrevendo programas.
Mas você precisa começar pequeno, cara.
A partir daí, comece a construir ...
e depois...
... e assim por diante. Depois de entender o básico de como os objetos funcionam, será muito mais fácil escrever programas maiores.
fonte
Ótima pergunta! É importante perceber que você tem várias curvas de aprendizado para escalar. Apenas para que você não pense que está apenas aprendendo uma linguagem de programação. Você está fazendo um pouco mais do que isso.
Você está aprendendo sobre ...
Eu suspeito que é o ponto três onde você está lutando. Você está aprendendo a dizer coisas no código (sintaxe), mas realmente está nos perguntando o que devo dizer no código. Existe uma maneira certa e uma maneira errada de fazer as coisas?
Eu sugeriria que você aceitasse um desafio. Dê uma olhada no seguinte como exercício.
http://en.wikipedia.org/wiki/Eight_queens_puzzle
Agora, este é um desafio difícil. Você precisa colocar oito rainhas em um tabuleiro de xadrez para que cada uma delas fique a salvo uma da outra.
Portanto, como aluno, isso pode ser um alcance excessivo, no entanto, você pode analisar esse problema e usá-lo para aprender a escrever código.
Aqui está uma estratégia para experimentar ...
Repita o problema para que seja muito mais simples que o problema declarado a ser resolvido . Esqueça as oito rainhas. Concentre-se em apenas um. Aprenda a escrever o código para representar um tabuleiro de xadrez na memória, colocar uma única rainha nesse tabuleiro e exibi-lo ao usuário na tela em apenas texto.
Depois de fazer uma facada na Etapa 1. Coloque duas rainhas de forma que elas sejam seguras.
Por fim, tente colocar mais de duas rainhas no tabuleiro para que elas sejam todas seguras.
As etapas acima são uma reviravolta em uma estratégia de design chamada Refinamento por etapas. É um pouco antiquado em termos de design, mas o levará de uma tela em branco para um código interessante em pouco tempo.
Existem outras estratégias de design e implementação: Design Orientado a Testes, Design Orientado a Objetos e Padrões de Design, para citar alguns.
Com o tempo, você adicionará essas estratégias ao arsenal e as usará como e quando necessário. Quanto mais estratégias de design você estuda e pratica, mais fácil se tornará.
Que a fonte esteja com você.
fonte
Prefácio Rápido
Aprenda fazendo: conhecimento versus know-how
Há uma enorme diferença de conhecimento e know-how. É um erro comum que os novos alunos pensem que, como eles podem "entender" um programa enquanto o lêem, eles realmente entendem o motivo pelo qual o programa está sendo escrito da maneira que é.
E a única maneira de chegar a essa segunda parte é praticar. Sente-se, abra um editor de texto, uma linha de comando e vá direto ao assunto.
Programação no Small
É provável (e esperado) que, neste estágio, sua capacidade de compreender como vários componentes de software complexos interagem entre si seja limitada. E é realmente uma coisa boa, pois força você a começar do básico. Não pule a arma e mova-se no ritmo certo: comece com pequenos exercícios para pequenas tarefas.
Para ser sincero, nunca me convenci de que começar a aprender programação com Java é o caminho a seguir (eu costumava ensinar programação para morar na universidade e ainda ocasionalmente fazer aulas particulares). É complexo demais para você começar, e a maioria dos livros sobre Java parecerá bastante assustadora. No entanto, certamente isso pode ser feito (pelo menos em algumas áreas desse conhecimento global que esperamos dos programadores), desde que você se restrinja a aprender passo a passo.
Livros
Como você define Java, e se precisar de um livro decente sobre Java, recomendo:
Só estou mencionando isso porque não sei o que você usa em sala de aula. Há muitos outros livros. Alguns são bons. Alguns aleijarão os alunos por anos.
Seu Processo de Estudo
O fluxo de trabalho básico
A partir de agora, recomendamos que você siga este processo em duas etapas para todos os exercícios e exemplos de código que você viu na aula:
Em caso de falha
Se você falhar e sentir que precisa dar uma olhada no livro, é provável que sua falha seja:
É provável que a primeira causa seja o que você enfrenta com mais frequência. O segundo é anedótico. Ambos são abordados pela prática recorrente.
Toda vez que você falha na implementação de um desses exemplos anteriores, olhe o livro novamente e feche-o novamente. Não codifique enquanto olha para o livro. Eu até aconselho que você exclua toda a solução e comece de novo. A repetição é uma parte irritante, mas importante, do processo de aprendizado.
Não leve isso de ânimo leve. Toda vez que você sentir vontade de dizer a si mesmo "sim, ok, eu sei disso" ou "estou 90% lá, está quase tão bom quanto feito" e quiser pular para outra seção, lute contra essa vontade e comece de novo. É muito difícil ter a honestidade de admitir para si mesmo que você não entendeu completamente um conceito.
Nota lateral: Considero um grande desserviço que a maioria dos programas escolares agora tente "dar um pontapé inicial" nos cursos de programação, simplificando demais as coisas e fornecendo ferramentas avançadas demais para os alunos: o objetivo não é tornar sua vida miserável ou para você também aprender de cor, coisas que mais tarde em sua carreira serão automatizadas por suas ferramentas e que às vezes você nem se lembra. É para lhe ensinar todas as partes que flutuam por aí.
Em Caso de Sucesso: Vá Além!
Se você conseguir implementar seu exercício, não salte diretamente para o próximo. Tente ver o que você pode fazer para melhorar isso. Você pode alterar a saída solicitada? Adicionar um pequeno recurso? Uma opção? Tente, pois agora você está naquela zona divertida onde passou pela principal dificuldade, e esses pequenos requisitos auto-impostos são mais propensos a manter um pouco de ânimo.
Porém, não exagere: você não imprime o alfabeto e o inverte para que apareça de repente em uma diagonal na tela com um gradiente de cores. Dê pequenos passos. O aprendizado é um processo longo e interativo, e você precisa abordar problemas com níveis crescentes de dificuldade (por exemplo, veja como eu geralmente penso em explicar a recursão ).
É apenas aprendizado - uma comparação
Seu problema não está realmente relacionado à programação. É o mesmo problema que milhares de pessoas encontram quando tentam aprender matemática.
Se você lhes der um problema, eles não verão como chegar à solução. No entanto, se você escrever a solução para eles, a maioria entenderá e pensará "caramba, isso foi tão simples!". No entanto, você lhes dará um problema semelhante com diferentes medidas e hipóteses e eles não conseguirão resolvê-lo: eles não entenderam a lógica por trás disso e precisam de prática para poder fazer isso sozinhos.
Observe que esse é um problema comum com a matemática, mas, na minha opinião, você o vê em vários outros campos em que há alguma lógica necessária: aprendizado de solfege, gramática de linguagem, física, etc ... E não se resume a uma habilidade "natural" para entender essas coisas: tudo se resume à prática (seja nessa área ou em outras que levem o indivíduo a entender conceitos neste campo mais facilmente).
Não há motivo para você não aprender a escrever código. Você apenas continua tentando até chegar a esse "ah AH!" Momento Eureka. Em seguida, passe para o próximo problema mais difícil.
Isso também pode ajudar (mais tarde):
fonte
Sei que essa não é a resposta que você deseja ouvir, mas: escreva mais código!
Mais especificamente, disseca o código que você entende. Muitas vezes me ajuda a "traduzi-lo" para o inglês comum (como eu sou um iniciante em relação).
Não tenha medo de debater sua ideia para escrever um pedaço de código primeiro (ou seja, "Quero declarar uma variável aqui, iterar por esse segmento, etc") e, em seguida, procure peça por peça como fazer esses vários segmentos.
Lembre-se de que a codificação é menos como um exercício de memorização e como descobrir uma maneira de construir algo a partir dos blocos de construção. Assim como aprender uma língua estrangeira de verdade, a compreensão vem primeiro, este é um bom sinal de que você está no caminho certo.
Apenas acredite que quanto mais você escreve e lê códigos, mais faz sentido.
fonte
Como outros já disseram, este é um caso em que você deve praticar, praticar, praticar.
Escreva vários programas pequenos que resolvem apenas um problema
Às vezes, a parte mais difícil é criar algo que vale a pena programar. Se puder, tente trabalhar em um tópico com o qual você pensa estar lutando - como classes, herança etc. etc. Algumas ideias estão em alta:
GetArea
. Agora, torne as classes Triangle e Rectangle herdadas de Polygon e verifique se elas implementam GetArea. Continue fazendo isso para polígonos de ordem superior (pentágono, hexágono etc.).* O objetivo do código golf é executar a tarefa fornecida usando a menor quantidade de caracteres, bytes ou alguma outra métrica indicada na pergunta. Se você ler algumas das respostas, aprecia rapidamente as maneiras inteligentes pelas quais as pessoas resolvem esses problemas. Não se concentre em resolver o problema no menor número de bytes! As pessoas que postam para codificar golfe são programadores muito experientes. Mas, algumas das perguntas oferecem tarefas fáceis por si só.
Alguns exemplos divertidos de código de golfe:
Estrutura básica para resolver um problema:
Muitos deles dão uma boa idéia de como deve ser uma função. Dado X, Y e o resultado deve ser Z:
Com o objetivo de aprender o básico e se familiarizar com um idioma, o modelo acima é suficiente. Um modelo mais orientado a objetos seria:
Se ajudar, anote também no papel. Fale consigo mesmo através do processo de como você , como ser humano, resolveria esse problema. Exemplo: dados os números i, j ek, exiba-os em ordem decrescente. Como pessoa, é fácil de resolver. A parte difícil é traduzir suas idéias em instruções linha por linha para que um computador possa resolvê-las.
Tente criar suas próprias idéias também. Pode ser difícil, mas mesmo o mais simples dos programas pode ensinar algo que você não sabia. O ponto principal é se aprofundar no básico, até que eles se tornem uma segunda natureza.
fonte
Você não chegará a lugar algum apenas lendo o código; você precisa escrever código. Basta escrever o código. Não se preocupe se o código que você escreve é uma porcaria; todo mundo escreveu código porcaria. Algumas pessoas ganham a vida com isso. Ninguém começa a escrever um bom código e sou da opinião de que, enquanto aprende, é quase necessário escrever um código incorreto, porque só então a diferença entre código válido e incorreto se torna realmente aparente.
É difícil apreciar a diferença entre código bom e ruim ao ler dois blocos de código que fazem a mesma coisa, mas quando você escreve um script e obtém alguém com conhecimento para analisá-lo e fornecer feedback, a diferença geralmente se torna muito mais aparente porque você pode aplicá-lo diretamente ao que sabe.
Programar não é algo que você pode aprender memorizando; não é como suas tabelas de horários ou datas no histórico. A programação é uma habilidade prática que requer prática constante para se manter nítido. Aprender programação sem escrever código é como aprender a nadar lendo um livro.
fonte
Essa pergunta já tem algumas respostas realmente boas, mas há alguns pensamentos que ainda não vi.
Aprender uma linguagem de programação é como aprender uma linguagem 'real': é sempre muito mais fácil ler do que escrever, seja uma frase única, um artigo científico ou um livro. Ao ler, muito pode ser descoberto apenas a partir do contexto, entendendo o texto ou o código enquanto você o lê. Quando você vê uma palavra que não conhece, talvez conheça outra palavra com o mesmo radical; quando você vê um método, o nome do método fornece uma boa idéia do que ele faz. Ao escrever, você deve se lembrar não apenas da sintaxe, mas também das palavras reais a serem usadas. E é o mesmo para a programação.
Como outros já disseram, você não pode aprender a escrever programas apenas lendo programas.
Comece pequeno. Procure um tutorial sobre Java e faça todas as unidades, uma após a outra. E quando estiver confiante o suficiente, escolha um pequeno projeto para testar suas habilidades, talvez um jogo simples que você conheça bem e que não exija muita interação da GUI. Quando você decidir, não basta abrir o Eclipse e olhar para a 'página em branco'. Crie um storyboard. Você não precisa desenhar diagramas UML elaborados, pense em como certos aspectos do programa poderiam ser resolvidos - como a história ou o seu argumento se desenrola, por assim dizer. E ao escrever o código, comece com um rascunho. Normalmente, escrevo muitos comentários, descrevendo o que o programa deve fazer, em que ordem e depois começo a preencher o código do programa.
fonte
Como outros dizem, você só precisa praticar a escrita de código. Para que isso seja satisfatório, você precisa desafiar-se a solucionar algum tipo de problema, seja imprimindo mensagens predefinidas, criando uma calculadora interativa simples ou resolvendo alguma tarefa específica.
Se você está com pouca inspiração, o Project Euler tem uma infinidade de exercícios de matemática / programação de dificuldade crescente. Eles oferecem objetivos claros e desafiadores a serem alcançados e devem ajudá-lo a se sentir mais confortável em criar programas.
fonte
Só pensei em falar sobre esse tópico porque ele realmente bate perto de casa.
Você só precisa começar a codificar. Não me interpretem mal, a leitura é ótima, mas o que realmente lhe dá esse conhecimento de codificação de trabalho está realmente construindo algo. Aprendi mais com um único estágio de verão do que no ano anterior lendo sobre ele.
Devo acrescentar também que você não deve começar a codificar às cegas . Faça um projeto para si mesmo. Você precisa de algum tipo de orientação para se colocar, para saber o que deseja fazer. Você ficará surpreso ao ver o quanto aprenderá rapidamente. Se você apenas abrir um IDE e começar a fazer exemplos simples de olá mundo, esse sentimento desmotivador surgirá rapidamente em você. Encontre algo com um pouco de profundidade e, antes que você perceba, estará expandindo.
fonte