domingo, 19 de janeiro de 2014

Como abordar um Problema? Dividir para Conquistar

Projectar o  programa antes de programá-lo


Nunca comece a programar a partir do nada. Deve-se sempre esquematizar alguns pseudo-códigos explicando o que o seu programa vai fazer (em um nível mais elevado) antes de começar a programar.

Quando se começa a escrever um programa sem ter pensado nele antes, fica difícil visualizá-lo como um todo. Criando um rascunho prévio do programa, podem aparecer várias abordagens do problema e as dificuldades ficam mais fáceis de serem superadas. Esquematizar o programa ajudar a fixar exactamente o que se deseja e economiza-se bastante tempo em frente ao monitor na tentativa de escrever um programa que cumpra o desejado.

Escreva um código legível

Escrever um código legível é muito importante para facilitar o entendimento de um programa. Até para o próprio criador do código. Um programa claro e auto-explicativo fica mais difícil  de se perder e torna muito mais fácil a depuração.

Comente seu código enquanto escreve, não depois


Comentários são ferramentas muito úteis para tornar o código mais legível. É interessante comentar tudo que não seja muito claro. Não comente algo que seja óbvio (p/ ex.: "i := 0 { Atribui ovalor 0 à variável i }" ). Comente algo como: "x:= 40 - Lenght(frase)/2 { x recebe a posição para frase ficar centralizada }".

Em programas muito grandes ou complicados, é interessante criar um cabeçalho comentado em cada função, definindo exactamente o que espera-se que ela faça, quais suas entradas e quais suas saídas. O pseudo-código rascunhado pode ser muito útil para isso. Agindo assim, não se precisa ler diversas linhas de código para saber o que uma função faz.

É recomendável que se escreva os comentários enquanto se escreve o programa, pois é menos provável que se escreva alguma coisa útil ou significativa depois. Escreva enquanto programa e seus comentários serão muito mais completos.

Utilize funções e procedimentos curtos e objectivos


Evite sempre funções/procedimentos grandes que englobem todo tipo de processamento. Separe algoritmos distintos em suas próprias funções/procedimentos. Projecte a  sua grande função/procedimento em várias pequenas, de forma que seu programa fique mais fácil de ler e entender.

Dessa forma, cada parte do seu programa fica bem definida e torna-se muito mais fácil escrevê-lo, pois pode-se fazê-lo passo a passo. Dessa forma, a cada parte que se termina, pode-se verificar se ela está correta. Além disso a localização de um problema no programa também fica facilitada, pois ele se restringirá a um bloco menor de código.

Conclusão:

Lembre-se que a maior parte do tempo que se gasta programando é corrigindo e modificando código existente. Relativamente pouco tempo é realmente utilizado para adicionar coisas novas. Isso significa que você gastará muito tempo lendo o seu código, então faz sentido gastar algum tempo aprendendo a escrever um código legível. Código legível é fácil de escrever, fácil de depurar e fácil de manter. Você realmente sai ganhando!

Guia prático para resolução de problemas de programação 

1) Entender o problema

Estar certo de que tenha entendido o problema;
* O que é a entrada?
* O que é a saída?

2) Resolver o problema à mão

Resolva pequenas instâncias do problema à mão;
* O que acontece?
* Pensar  em casos variados;
* Pense em como (qual algoritmo) você utilizou para resolver o problema.

3) Definir o algoritmo

* Defina precisamente o algoritmo a ser utilizado
* Rascunhe as etapas do programa

4) Programar

* Como escrever o algoritmo na linguagem utilizada?
* Que estrutura de dado utilizar?
* Divida o programa em partes menores;
* Escreva um programa de fácil leitura;
* Pense nos casos patológicos.

4) Depurar

* Explique o programa para si mesmo;
* Por que funciona?
* A leitura de dados está sendo feita correctamente?
* Variáveis inicializadas?
* Verificar casos patológicos;
* Localizar o erro restringindo os blocos de códigos (cercando o erro)
* Comandos e loops aninhados correctamente?


Sem comentários:

Enviar um comentário