Você está na página 1de 6

O que Lgica de

Programao?
Lgica de Programao a tcnica de desenvolver sequncias lgicas para
atingir um determinado objetivo. Essas sequncias lgicas so adaptadas para
linguagem de computador pelo programador a fim de produzir software.
Uma sequncia lgica denominada algoritmo. Ento podemos dizer em
linguagem mais coloquial, que um algoritmo uma sequncia de passos para
atingir um determinado objetivo. Como podemos ver a lgica de programao
trata basicamente de construir algoritmos que sero transformados em
programas de computador.
Programas de computador, portanto so instrues lgicas que obtm dados do
meio externo (que pode ser um usurio ou um arquivo) e fazem o
processamento desses dados gravando as informaes alguma mdia como o
HD ou enviando-as para o usurio atravs de algum dispositivo. Na realidade,
tudo o que vemos em um computador em termos de sistema operacional e
aplicativos, so programas que foram desenvolvidos por programadores. O
programador necessita ter um pensamento lgico bastante desenvolvido,
analisando sempre causa e efeito, e acima de tudo ser paciente e persistente.
Quem quer comear uma carreira como programador deve primeiro aprender
lgica de programao. Uma base slida em lgica garante ao iniciante
conhecimentos suficientes para aprender qualquer linguagem de programao,
seja ela C, C++, Java, Object Pascal (Delphi), PHP, VB, C#, etc.
Agora que voc j conhece a importncia de aprender lgica de programao,
comece a estudar e garanta o seu emprego, afinal estamos com falta de
programadores no mercado.

Lgica de Programao a tcnica de desenvolver algoritmos (sequncias


lgicas) para atingir determinados objetivos dentro de certas regras baseadas
na Lgica matemtica e em outras teorias bsicas da Cincia da Computao e
que depois so adaptados para a Linguagem de Programao utilizada pelo
programador para construir seu software.

Um algoritmo uma sequncia no ambgua de instrues que executada at


que determinada condio se verifique. Mais especificamente, em matemtica,
constitui o conjunto de processos (e smbolos que os representam) para efetuar
um clculo.

O conceito de algoritmo frequentemente ilustrado pelo exemplo de uma


receita, embora muitos algoritmos sejam mais complexos. Eles podem repetir
passos (fazer iteraes) ou necessitar de decises (tais como comparaes ou
lgica) at que a tarefa seja completada. Um algoritmo corretamente executado
no ir resolver um problema se estiver implementado incorretamente ou se
no for apropriado ao problema.

Um algoritmo no representa, necessariamente, um programa de computador,


e sim os passos necessrios para realizar uma tarefa. Sua implementao pode
ser feita por um computador, por outro tipo de autmato ou mesmo por um ser
humano. Diferentes algoritmos podem realizar a mesma tarefa usando um
conjunto diferenciado de instrues em mais ou menos tempo, espao ou
esforo do que outros. Tal diferena pode ser reflexo da complexidade
computacional aplicada, que depende de estruturas de dados adequadas ao
algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que voc
vista primeiro as meias e os sapatos antes de vestir a cala enquanto outro
algoritmo especifica que voc deve primeiro vestir a cala e depois as meias e
os sapatos. Fica claro que o primeiro algoritmo mais difcil de executar que o
segundo apesar de ambos levarem ao mesmo resultado.

O conceito de um algoritmo foi formalizado em 1936 pela Mquina de Turing de


Alan Turing e pelo clculo lambda de Alonzo Church, que formaram as primeiras
fundaes da Cincia da Computao.

Formalismo

Um programa de computador essencialmente um algoritmo que diz ao


computador os passos especficos e em que ordem eles devem ser executados,
como por exemplo, os passos a serem tomados para calcular as notas que
sero impressas nos boletins dos alunos de uma escola. Logo, o algoritmo pode
ser considerado uma sequncia de operaes que podem ser simuladas por
uma mquina de Turing completa.

Quando os procedimentos de um algoritmo envolvem o processamento de


dados, a informao lida de uma fonte de entrada, processada e retornada
sob novo valor aps processamento, o que geralmente realizado com o auxlio
de uma ou mais estruturas de dados.

Para qualquer processo computacional terico, o algoritmo precisa estar


