Quem está começando a estudar desenvolvimento de software, certamente já ouviu o termo “lógica de programação”, quer seja em artigos pela internet, matérias na faculdade ou cursos como o nosso próprio curso aqui da TreinaWeb.
Por muitas vezes, o termo pode parecer confuso ou muito genérico, principalmente para quem está dando os primeiros passos nessa área… Mas o que é, afinal, a tal lógica de programação?
Programação exige capacidade analítica apurada
Escrever um trecho de código em qualquer linguagem que seja exige uma capacidade analítica um pouco mais apurada. Isso se deve ao fato de que um computador não é um ser inteligente, como ouvimos falar por várias vezes. Um computador simplesmente executa, de maneira sequencial, um conjunto de instruções pré-disponibilizadas através de um programa, programa este escrito com uma linguagem de programação qualquer.
O grande ponto é que, como um computador simplesmente executa estas linhas de programação de maneira sequencial, nós precisamos escrever uma sequência lógica que faça com que o programa se torne capaz de resolver um determinado problema. E para escrevermos essa sequência lógica de maneira correta, nós precisamos desenvolver a capacidade de analisar os diferentes problemas de maneira mais profunda.
Para que esta questão da capacidade analítica fique mais clara, vamos imaginar uma situação simples: a travessia de uma rua. Se pararmos para refletir, nós precisamos dos seguintes passos:
> Olhar para os lados da rua;
> Se não estiver vindo carro, atravessar a rua;
> Caso contrário, não atravessar.
Este é o pensamento básico para atravessarmos uma rua em segurança. Se fôssemos repassar este pensamento para um computador, não poderíamos ser tão “simplistas”, pois o computador simplesmente segue um conjunto de instruções de maneira sequencial. Cabe a nós repassar estas instruções para o computador da maneira mais clara e direta possível. E para repassarmos estas instruções da maneira correta, nós precisamos analisar os problemas com uma capacidade analítica mais apurada.
Se nós fôssemos reescrever o mesmo pensamento para atravessarmos a rua em segurança realizando uma análise mais apurada, poderíamos chegar na seguinte conclusão:
> Virar o pescoço para o lado direito;
> Verificar se existe algum veículo vindo do lado direito em nossa direção;
> Caso algum veículo esteja vindo do lado direito:
>>>>> Abortar a operação, pois já não é seguro atravessar;
> Virar o pescoço para o lado esquerdo.
> Verificar se existe algum veículo vindo do lado esquerdo em nossa direção;
> Caso algum veículo esteja vindo do lado esquerdo:
>>>>> Abortar a operação, pois já não é seguro atravessar;
> É seguro atravessar: iniciar a travessia da rua.
Veja que nosso pensamento foi esmiuçado em uma sequência lógica que é capaz de resolver o problema da travessia da rua em segurança. Esse esmiuçamento só pôde ser feito porque nós analisamos o problema da travessia da rua de uma maneira mais analítica e profunda. Sem essa análise mais apurada, é impossível criarmos um programa de computador; já que, como dito anteriormente, um computador simplesmente segue as sequências lógicas que nós repassamos a ele através da escrita de um programa.
Essa capacidade analítica parece algo banal em um primeiro momento, mas essa é uma falsa impressão. Nós não estamos acostumados a fazer análises tão esmiuçadas no nosso dia a dia: essas análises são feitas meio que de maneira automática pelo nosso cérebro. Nós, muitas vezes, nem reparamos na quantidade de análises e decisões que nosso cérebro toma no simples ato de atravessar a rua.
Mas, repassar isso para o computador é um desafio, pois um computador não toma decisões de maneira autônoma igual o nosso cérebro faz: cabe a nós repassarmos estas instruções já esmiuçadas para o computador. Por isso, nós precisamos na verdade reeducar nosso cérebro e nosso fluxo de pensamentos para que consigamos trazer à tona estes pensamentos automáticos, de maneira que possamos os repassar também para o computador enquanto estamos escrevendo um programa.
E o que é o tal do algoritmo?
Curso Lógica Orientada a Objetos - Avançando na Orientação a Objetos
Conhecer o cursoTodo fluxo computacional criado para resolver um problema pode ser chamado de algoritmo. Um algoritmo é, literalmente, uma sequência lógica de passos com um início, meio e fim, que foi concebida para resolver algum problema específico.
Nós poderíamos classificar aquele pensamento esmiuçado que desenvolvemos para atravessar a rua de um algoritmo: se trata de uma sequência lógica de passos, com início, meio e fim, e que foi desenvolvida com uma finalidade específica: em nosso caso, atravessar a rua em segurança.
Quando estamos criando programas e aplicações, nós estamos o tempo inteiro desenvolvendo algoritmos para resolver os mais variados problemas. Se precisamos nos conectar a um banco de dados para ler alguma tabela, nós precisaremos de alguns algoritmos para resolver este problema: precisaremos de um algoritmo para nos conectarmos a um banco de dados, de um algoritmo que consiga ler uma tabela e converter em uma representação a ser exibida para o usuário e outro algoritmo para exibir essas representações. E desenvolver todos estes algoritmos é algo desafiador, pois envolve a capacidade analítica aprofundada que discutimos anteriormente.
E onde entra a lógica de programação?
A lógica de programação está justamente no desenvolvimento dessa capacidade analítica aprofundada para resolução de problemas, os quebrando em algoritmos. Como vimos anteriormente, isso não é algo tão trivial, já que não é algo natural para nós como seres humanos por causa de nossas capacidades cognitivas. Quando aprendemos a programar, nós literalmente precisamos reaprender a pensar e a organizar estes nossos pensamentos dentro dessas sequências lógicas, formando os algoritmos para resolver os diferentes problemas que iremos enfrentar… Ou seja: nós precisamos aprender uma nova forma lógica de pensar.
Pelo fato de essa reaprendizagem de pensamento ser tão essencial para nos tornarmos bons desenvolvedores de software, a matéria ou curso de lógica de programação é o primeiro contato que futuros desenvolvedores e profissionais da área de TI irão ter com a área de desenvolvimento de software. Sem esse processo de reaprendizagem de formulação de pensamentos, é impossível criarmos algoritmos, programas e aplicações para resolver qualquer tipo de problema.
O que não é lógica de programação?
Pelo fato de lógica de programação acabar sendo considerada uma matéria em cursos técnicos e de graduação, há uma tendência de que os alunos decorem o conteúdo. Em cursos de lógica de programação, geralmente o aluno é submetido a situações onde ele precisará desenvolver algum algoritmo para resolver algum tipo de problema.
Os tipos de problemas geralmente propostos para os alunos resolverem geralmente são recorrentes em quaisquer cursos: verificação se um número é par ou ímpar, se um número é maior que o outro, o cálculo de uma equação de segundo grau e vários outros são problemas geralmente propostos para que os alunos resolvam na disciplina de lógica de programação. Muitas vezes, por comodidade ou até mesmo pela filosofia que muitas instituições de ensino abordam no Brasil, o aluno começa a achar que decorar um algoritmo é suficiente. E, de fato, muitas vezes para a disciplina de lógica de programação, esse ato de decorar um algoritmo é suficiente para que o aluno seja aprovado na matéria.
O grande problema é quando nós somos trazidos para ambientes fora dos ambientes propostos pela disciplina de lógica de programação, como problemas do mundo real, por exemplo. Nestes casos, o aluno não terá provavelmente algoritmos decorados para resolver todas as situações que surgirem, pois isso é impossível. E, pelo fato de o aluno começar a se preocupar mais em decorar os algoritmos ao invés de desenvolver esta capacidade analítica apurada, este não consegue se dar bem nestes tipos de situações.E aí, como resultado, surgem a raiva e a frustação com a área de desenvolvimento de software.
É importante deixar claro que lógica de programação em geral não existe para que você decore como verificar se um número é ímpar ou par. A intenção do estudo de lógica de programação é desenvolver esta capacidade analítica aprofundada, tornando o aluno capaz de analisar de maneira analítica quaisquer tipos de problemas e propor soluções algorítmicas.
Se um aluno foca seus esforços de estudo em decorar os algoritmos ao invés de desenvolver esta capacidade de análise apurada (já que esta capacidade de análise não é algo completamente natural para nós), ele estará se sabotando na verdade: ele até será capaz de passar na disciplina de lógica de programação, mas certamente não será capaz de enfrentar estes problemas que aparecem no dia a dia.
Concluindo
Estudar lógica de programação não consiste em decorar diferentes algoritmos para resolução de problemas, pois é impossível decorar todos os algoritmos para a resolução de todos os problemas no mundo. Muitas vezes, um mesmo problema, inclusive, pode ser resolvido de maneiras diferentes. A maneira de resolução pode até variar com o estilo de codificação que estivermos utilizando: certamente, você resolveria um problema de uma determinada maneira se estivesse utilizando a orientação a objetos, por exemplo.
Mas a resolução desse mesmo problema poderia ser completamente diferente se você estivesse utilizando o paradigma funcional… Embora provavelmente você vá escrever código de duas maneiras completamente diferentes nessa situação, ambas estão corretas se elas estiverem resolvendo o problema proposto. Por isso, é completamente inviável ficar decorando código, nem para simplesmente passar na disciplina de lógica de programação de seu curso técnico ou graduação.
É importante ressaltar que, para resolvermos diferentes problemas através dos computadores, nós precisamos desenvolver algoritmos coesos, estruturados e dedicados para a resolução de um determinado problema. Para que sejamos capaz de desenvolver estes algoritmos, precisamos desenvolver uma capacidade analítica muito mais apurada, capacidade esta que irá nos dar a habilidade para resolvemos praticamente qualquer tipo de problema que enfrentarmos em nosso dia a dia como profissionais da área de TI. O estudo da lógica de programação verdadeira visa na verdade justamente o desenvolvimento destas habilidades analíticas e de organização dos fluxos de pensamento.
Veja nosso guia de introdução a programação que abrange outros assuntos importantes!