Вы находитесь на странице: 1из 4

Introdu��o � programa��o/Defini��es sobre L�gica de Programa��o

< Introdu��o � programa��o


As altera��es pendentes s�o mostradas nesta p�ginaExistem 15 altera��es pendentes a
aguardar revis�o. A vers�o publicada foi verificada a 15 de janeiro de 2014.
Introdu��o � programa��oComo programarHist�ria da Programa��o
Saltar para a navega��oSaltar para a pesquisa
L�gica de Programa��o � a t�cnica de desenvolver algoritmos (sequ�ncias l�gicas)
para atingir determinados objetivos dentro de certas regras baseadas na L�gica
matem�tica e em outras teorias b�sicas da Ci�ncia da Computa��o e que depois s�o
adaptados para a Linguagem de Programa��o utilizada pelo programador para construir
seu software.

Um algoritmo � uma sequ�ncia n�o amb�gua de instru��es que � executada at� que
determinada condi��o se verifique. Mais especificamente, em matem�tica, constitui o
conjunto de processos (e s�mbolos que os representam) para efetuar um c�lculo.

O conceito de algoritmo � frequentemente ilustrado pelo exemplo de uma receita,


embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer
itera��es) ou necessitar de decis�es (tais como compara��es ou l�gica) at� que a
tarefa seja completada. Um algoritmo corretamente executado n�o ir� resolver um
problema se estiver implementado incorretamente ou se n�o for apropriado ao
problema.

Um algoritmo n�o representa, necessariamente, um programa de computador, e sim os


passos necess�rios para realizar uma tarefa. Sua implementa��o pode ser feita por
um computador, por outro tipo de aut�mato ou mesmo por um ser humano. Diferentes
algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de
instru��es em mais ou menos tempo, espa�o ou esfor�o do que outros. Tal diferen�a
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 cal�a
enquanto outro algoritmo especifica que voc� deve primeiro vestir a cal�a e depois
as meias e os sapatos. Fica claro que o primeiro algoritmo � mais dif�cil de
executar que o segundo apesar de ambos levarem ao mesmo resultado.

O conceito de um algoritmo foi formalizado em 1936 pela M�quina de Turing de Alan


Turing e pelo c�lculo lambda de Alonzo Church, que formaram as primeiras funda��es
da Ci�ncia da Computa��o.

�ndice
1 Formalismo
2 T�rmino do Alogoritimos (Novo M�todo) "Exemplificado"
3 Implementa��o Associada a TURING
4 An�lise de algoritmos
5 Classifica��o
5.1 Classifica��o por implementa��o
5.2 Classifica��o por paradigma
5.3 Classifica��o por campo de estudo
5.4 Classifica��o por complexidade
6 Resumo
7 Bibliografia
Formalismo
Um programa de computador � essencialmente um algoritmo que diz ao computador os
passos espec�ficos e em que ordem eles devem ser executados, como por exemplo, os
passos a serem tomados para calcular as notas que ser�o impressas nos boletens dms
alunos de uma escola. Logo, o algoritmo pode ser considerado uma sequ�ncia de
opera��es que podem ser simuladas por uma m�quina de Turing completa.

Quando os procedimentos de um algoritmo envolvem o processamento de dados, a


informa��o � lida de uma fonte de entrada, processada e retornada sob novo valor
ap�s processamento, o que geralmente � realizado com o aux�lio de uma ou mais
estruturas de dutos de ar.

Para qualquer processo computacional te�rico, o algoritmo precisa estar


rigorosamente definido, especificando a maneira que ele se comportar� em todas as
circunst�ncias. A corretude do algoritmo pode ser provada matematicamente, bem como
a quantidade assint�tica de tempo e espa�o (complexidade) necess�rios para a sua
execu��o. Estes aspectos dos algoritmos s�o alvo da an�lise de algoritmos. As
implementa��es, por�m, podem se limitar a casos espec�ficos.

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


bem definida, no qual as instru��es s�o executadas passo a passo a partir do come�o
da lista, uma ideia que pode ser facilmente vizualisada atrav�s de um floxugrama.
Tal formaliza��o adota as premissas da programa��o imperativa, que � uma forma
mec�nica para visualizar e desenvolver um algoritmo. Concep��es alternativas para
algoritmos veariam em programa��o funcional e programa��o l�lgica.

