Olá pessoal, sejam bem vindos a mais uma série de quick tips que começarei a publicar aqui na DevMedia. Se você reparar bem estou dando preferência para tratar de assuntos pouco comentados aqui mas que são fundamentais para o desenvolvimento de aplicações. Foi assim com a série HTML que embora não seja usado diretamente e fundamental para um perfeito entendimento do desenvolvimento de aplicações Web.

Nesta nossa série de quick tips entrarei em um assunto pouco explorado e discutido no meio dos desenvolvedores porem extremamente importante para o desenvolvimento de Softwares, a logica de programação. Alguns desenvolvedores hoje em dia oo são por maioria de votos, rsrsrsrsrs. Ou seja, aprenderam na marra a desnevolver e hoje se viram como podem.

Mas será que seus códigos são realmente eficientes? Não estou perguntando se funciona ou se esta certo, quero saber se são eficientes. Nos treinamentos oficiais de Delphi que ministro 90% dos alunos ja programam ou em DElphi ou em alguma outra linguagem e nestes treinamentos e muito comum eles se surpreenderem com um rotina que eu mostra com poucas linhas que eles faziam com dezenas ou as vezes centenas de linhas.

Pois bem, a lógica de programação nos auxilia nisto. Ela nos ajuda a otimizar as soluções dos nossos problemas. Mas toda esta parte teorica será vista durante esta série. MAs ja quero adiantar uma coisa. Talvez você possa esta se perguntado: Pra que estudar lógica. Pois bem eu te faço um desafio. Deixo aqui um problema, uma questão para ser resolvido por você e ai então você tire suas próprias conclusões. Então ai vai:

Você seria capaz de desenvolver um algoritmo que dados três valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se é um triângulo equilátero, isósceles ou escaleno. Se eles não formarem um triângulo, emitir a mensagem “Não é Triângulo”.

Antes de começar a elaboração do algoritmo, torna-se necessária a revisão de algumas propriedades e definições.

PROPRIEDADE: O comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos os outros dois lados.


Enfim esta posto o desafio. Você pode postar a solução no comentário deste post. Enquanto isso vamos estudar um pouco sobre LPE (Lógica de Programação Estruturada).

Resolução de Problemas

    A forma pela qual resolvemos os problemas não é muito clara, geralmente o fazemos através de tentativas e erros, assimilando os resultados. Quando temos que resolver problemas em computação, antes de pensarmos em linguagens (softwares) ou máquinas (hardware), é necessário determos especificamente na solução do problema, no O QUE gostaríamos que o computador fizesse.

É necessário que o procedimento de resolução de problemas esteja organizado facilitando assim o entendimento, correção e implementações que forem necessários. A grande dificuldade para a maioria das pessoas que estão começando é que a experiência tem um papel importante, como veremos nas AFINIDADES, e só a adquirimos após muitas tentativas.

Estratégias para Resolução de Problemas


    Estratégias são os métodos genéricos. Quando relacionados à solução de problemas, são genéricos de solução, ou seja, são aplicáveis a várias classes de problemas. As principais estratégias a serem seguidas na resolução de um problema são:
 

1- Especifique os problemas e entenda-o completamente.

     Os problemas geralmente são especificados de forma confusa, pois são ambíguos, enganosos e tem muitos detalhes irrelevantes. Precisam ser claros, pois nada adiantava tentar resolver se são problemas confusos. Nunca tente resolver um problema antes de ter certeza de saber exatamente qual é o problema.


2. Torne explícitas as regras e os dados que estão implícitos
.

    Os problemas raramente são especificados por completo .Em muitos casos existem regras e dados que são tomados como conhecidos. Nunca tente chegar a uma solução antes de ter certeza claramente todas as regras e dados necessários para resolver o problema. Torne-os explícitos de modo a verificar se eles se aplicam ao problema.


3. Elimine os detalhes supérfluos.


    Sabendo que a quantidade de informações com que podemos lidar na solução de um problema é limitada. Devemos retirar as informações não necessárias de forma a diminuir a complexidade do problema. Os detalhes supérfluos podem levar a soluções erradas, pois desviam a  atenção das informações relevantes.


4. Entre no Problema.

    Muitas vezes, quando resolvemos um problema, achamos que a solução é óbvia. Isto acontece porque quando estamos resolvendo o problema, entramos nele, no sentido de ficarmos envolvidos com suas características. Existem várias formas de entrar em um problema: uso de símbolos, escolha de notação, solução do problema para casos especiais, desenho de diagramas e verificação de variação do problema.


5.Use todas as informações disponíveis.

    Cuidado ao retirar informações que são aparentemente supérfluas, pois as falhas destas podem ser sentidas mais tarde, em outra fase da solução do problema.


6. Decomponha o Problema.

    A decomposição de um problema nos leva a sub programas que possuem complexidade menor que o problema original. Logo a sua solução é mais simples de ser alcançada. Na divisão crie sub programas que sejam tão independentes quanto o possível. Uma forma de definir sub programas é definir sub objetivo, ou seja, objetivos intermediários que permite chegar aos poucos ao objeto final.

7. Trabalhe para trás

    Se o objetivo pode ser melhor especificado que o estado inicial, trabalhe do fim para o início. Procure situações que os sub objetos possam ser mais facilmente escolhidos pelos resultados finais dos sub programas.



Enfim esta foi apenas uma rápida introdução. Temos muita coisa boa para aprender e a cada Tips estarei colocando um exercício de lógica e na próxima tips colocarei a solução.

Então até lá. Abraços !!!