rigorosamente definido, especificando a maneira que ele se comportar em
todas as circunstncias. A corretude do algoritmo pode ser provada
matematicamente, bem como a quantidade assinttica de tempo e espao
(complexidade) necessrios para a sua execuo. Estes aspectos dos algoritmos
so alvo da anlise de algoritmos. As implementaes, porm, podem se limitar
a casos especficos.

A maneira mais simples de se pensar um algoritmo por uma lista de


procedimentos bem definida, no qual as instrues so executadas passo a
passo a partir do comeo da lista, uma ideia que pode ser facilmente
visualizada atravs de um fluxograma. Tal formalizao adota as premissas da
programao imperativa, que uma forma mecnica para visualizar e
desenvolver um algoritmo. Concepes alternativas para algoritmos variam em
programao funcional e programao lgica.

Trmino do algoritmo

Alguns autores restringem a definio de algoritmo para procedimentos que


eventualmente terminam. Minksy constatou que se o tamanho de um
procedimento no conhecido de antemo, tentar descobri-lo problema
indecidvel j que o procedimento pode ser executado infinitamente, de forma
que nunca se ter a resposta. Alan Turing provou em 1936 que no existe
mquina de Turing para realizar tal anlise para todos os casos, logo no h
algoritmo para realizar tal tarefa para todos os casos. Tal condio conhecida
atualmente como problema da parada. Basicamente, isto quer dizer que no
existe um programa de computador que possa antever, de forma geral, se um
outro programa de computador vai parar algum dia.

Para algoritmos interminveis o sucesso no pode ser determinado pela


interpretao da resposta e sim por condies impostas pelo prprio
desenvolvedor do algoritmo durante sua execuo. Por exemplo, podemos
querer um algoritmo interminvel para controlar um sinal de trnsito.

Implementao

A maioria dos algoritmos desenvolvida para ser implementada em um


programa de computador. Apesar disso eles tambm podem ser implementados
por outros modos tais como uma rede neural biolgica (tal como no crebro
quando efetuamos operaes aritmticas) em circuitos eltricos ou at mesmo
em dispositivos mecnicos.

Para programas de computador existem uma grande variedade de linguagens


de programao, cada uma com caractersticas especficas que podem facilitar
a implementao de determinados algoritmos ou atender a propsitos mais
gerais.

Anlise de algoritmos

A anlise de algoritmos um ramo da cincia da computao que estuda as


tcnicas de projeto de algoritmos e os algoritmos de forma abstrata, sem
estarem implementados em uma linguagem de programao em particular ou
implementadas de algum outro modo. Ela preocupa-se com os recursos
necessrios para a execuo do algoritmo tais como o tempo de execuo e o
espao de armazenamento de dados. Deve-se perceber que para um dado
algoritmo pode-se ter diferentes quantidades de recursos alocados de acordo
com os parmetros passados na entrada. Por exemplo, se definirmos que o
fatorial de um nmero natural igual ao fatorial de seu antecessor multiplicado
pelo prprio nmero, fica claro que a execuo de fatorial(10) consome mais
tempo que a execuo de fatorial(5).

Um meio de exibir um algoritmo a fim de analis-lo atravs da implementao


por pseudocdigo em portugus estruturado. O exemplo a seguir um
algoritmo em portugus estruturado que retorna (valor de sada) a soma de
dois valores (tambm conhecidos como parmetros ou argumentos, valores de
entrada) que so introduzidos na chamada da funo:

funo SomaDeDoisValores (A numrico, B numrico)


inicio
declare SOMA numrico
SOMA <-- A + B
retorne (SOMA)
fim

Classificao
Classificao por implementao

Pode-se classificar algoritmos pela maneira pelo qual foram implementados.

Recursivo ou iterativo - um algoritmo recursivo possui a caracterstica


de invocar a si mesmo repetidamente at que certa condio seja satisfeita
e ele terminado, que um mtodo comum em programao funcional.
Algoritmos iterativo usam estruturas de repetio tais como laos, ou ainda
estruturas de dados adicionais tais como pilhas, para resolver problemas.
Cada algoritmo recursivo possui um algoritmo iterativo equivalente e vice
versa, mas que pode ter mais ou menos complexidade em sua construo.
possvel construir algoritmos que sejam ao mesmo tempo iterativo e
recursivo, provavelmente para aproveitar alguma otimizao de tempo ou
espao que isso permita.