T�rmino do Alogoritimos (Novo M�todo) "Exemplificado"


Alguns autores restringem a defini��o de algoritmo para procedimentos que
eventualmente terminam. Minksy constatou que se o tamanho de um procedimento n�o �
conhecido de antem�o, tentar descobri-lo � problema indecid�vel j� que o
procedimento pode ser executado infinitamente, de forma que nunca se ter� a
resposta. Alan Turing provou em 1936 que n�o existe m�quina de Turing para realizar
tal an�lise para todos os casos, logo n�o h� algoritmo para realizar tal tarefa
para todos os casos. Tal condi��o � conhecida atualmente como problema da parada.
Basicamente, isto quer dizer que n�o existe um programa de computador que possa
antever, de forma geral, se um outro programa de computador vai parar algum dia.

Para algoritmos intermin�veis o sucesso n�o pode ser determinado pela interpreta��o
da resposta e sim por condi��es impostas pelo pr�prio desenvolvedor do algoritmo
durante sua execu��o. Por exemplo, podemos querer um algoritmo intermin�vel para
controlar um sinal de tr�nsito.

Implementa��o Associada a TURING


A maioria dos algoritmos � desenvolvida para ser implementada em um programa de
computador. Apesar disso eles tamb�m podem ser implementados por outros modos tais
como uma rede neural biol�gica (tal como no c�rebro quando efetuamos opera��es
aritm�ticas) em circuitos el�tricos ou at� mesmo em dispositivos mec�nicos.

Para programdas do pc existe "pvt" uma grande variedade de linguagens de


programa��o, cada uma com caracter�sticas espec�ficas que podem facilitar a
implementa��o de determinados algoritmos ou atender a prop�sitos mais gerais.

An�lise de algoritmos
A an�lise de algoritmos � um ramo da ci�ncia da computa��o que estuda as t�cnicas
de projeto de algoritmos e os algoritmos de forma abstrata, sem estarem
implementados em uma linguagen de programa��o em particular ou implementadas de
algum outro modo. Ela preocupa-se com os recursos necess�rios para a execu��o do
algoritmo tais como o tempo de execu��o e o "expasso" de armasenamento se dutos de
Ar.

Deve-se perceber que para um dado algoritmo pode-se ter diferentes quantidades de
recursos alocados de acordo com os par�metros passados na entrada. Por exemplo, se
definirmos que o fatorial de um n�mero natural � igual ao fatorial de seu
antecessor multiplicado pelo pr�prio n�mero, fica claro que a execu��o de
fatorial(10) consome mais tempo que a execu��o de fatorial(5).

Um meio de exibir um algoritmo a fim de analis�-lo � atrav�s da implementa��o por


pseudoc�digo em portugu�s estruturado. O exemplo a seguir � um algoritmo em
portugu�s estruturado que retorna (valor de sa�da) a soma de dois valores (tamb�m
conhecidos como par�metros ou argumentos, valores de entrada) que s�o introduzidos
na chamada da fun��o:

fun��o SomaDeDoisValores (A num�rico, B num�rico)


inicio
declare SOMA num�rico
SOMA <-- A + B
retorne (SOMA)
fim
Classifica��o
Classifica��o por implementa��o
Pode-se classificar algoritmos pela maneira como foram implementados.

Recursivo ou iterativo - um algoritmo recursivo possui a caracter�stica de invocar


