Serve como um guia básico, principalmente aos desenvolvedores que estão dando os primeiros passos e têm dificuldade para iniciar a solução de um problema, devido não saberem por onde começar.
Enfrentar um problema de programação, seja ele elementar ou um domínio mais complexo, exige conhecimento desse domínio, de técnicas e recursos. A forma de atacar o problema pode determinar a eficiência ou não da solução. A simples metodologia aqui apresentada, usada juntamente com os recursos disponíveis, é fundamental para se obter sucesso na tarefa de solucionar esses problemas.
Muito já foi discutido sobre o tema “programação é arte ou ciência”. Não é pretensão do autor entrar na discussão, mas usar como ponto de partida deste artigo uma afirmação daquele que consideramos o pai da matéria – Donald Knuth. No artigo “Computer Programming as an Art”, ele afirma que “programação de computadores é uma arte, porque aplica conhecimento acumulado, porque requer habilidade e engenhosidade e, especialmente, porque produz objetos de beleza”.
Note que Knuth não fala sobre talento, inspiração ou coisas do gênero. De onde pode-se concluir que é necessário se preparar, conhecer as ferramentas que serão utilizadas e ter entendimento sobre o domínio do problema.
Para reforçar o exposto acima, Steven Skiena, no prefácio do livro “The Algorithm Design Manual”, diz que a criação de algoritmos corretos e eficientes que solucionem problemas reais exige o conhecimento de técnicas e recursos. Ele considera que a técnica mais importante é a modelagem. Modelagem é a arte de analisar um problema e abstrair uma solução adequada para ser abordada por um algoritmo. E os recursos são formados pela base de conhecimento de algoritmos clássicos, que servem de ponto de partida para a solução do problema.
Desta forma, na seção seguinte será sugerida uma metodologia simples e prática a ser seguida na solução de problemas de programação.
Abstrair significa concentrar-se nos aspectos essenciais do domínio de um problema, ignorando características irrelevantes. Por exemplo: na análise de um Sistema Acadêmico Escolar, as classes Aluno, Professor e Disciplina são casos de abstração.
Como abordar um problema de programação
Descreveremos aqui alguns passos, não necessariamente imprescindíveis, que poderão ajudar-nos a produzir soluções de programação corretas e eficientes.
Entenda o problema
O problema deve ser bem definido com o máximo de detalhes. Entender o domínio do problema é fundamental. A especificação dos dados que representam as entradas e as informações que a solução do problema deve produzir devem ser também descritas minuciosamente. Se julgar necessário, crie um modelo de domínio preliminar. Leia a seção “Introdução ao modelo de domínio” para um pouco mais de detalhes.
Se for possível, tente resolver o problema manualmente
Execute pequenas partes da solução mentalmente, usando como auxílio papel e caneta. Procure usar valores de entrada diferentes e variados para ver o que acontece. Esse procedimento é o que chamamos teste de mesa.
Defina com precisão o algoritmo
É sempre bom escrever algum pseudocódigo descrevendo o que o programa irá fazer. Certamente que, em se tratando de algo que você já escreveu várias vezes ou algo de nítida simplicidade, isso não seria necessário.
Escreva a versão final do algoritmo que será utilizado na solução e que deverá ser mapeado para a linguagem de programação escolhida.
Codifique o programa
Escreva o programa na linguagem escolhida. Comente o código à medida que vai codificando. Utilize identação para tornar o código fonte mais legível. Use nomes sugestivos e não muito longos para variáveis e métodos e, sempre que possível, divida seu programa em partes menores – ou seja, modularize.
Lembre-se que passamos a maior parte do tempo em programação corrigindo e/ou modificando o código. Portanto gaste tempo escrevendo código mais legível, pois é mais fácil de depurar e manter.
Nas seções seguintes serão apresentados problemas e suas respectivas soluções. Cada seção irá focar em um ou mais temas do universo da programação em Java.
Introdução ao modelo de domínio
Domínio do problema é um termo usado para definir as áreas que precisam ser examinadas para solucionar o problema. Significa que deve-se olhar apenas para os tópicos de interesse, excluindo tudo que for irrelevante.
Modelo de domínio é uma visão conceitual preliminar do problema e normalmente é chamado diagrama de classes conceitual. O modelo conceitual representa as entidades, seus atributos e relacionamentos. Por exemplo, no modelo de domínio Acadêmico Escolar identificamos as seguintes entidades: Curso, Disciplina, Professor, Aluno e Matrícula; e os seguintes relacionamentos: Professor ministra Disciplina, Curso é composto de Disciplina, Aluno matricula-se em Disciplina. Avançando um pouco mais, pode-se definir uma entidade Pessoa que tem como entidades derivadas o Professor e o Aluno.
Para representar um modelo de domínio geralmente usamos o diagrama de classes. Num diagrama de classes, as classes são representadas por retângulos divididos em três partes, como mostra a Figura 1.
Outros elementos do diagrama são mostrados no diagrama da Figura 2, que representa o domínio Acadêmico Escolar, do exemplo citado anteriormente. Generalização representa o relacionamento é-um, como no caso de Professor é uma Pessoa. Agregação representa o relacionamento tem-um, tal como Curso tem Disciplina. Associação representa ligação entre entidades, tal como Aluno matricula-se em Disciplina. Uma associação indica que uma das classes, no mínimo, faz referência à outra. O número de objetos que referenciam o outro em uma associação é representado pela multiplicidade. No exemplo mostrado, a representação 0..* significa que um Aluno matricula-se em zero ou mais disciplinas, e que em uma Disciplina zero ou mais alunos podem se matricular. Além desse caso de multiplicidade, existem outros, tais como:
- ...
Quer ler esse conteúdo completo? Tenha acesso completo
Confira outros conteúdos:
Programação x Concurso Público
Osvaldo aprendeu programação
DevMedia x Netflix: Onde investir meu...
Por Carlos Em 2011Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado! Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um Full-Stack Dev!Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.
Aceitar