Lgico - um algoritmo pode ser visto como uma deduo lgica


controlada. O componente lgico expressa os axiomas usados na
computao e o componente de controle determina a maneira como a
deduo aplicada aos axiomas. Tal conceito base para a programao
lgica.

Serial ou paralelo - algoritmos so geralmente assumidos por serem


executados instruo instruo individualmente, como uma lista de
execuo, o que constitui um algoritmo serial. Tal conceito base para a
programao imperativa. Por outro lado existem algoritmos executados
paralelamente, que levam em conta arquiteturas de computadores com
mais de um processador para executar mais de uma instruo ao mesmo
tempo. Tais algoritmos dividem os problemas em sub-problemas e o
delegam a quantos processadores estiverem disponveis, agrupando no final
o resultado dos sub-problemas em um resultado final ao algoritmo. Tal
conceito base para a programao paralela. De forma geral, algoritmos
iterativos so paralelizveis; por outro lado existem algoritmos que no so
paralelizveis, chamados ento problemas inerentemente seriais.

Determinstico ou no-determinstico - algoritmos determinsticos


resolvem o problema com uma deciso exata a cada passo enquanto
algoritmos no-determinsticos resolvem o problema ao deduzir os melhores
passos atravs de estimativas sob forma de heursticas.

Exato ou aproximado - enquanto alguns algoritmos encontram uma


resposta exata, algoritmos de aproximao procuram uma resposta prxima
a verdadeira soluo, seja atravs de estratgia determinstica ou aleatria.
Possuem aplicaes prticas sobretudo para problemas muito complexos, do
qual uma resposta correta invivel devido sua complexidade
computacional.
Classificao por paradigma

Pode-se classificar algoritmos pela metodologia ou paradigma de seu


desenvolvimento, tais como:

Diviso e conquista - algoritmos de diviso e conquista reduzem


repetidamente o problema em sub-problemas, geralmente de forma
recursiva, at que o sub-problema pequeno o suficiente para ser resolvido.
Um exemplo prtico o algoritmo de ordenao merge sort. Uma variante
dessa metodologia o decremento e conquista, que resolve um sub-
problema e utilizao a soluo para resolver um problema maior. Um
exemplo prtico o algoritmo para pesquisa binria.

Programao dinmica - pode-se utilizar a programao dinmica para


evitar o re-clculo de soluo j resolvidas anteriormente.

Algoritmo ganancioso - um algoritmo ganancioso similar


programao dinmica, mas difere na medida que as solues dos sub-
problemas no precisam ser conhecidas a cada passo, uma escolha
gananciosa pode ser feita a cada momento com o que at ento parece ser
mais adequado.

Programao linear

Reduo - a reduo resolve o problema ao transform-lo em outro


problema. chamado tambm transformao e conquista.

Busca e enumerao - vrios problemas podem ser modelados atravs


de grafos. Um algoritmo de explorao de grafo pode ser usado para
caminhar pela estrutura e retornam informaes teis para a resoluo do
problema. Esta categoria inclui algoritmos de busca e backtracking.

Paradigma heurstico e probabilstico - algoritmos probabilsticos


realizam escolhas aleatoriamente. Algoritmos genticos tentam encontrar a
soluo atravs de ciclos de mutaes evolucionrias entre geraes de
passos, tendendo para a soluo exata do problema. Algoritmos heursticos
encontram uma soluo aproximada para o problema.
Classificao por campo de estudo

Cada campo da cincia possui seus prprios problemas e respectivos


algoritmos, adequados para resolv-los. Exemplos clssicos so algoritmos de
busca, de ordenao, de anlise numrica, de teoria de grafos, de manipulao
de cadeias de texto, de geometria computacional, de anlise combinatria, de
aprendizagem de mquina, de criptografia, de compresso de dados e de
interpretao de texto.
Classificao por complexidade

Ver artigo principal: Complexidade computacional. Alguns algoritmos so


executados em tempo linear, de acordo com a entrada, enquanto outros so
executados em tempo exponencial ou at mesmo nunca terminam de serem
executados. Alguns problemas possuem mltiplos algoritmos enquanto outros
no possuem algoritmos para resoluo.

Você também pode gostar