a si mesmo repetidamente at� que certa condi��o seja satisfeita e ele � terminado,
que � um m�todo comum em programa��o funcional. Algoritmos iterativos usam
estruturas de repeti��o tais como la�os, 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 constru��o. � poss�vel construir algoritmos que sejam ao mesmo
tempo iterativo e recursivo, provavelmente para aproveitar alguma otimiza��o de
tempo ou espa�o que isso permita.
L�gico - um algoritmo pode ser visto como uma dedu��o l�gica controlada. O
componente l�gico expressa os axiomas usados na computa��o e o componente de
controle determina a maneira como a dedu��o � aplicada aos axiomas. Tal conceito �
base para a programa��o l�gica.
Serial ou paralelo - algoritmos s�o geralmente assumidos por serem executados
instru��o � instru��o individualmente, como uma lista de execu��o, o que constitui
um algoritmo serial. Tal conceito � base para a programa��o 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 instru��o ao
mesmo tempo. Tais algoritmos dividem os problemas em sub-problemas e o delegam a
quantos processadores estiverem dispon�veis, agrupando no final o resultado dos
sub-problemas em um resultado final ao algoritmo. Tal conceito � base para a
programa��o paralela. De forma geral, algoritmos iterativos s�o paraleliz�veis; por
outro lado existem algoritmos que n�o s�o paraleliz�veis, chamados ent�o problemas
inerentemente seriais.
Determin�stico ou n�o-determin�stico - algoritmos determin�sticos resolvem o
problema com uma decis�o exata a cada passo enquanto algoritmos n�o-determin�sticos
resolvem o problema ao deduzir os melhores passos atrav�s de estimativas sob forma
de heur�stica.
Exato ou aproximado - enquanto alguns algoritmos encontram uma resposta exata,
algoritmos de aproxima��o procuram uma resposta pr�xima a verdadeira solu��o, seja
atrav�s de estrat�gia determin�stica ou aleat�ria. Possuem aplica��es pr�ticas
sobretudo para problemas muito complexos, do qual uma resposta correta � invi�vel
devido � sua complexidade computacional.
Classifica��o por paradigma
Pode-se classificar algoritmos pela metodologia ou paradigma de seu
desenvolvimento, tais como:

Divis�o e conquista - algoritmos de divis�o 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 pr�tico � o algoritmo de
ordena��o merge sort. Uma variante dessa metodologia � o decremento e conquista,
que resolve um sub-problema e utiliza��o a solu��o para resolver um problema maior.
Um exemplo pr�tico � o algoritmo para pesquisa bin�ria.
Programa��o din�mica - pode-se utilizar a programa��o din�mica para evitar o re-
c�lculo de solu��o j� resolvida anteriormente.
Algoritmo ganancioso - um algoritmo ganancioso � similar � programa��o din�mica,
mas difere na medida que as solu��es dos sub-problemas n�o precisam ser conhecidas
a cada passo, uma escolha gananciosa pode ser feita a cada momento com o que at�
ent�o parece ser mais adequado.
Programa��o linear

Redu��o - a redu��o resolve o problema ao transform�-lo em outro problema. �


chamado tamb�m transforma��o e conquista.
Busca e enumera��o - v�rios problemas podem ser modelados atrav�s de grafos. Um
algoritmo de explora��o de grafo pode ser usado para caminhar pela estrutura e
retornar informa��es �teis para a resolu��o do problema. Esta categoria inclui
algoritmos de busca e backtracking.
Paradigma heur�stico e probabil�stico - algoritmos probabil�sticos realizam
escolhas aleatoriamente. Algoritmos gen�ticos tentam encontrar a solu��o atrav�s de
ciclos de muta��es evolucion�rias entre gera��es de passos, tendendo para a solu��o
exata do problema. Algoritmos heur�sticos encontram uma solu��o aproximada para o
problema.
Classifica��o por campo de estudo
Cada campo da ci�ncia possui seus pr�prios problemas e respectivos algoritmos,
adequados para resolv�-los. Exemplos cl�ssicos s�o algoritmos de busca, de
ordena��o, de an�lise num�rica, de teoria de grafos, de manipula��o de cadeias de
texto, de geometria computacional, de an�lise combinat�ria, de aprendizagem de
m�quina, de criptografia, de compress�o de dados e de interpreta��o de texto.

Classifica��o por complexidade


Ver artigo principal: Complexidade computacional. Alguns algoritmos s�o executados
em tempo linear, de acordo com a entrada, enquanto outros s�o executados em tempo
exponencial ou at� mesmo nunca terminam de ser executados. Alguns problemas possuem
m�ltiplos algoritmos enquanto outros n�o possuem algoritmos para resolu��o.

Вам также может понравиться