Lógica de programação é a capacidade de criar sequências lógicas para solucionar algum problema – seja ele qual for. Para essas sequências lógicas damos o nome de algoritmo. Esse conceito é muito amplo e aplicável para qualquer área do cotidiano, mas quando falamos em tecnologia da informação, precisamos saber que esse algoritmo será adaptado a uma linguagem de programação com o intuito de automatizar um processo.

Quando vamos à padaria comprar pão francês, por exemplo, precisamos criar um algoritmo para executar tal ação. Nessa sequência, nós ordenamos os atos em uma sucessão que faça sentido e seja capaz de atingir o objetivo inicial, afinal de contas, não faz sentido algum primeiro sair à rua para depois voltar e pegar a carteira, por exemplo. É importante entender também que existe mais de um algoritmo capaz de solucionar o meu problema e, desde que ele funcione, não existe certo ou errado – mas o conceito de  mais ou menos eficiente é válido aqui.

Seguem dois exemplos de sequências onde o intuito das duas é, no final, ter um ovo frito no prato.

Enquanto o exemplo da esquerda é mais cuidadoso e evita que a pessoa frite um ovo podre ou acabe espirrando óleo acidentalmente ao jogar o ovo na gordura quente,  por exemplo, a segunda é mais rápida e prática. As duas estão certas porque ambas conseguem chegar ao meu objetivo final, mas, talvez, a primeira seja mais eficiente por evitar problemas ao longo dos seus procedimentos.

Vale dizer também que no raciocínio em programação precisamos levar em conta três processos importantes: entrada de dados, processamento e saída de dados.

Representação de algoritmos

Existem três formas de representar um algoritmo: descrição narrativa, fluxograma e pseudocódigo. A primeira, como o nome já induz a entender, é a descrição escrita da sequência e o que ela fará, como fizemos no exemplo anterior. Já o segundo é uma forma visual que tem em um dos seus benefícios a facilidade em fazer um teste de mesa. O terceiro está mais próximo do código de programação e é, na verdade, uma adaptação deste para o idioma do programador – no Brasil temos o portugol, caso tenha interesse, conheça mais sobre ele aqui. Para compreender melhor esse conceito como um todo, esse artigo aqui pode te ajudar.

Exemplo de Fluxograma

Exemplo extraído do livro

Tipos de dados

Às vezes, ao escrever um código, precisamos criar variáveis e constantes que, de forma simplificada, são representações de valores – que podem variar ou não. Damos um nome à essas variáveis para, assim, sempre que quiser se referir àquele valor, utilizar seu nome e simplificar seu código.

Para o computador, qualquer informação inserida nele são dados. Por isso, ao escrever seu código é necessário descrever qual tipo de dado será inserido para, desta forma, a máquina conseguir identificar qual tipo de dado ela terá que ler e interpretar. Existem vários tipos de dados, numéricos (que se divide em reais e inteiros), literal e lógico. Enfim, caso tenha interesse em entender melhor esse ponto, indico esse link e para aprofundar seus conhecimentos nesse assunto, aconselho assistir essa apresentação do Instituto Federal do Rio Grande do Norte.

FIFO e LIFO

Outro conceito importante é o de Pilha e Fila. Na pilha, os elementos são inseridos um em cima do outro e, no momento de retirá-los, devo remover sempre o de cima até o último. Vem daí LIFO, do inglês “Last in, first out. Assim, em tradução livre, “O primeiro que entra é o último a sair”.

Exemplo Visual de uma Pilha – LIFO
Já na fila, temos o contrário. No FIFO, do inglês “First in, first out”, ou seja, “O primeiro a entrar será o primeiro a sair”.

Exemplo Visual de uma Fila – FIFO
Quer entender um pouco mais sobre Lifo e Fifo? Então recomendo que leia este artigo.

Treinando algoritmos

Agora que você já tem uma ideia sobre o que é lógica de programação e provavelmente já leu os artigos sugeridos acima, chegou a hora de entender na prática o assunto desse texto e exercitar seu raciocínio.

Inicialmente, pode ser bacana você começar fazendo exercícios de lógica que não necessitem conhecimento prévio em uma linguagem e que apenas treine sua habilidade em resolver problemas com uma sequência que tenha nexo. Usar esse caderno de exercícios da PUC Minas é uma boa maneira de começar porque, além de trazer uma série de exercícios legais, ele também dá uma ideia básica sobre lógica formal.

Se você quer desafios que envolvam mais a lógica de programação em si, o site da Maratona de Programação Brasileira disponibiliza as atividades e respostas das provas dos anos anteriores. Já o URI Online Judge é uma plataforma que traz uma série de problemas e te permite criar algoritmos usando linguagens de programação, além de ajudar e ser ajudado por outros usuários.

Caso ainda tenha ficado alguma dúvida ou você queira pesquisar um pouco mais, essa aula traz as ideias abordadas aqui no texto de forma bem didática e possui uma sequência com outras aulas bem bacanas.

Linguagem de Programação e Tipos de dados

Agora que você já tem uma ideia geral e básica de lógica de programação, podemos começar a pensar como essas sequências podem ser descritas ou adaptadas em uma linguagem de programação e como essas linguagens funcionam.

Primeiramente, é importante entender que uma linguagem de programação é uma espécie de tradutor entre computador e o ser humano.

Por exemplo, pense que a sua máquina é uma pessoa de outro continente que está perdida e te pediu orientações. Mas nem você e nem ela entende a língua que o outro fala. É aí que a linguagem de programação entra, como uma espécie de tradutor que conseguirá manter a comunicação entre você e a máquina.  Ainda confuso? Esse link pode te ajudar.

Existem vários tipos de linguagens de programação e a escolha entre a mais ou menos funcional dependerá do tipo de problema que você, desenvolvedor, deverá resolver. A sintaxe – ou formato de comandos – entre essas linguagens muda de uma para outra e é por isso que é tão importante o programador dominar a lógica de programação. Já que ela dará uma ideia da estrutura que um comando inserido em uma linguagem deverá seguir.

Para separar essas diferentes linguagens em grupos, utiliza-se a ideia de paradigma de programação. Essa divisão levará o programador a entender a estrutura que ele deverá seguir dentro daquele grupo. Nessa apresentação você consegue ter uma ideia melhor sobre alguns paradigmas.

Referências Bibliográficas e Leituras Complementares

Autor

Ismael Soares é Gerente de Engenharia de Software na Bluesoft em São Paulo. É formado em banco de dados pela Faculdade Impacta de Tecnologia e possui mais de 14 anos com experiências em análise e desenvolvimento de sistemas. Já trabalhou com diversas tecnologias, entre elas: VB6, ASP, PHP, C#.NET, VB.NET, ASP.NET, PL/SQL, T-SQL, Groovy, Ruby e Java. Já participou de diversos projetos com banco de dados entre eles: Oracle, MSSQL Server, MySQL e Postgree.

Deixe aqui o seu comentário