MAS E A TAL DA LÓGICA?

Atualizado: 11 de set. de 2021


Nesta série de posts, eu vou preparar vocês com conhecimento básico e necessário para utilizar a linguagem de consulta PL/SQL e lhe preparar para ser apto a criar consultas eficazes. Mas antes de entrarmos neste mundo, eu gostaria de discutir e simplificar alguns tópicos que são de grande importância. Vamos começar falando sobre como raciocinar de forma lógica para criarmos planos de ação e organizar tarefas, seguindo alguns fundamentos da engenharia de software.




Estamos aqui para solucionar problemas!


Tecnologia é o conjunto de técnicas, habilidades, métodos e processos usados na produção de bens ou serviços, ou na realização de objetivos, como em investigações científicas. Tecnologia pode ser o conhecimento de técnicas, processos e similares. Isso também pode ser embutido em máquinas para permitir a operação destas sem conhecimento detalhado do seu funcionamento.

Sistemas que aplicam tecnologia ao pegar um input, mudando-o de acordo com o funcionamento do sistema e, então, produzindo um resultado são referidos como sistemas de tecnologia ou sistemas tecnológicos.


Em supra-sumo, tecnologias são criadas a todo o momento para resolver problemas do dia a dia e automatiza-los. E com isso, a área de tecnologia da informação é um grande e extensivo mundo, repleto de colaboradores a fim de contribuir com pedaços de código e até mesmo máquinas, com complexas lógicas por trás, a fim de solucionar um problema que atinge diversas pessoas. Ou garantir que nenhum problema ocorra...


Claro, isso é apenas a ponta do iceberg e limitar a definição dessa área a estas poucas palavras não faz jus. Mas com esse pequeno resumo, podemos ter uma idéia da imensidão de possibilidades, por que e como a tecnologia da informação é tão fundida no nosso dia a dia.


Em desenvolvimento de software, as premissas básicas é de que todo programa pensado em resolver problemas deveria ter um ciclo de desenvolvimento aproximado a lista:

Ao nos depararmos com um problema, o primeiro passo é compreendê-lo inteiramente. Como dizem, quem está perdido e começa a andar sem rumo, tende a se perder ainda mais no caminho...


Assim, é uma boa estratégia perguntar:

  • O que eu devo descobrir ou calcular? Qual é o objetivo?

  • Quais são os dados disponíveis? São suficientes?

  • Quais as condições necessárias e suficientes para resolver o problema?

É importante desenhar, rascunhar e usar de todos os artifícios para montar a “lógica” que leve a solução. Essa é a primeira etapa, a análise do problema ou requerimento que consiste na compreensão e estratégia.


Algoritmo nada mais é que uma forma de representar a lógica que desejamos aplicar. Assim, antes de construir um algoritmo, precisamos definir alguma estratégia.

Se você quer uma forma organizada para chegar em uma solução plausível, as vezes é preciso filosofar e buscar na memória referencias. Na área técnica nos temos o costume de reciclar e reaproveitar experiências do passado, principalmente se você já passou por problemas parecidos. Nisso podemos criar uma estratégia para a solução, indagando as seguintes questões:

  • Já resolvi algum problema similar? Qual?

  • Se sim, a solução pode ser aproveitada por analogia, para referência ou por ser parte da solução do novo problema? Observe se será necessário introduzir elementos novos ou modificar os existentes.

  • Se o problema for muito complexo, provavelmente pode ser fracionado em partes menores de soluções mais simples. Assim facilitando a própria compreensão da complexidade e nisso podemos calcular quanto tempo leva para um problema ser resolvido.

  • É possível enxergar o problema de outra forma, de modo que o entendimento se torne mais simples? Lembre-se que descer uma escada de costas é bem mais complicado do que da maneira natural e chegamos sempre ao mesmo lugar... então não complique, simplifique!

Para aqueles ansioso como eu ou que não tem uma noção de como matar um dragão com uma espada, não tente criar a solução inteira, antes de rascunhá-la!!! O que temos em comum com engenheiros e até pessoas que trabalham em inteligência secreta do governo, é o ato de desenhar soluções antes de aplicá-las. O plano é tão importante quanto colocar a mão na massa!


Então aqui vai alguns passos para te ajudar a se organizar no processo:

  1. Crie um algoritmo informal com as instruções que resolvam o problema ou que ao menos pareçam resolvê-lo. Essa é a etapa do "brainstorm" onde criamos as mais loucas possibilidades e códigos que provavelmente não nos levaram a lugar algum, mas nos dão uma visão e uma margem do que trabalhar e com isso vamos aperfeiçoando.

  2. Verifique se cada passo desse algoritmo está correto, simulando-o num papel (teste de mesa ou simulação).

  3. Identifique os erros e os trate um por vez, sem nunca perder de vista o objetivo real do programa. Esse processo ordenado logicamente faz você aprender a desenvolver soluções.

Quando se elabora um esboço da solução do problema, para em seguida ir-se refinando essa solução, até chegar-se a uma sequência básica de operações que resolva o problema, usamos uma das principais técnicas relacionadas a construção de algoritmos, intitulada Top-Down.


Essa técnica te leva a geração de um pseudocódigo, que chamaremos de Português Estruturado (ou conhecido como portugol...).

O Português Estruturado, na opinião da maioria dos autores de livros de análise, programação ou algoritmos é muito mais eficaz que fluxogramas (estes são muito úteis em administração, o que não é o nosso caso aqui).


Já o projeto do programa nada mais é que o algoritmo gerado, que visará otimizar o

“Binômio tempo-espaço, isto é, visando obter um programa que apresente um tempo de execução mínimo e com o melhor aproveitamento de espaço de memória” Salvetti e Barbosa.

Aproveitando a oportunidade para deixar a recomendação deste livro para os interessados, já que me ajudou MUITO!


Bem... Essa é a segunda etapa, o projeto do programa, que é a criação do algoritmo.


A implementação desse rascunho todo é sua codificação numa linguagem de programação familiar. A implementação pode ser trivial, com a mera substituição de instruções algorítmicas em instruções em uma linguagem ou muito trabalhosa, dependendo da linguagem escolhida...


E essa é a terceira etapa, a implementação do programa!


A fase de testes vem crescentemente sendo valorizada, hoje temos não somente a área de teste, como também temos a área de garantia de qualidade, inclusive, tenho um bate-papo com uma especialista no assunto lá no podcast, que você pode ouvir aqui.


Também devemos lembrar que quem faz o programa, raramente testa seus pontos deficientes. E isso ocorre porque se o analista tivesse percebido essas deficiência, provavelmente o programa não apresentaria esses problemas. Há várias técnicas para testes (caixa branca, caixa preta, entre várias outras).


Negligenciar essa fase é fatal e crucial para o bom funcionamento da sua solução. Afinal, você colocaria para voar um foguete, com pessoas dentro, sem o testar? Provavelmente você não vai querer a conta do desastre vinculado com você, então é por isso que essa é a quarta etapa, os testes do programa.


A verificação do programa visa demonstrar que o algoritmo realmente resolve o problema proposto em qualquer que seja sua instância.

Essa é a quinta etapa, a