You are on page 1of 9

Etimologia

Os historiadores da palavra algoritmo encontraram a origem no sobrenome, Al-


Khwarizmi, do matem�tico persa do s�culo IX Mohamed ben Musa,[4] cujas obras foram
traduzidas no ocidente crist�o no s�culo XII, tendo uma delas recebido o nome
Algorithmi de numero indorum, sobre os algoritmos usando o sistema de numera��o
decimal (indiano). Outros autores, entretanto, defendem a origem da palavra em Al-
goreten (raiz - conceito que se pode aplicar aos c�lculos).[5] "�lgebra" e
"algorismo" tamb�m formam formas corrompidas da palavra, pois as pessoas esqueciam
as deriva��es originais. O dicion�rio "Vollst�ndiges Mathematisches Lexicon"
(Leipzig, 1747) refere a palavra "Algorithmus"; nesta designa��o est�o combinadas
as no��es de quatro c�lculos aritm�ticos, nomeadamente a adi��o, multiplica��o,
subtra��o e divis�o. A frase "algorithmus infinitesimalis" foi na altura utilizada
para significar; "maneiras de calcular com quantidades infinit�simas" (pequenas),
uma inven��o de Leibnitz. Tamb�m � conhecido no meio financeiro, como "algos".[6]

Formalismo

Fluxograma, um exemplo de algoritmo imperativo. O estado em vermelho indica a


entrada do algoritmo enquanto os estados em verde indicam as poss�veis sa�das.
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 boletins dos
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
estrutura de dados.

Para qualquer processo computacional, o algoritmo precisa estar rigorosamente


definido, especificando a maneira que ele se comportar� em todas as circunst�ncias.
A corretividade 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.

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


bem definida, na qual as instru��es s�o executadas passo a passo a partir do come�o
da lista, uma ideia que pode ser facilmente visualizada atrav�s de um fluxograma.
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 variam em programa��o funcional e programa��o l�gica.

T�rmino do algoritmo
Alguns autores restringem a defini��o de algoritmo para procedimentos que
eventualmente terminam. Marvin Minsky constatou que se o tamanho de um procedimento
n�o � conhecido de antem�o, tentar descobri-lo � um 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.

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.

Exemplos

Imagem da torre de Han�i (com tr�s discos), mostrando como estariam as pe�as no
in�cio e no fim da solu��o.
Alguns exemplos gen�ricos de algoritmos s�o: uma coreografia, um manual de
instru��es, uma receita culin�ria, T�cnicas para resolver problemas matem�ticos,
uma pesquisa na internet, dentre outros.

Torre de Han�i
Um cl�ssico problema que trabalha o desenvolvimento da l�gica e do racioc�nio
matem�tico � a torre de Han�i, inventado pelo matem�tico franc�s �douard Lucas em
1883.[7] O quebra-cabe�a � composto por tr�s hastes e v�rios discos de tamanhos
diferentes, que podem deslizar para qualquer haste. O quebra-cabe�a come�a com os
discos em uma pilha organizada em ordem crescente de tamanho em uma haste, a menor
no topo, fazendo assim uma forma c�nica.

Neste exemplo, toma-se o seguinte problema: tem-se tr�s hastes. Umas das hastes
serve de suporte para tr�s discos. Deseja-se mover todos os discos para outra
haste, por�m deve-se movimentar um disco de cada vez e um disco maior nunca pode
ser colocado sobre um disco de menor tamanho.

Solu��o em forma narrativa

Resolu��o da torre de Han�i (com tr�s discos).


Nomeiam-se as hastes como 1, 2 e 3 e os discos como A, B e C. Considera-se que
inicialmente os discos est�o na haste 1. Segue uma sequ�ncia de passos para a
resolu��o do quebra-cabe�a:

move-se o disco A para a haste 3.


move-se o disco B para a haste 2.
move-se o disco A para a haste 2.
move-se o disco C para a haste 3.
move-se o disco A para a haste 1.
move-se o disco B para a haste 3.
move-se o disco A para a haste 3.
Solu��o em forma gr�fica
Podemos tamb�m representar a solu��o em forma gr�fica, desenhando as hastes e a
posi��o dos discos a cada movimento (ou passo). Com 3 discos, o quebra-cabe�a pode
ser resolvido em 7 movimentos. O n�mero m�nimo de movimentos necess�rios para
resolver um quebra-cabe�a da Torre de Han�i � {\displaystyle 2^{n}-1}
{\displaystyle 2^{n}-1}, onde n � o n�mero de discos.

Essa sequ�ncia, ou descri��o, finita de passos ou tarefas � a quem chamamos de


algoritmos.

An�lise de algoritmos
Ver artigo principal: 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 linguagem 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 espa�o de armazenamento de dados. 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, tamb�m conhecido no Brasil como Portugol.
Este c�digo pode ser digitado dentro de algum editor de textos como o Bloco de
Notas, anotado num caderno ou ainda poder digitado diretamente dentro de um
programa interpretador de algoritmos, como � caso do Visualg, que � um editor,
interpretador e executor dos algoritmos.

Classifica��o
Classifica��o por implementa��o
Pode-se classificar algoritmos pela maneira pelo qual 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.
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 a 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 as
arquiteturas de computadores com mais de um processador para executar mais de uma
instru��o ao mesmo tempo. Tais algoritmos dividem os problemas em subproblemas e o
delegam a quantos processadores estiverem dispon�veis, agrupando no final o
resultado dos subproblemas 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�sticas.
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 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��es j� resolvidas anteriormente.
Algoritmo ganancioso - um algoritmo ganancioso � similar � programa��o din�mica,
mas difere na medida em 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 - A resolu��o de um problema atrav�s de programa��o linear
envolve a maximiza��o / minimiza��o das entradas de um conjunto de desigualdades
lineares.
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
retornam 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 serem
executados. Alguns ditos problemas tem m�ltiplos algoritmos enquanto outros n�o
possuem algoritmos para resolu��o. Jes�s Bisbal Riera

Implementa��o
Algoritmos podem ser implementados em circuitos el�tricos ou at� mesmo em
dispositivos mec�nicos (aut�matos).Mania dos inventores do s�culo XIX, os aut�matos
eram m�quinas totalmente mec�nicas, constru�das com a capacidade de serem
programadas para realizar um conjunto de atividades aut�nomas. Em 2011, o filme A
Inven��o de Hugo Cabret(tradu��o brasileira) do cineasta Martin Scorsese traz a
hist�ria do ilusionista Georges M�li�s precursor do cinema e um colecionador de
aut�matos, sendo uma de suas m�quinas o fio condutor desta hist�ria. O aut�mato
espec�fico era capaz de desenhar a cena emblem�tica do seu filme "Viagem � Lua".

Entretanto, a maioria dos algoritmos s�o desenvolvidos para programas de


computador, para isto, existe 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.

Programa de Computador
Ada Lovelace escreveu o primeiro algoritmo para ser processado por uma m�quina, a
m�quina anal�tica de Charles Babbage. Um programa de computador � essencialmente um
algoritmo que diz ao computador os passos espec�ficos e em que ordem eles devem ser
executados.Usando o Pseudoc�digo (uma linguagem simples, nativa a quem o escreve,
de forma a ser entendida por qualquer pessoa) que � uma forma gen�rica de escrever
o algoritmo, sem necessidade de conhecer a sintaxe de nenhuma linguagem de
programa��o. Um exemplo de pseudoc�digo � o Portugol, que utiliza o compilador
VisuALG[8]. O VisuAlg � um programa que edita, interpreta e executa algoritmos com
uma linguagem pr�xima do portugu�sestruturado como um programa normal de
computador. � um programa de livre uso e distribui��o, empregado no ensino de
programa��o em v�rias escolas e universidades no Brasil e no exterior. 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 um conjunto de
instru��es e estrutura de dados.Um exemplo, ?para ser feito nas escolas � fazer os
passos a serem tomados para calcular as notas que ser�o impressas nos boletins dos
alunos de uma escola, informando se o anulo foi aprovado ou reprovado.

Exemplo:
// Se��o de Declara��es

var

NOTA1, NOTA2, NOTA3, NOTA4, MEDIA : REAL

inicio

// Se��o de Comandos

ESCREVA("DIGITE A PRIMEIRA NOTA: ")

LEIA(NOTA1)

ESCREVA("DIGITE A SEGUNDA NOTA: ")

LEIA(NOTA2)

ESCREVA("DIGITE A TERCEIRA NOTA: ")

LEIA(NOTA3)

ESCREVA("DIGITE A QUARTA NOTA: ")

LEIA(NOTA4)

MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4 ;

SE MEDIA <= 6.9 ENTAO

ESCREVA("A MEDIA DO ALUNO FOI: ", MEDIA)

ESCREVAL (" - ALUNO REPROVADO ")

FIMSE

SE MEDIA >= 7 ENTAO

ESCREVA("A MEDIA DO ALUNO FOI: ", MEDIA)

ESCREVAL (" - ALUNO APROVADO ")

FIMSE

fimalgoritmo

Tradutor e Interpretador
Ao receber uma bicicleta no natal Carlinhos precisa ler o manual de instru��es e
seguir passo a passo as tarefas descritas no documento para poder se divertir com
seu presente. Podemos dizer que Carlinhos � um interpretador dos comandos
fornecidos pelo manual de instru��es. Entretanto seu pai encontrou uma promo��o na
internet e comprou um produto fabricado na Fran�a e o menino ao se deparar com o
manual percebeu que o mesmo n�o poderia ser �interpretado� j� que n�o sabia ler em
franc�s. Para resolver o problema seu pai contratou um tradutor de franc�s para
portugu�s, assim, este novo manual p�de ser �interpretado� por Carlinhos e enfim
sua bicicleta seria montada.

No computador, o problema de Carlinhos se repete diariamente, havendo a necessidade


de softwares b�sicos para traduzir e interpretar os diversos programas dos usu�rios
escritos em diversas linguagens existentes. Os softwares que convertem um programa
de usu�rio escrito em uma linguagem para outra linguagem s�o chamados de
tradutores. A linguagem na qual o programa original est� expresso � chamada de
linguagem fonte e a linguagem para a qual ela ser� convertida � conhecida como
linguagem alvo. Tanto a linguagem fonte quanto a linguagem alvo definem n�veis de
abstra��o espec�ficos.

Se existir um processador que possa executar diretamente programas escritos na


linguagem fonte, n�o h� necessidade de se traduzir o programa fonte para uma
linguagem alvo.

O m�todo de tradu��o � empregado quando h� um processador (seja ele implementado em


hardware ou por interpreta��o) dispon�vel para executar programas expressos na
linguagem alvo mas n�o na linguagem fonte. Se a tradu��o tiver sido feita
corretamente, a execu��o do programa traduzido vai obter exatamente os mesmos
resultados que a execu��o do programa fonte obteria se houvesse um processador que
o executasse diretamente.

� importante observar a diferen�a entre tradu��o e interpreta��o. Na tradu��o, o


programa original, expresso na linguagem fonte, n�o � executado diretamente. Em vez
da execu��o direta, esse programa precisa ser convertido para um programa
equivalente, conhecido como programa objeto ou programa bin�rio execut�vel, que
ser� executado ap�s o t�rmino do processo de tradu��o.

Logo, a tradu��o envolve dois passos distintos:

Gera��o de um programa equivalente na linguagem alvo;


Execu��o do programa obtido.
No processo de interpreta��o existe apenas um �nico passo: a execu��o do programa
original na linguagem fonte.

Tradutores
Os tradutores podem ser divididos em dois grupos, dependendo da rela��o existente
entre a linguagem fonte e a linguagem alvo. Quando a linguagem fonte for
essencialmente uma representa��o simb�lica para uma linguagem de m�quina num�rica,
o tradutor � chamado de montador e a linguagem fonte � chamada de linguagem de
montagem. Quando a linguagem fonte for uma linguagem de alto n�vel, como � o caso
do Pascal ou do C, e a linguagem alvo for uma linguagem de m�quina num�rica ou uma
representa��o simb�lica desta linguagem (linguagem de montagem), o tradutor �
chamado de compilador.

Processo de Compila��o
Diferente do processo de montagem de um programa em linguagem de montagem para um
programa em linguagem de m�quina, que � bastante simples, pois existe um mapeamento
direto de um para um entre os comandos em linguagem de montagem e os equivalentes
em c�digo bin�rio, o processo de compila��o de linguagens � muito mais complexo.

Passos da compila��o
Considere o comando simples abaixo:

A = B + 4;
O compilador tem que resolver um n�mero grande de tarefas na convers�o deste
comando em um ou mais comandos em linguagem de montagem:

1.Reduzir o texto do programa para s�mbolos b�sicos da linguagem, como


identificadores tais como A e B, demarca��es como o valor constante 4 e
delimitadores do programa tais como = e +. Esta parte da compila��o � chamada de
an�lise l�xica.
2. Decodificar os s�mbolos para reconhecer a estrutura do programa. No comando
usado acima, por exemplo, um programa chamado parser deve reconhecer o comando como
sendo uma atribui��o de valores da forma:

<Identificador> �=� <Express�o>


onde <Express�o> � decodificado na forma:

<Identificador> �+� <Constante>


Essa tarefa � chamada de an�lise sint�tica.

3. An�lise de nomes: associar os nomes A e B com vari�veis do programa, e associ�-


los tamb�m a posi��es de mem�ria espec�ficas onde essas vari�veis ser�o armazenadas
durante a execu��o.

4. An�lise de tipos: determinar os tipos de todos os dados. No caso anterior, as


vari�veis A e B e a constante 4 seriam reconhecidas como sendo do tipo int em
algumas linguagens. As an�lises de nome e tipo s�o tamb�m conhecidas como an�lise
sem�ntica: determina o significado dos componentes do programa.

5. Mapeamento de a��es e gera��o de c�digo: associar comandos do programa com uma


sequ�ncia em linguagem de montagem apropriada. No caso anterior, a sequ�ncia em
linguagem de montagem poderia ser:

Comando de atribui��o.

ld[B], %r0, %r1 // Carrege vari�vel B em um registrador.


add %r1, 4, %r2 // Calcule o valor da express�o.
st %r2, %r0, [A] // Fa�a a atribui��o na vari�vel A.
6.Existem passos adicionais que o compilador deve tomar, tais como, alocar
vari�veis a registradores, usar registradores e, quando o programador desejar,
otimizar o programa. O otimizador de c�digo (independente de m�quina) � um m�dulo
opcional (presente na grande maioria dos compiladores) que objetiva melhorar o
c�digo intermedi�rio de modo que o programa objeto produzido ao fim da compila��o
seja menor (ocupe menos espa�o de mem�ria) e/ou mais r�pido (tenha tempo de
execu��o menor). A sa�da do otimizador de c�digo � um novo c�digo intermedi�rio.

Processo de Montagem
O processo de traduzir um programa em linguagem de montagem para programa em
linguagem de m�quina � chamado de processo de montagem. Este processo � muito
simples, uma vez que existe um mapeamento um para um de comandos em linguagem de
montagem para seus correspondentes em linguagem de m�quina. Isto � o contr�rio da
compila��o, onde um comando em linguagem de alto n�vel pode ser traduzido em v�rios
comandos em linguagem de m�quina.

Por que usar uma Linguagem de Montagem?


Programar em uma linguagem de montagem n�o � f�cil. Al�m da dificuldade, o
desenvolvimento de um programa na linguagem de montagem consome mais tempo do que
seu desenvolvimento em uma linguagem de alto n�vel. A depura��o e manuten��o dos
programas em linguagem de montagem s�o mais complicados.

Nessas condi��es, por que algu�m escolheria programar em uma linguagem de montagem?

Existem duas raz�es que justificam esta op��o: performance e acesso aos recursos da
m�quina. Um expert na linguagem de montagem pode produzir um c�digo menor e muito
mais eficiente do que o gerado por um programador usando linguagem de alto n�vel.

Em segundo lugar, certos procedimentos precisam ter acesso total ao hardware. Por
exemplo, se a m�quina alvo tiver um bit para expressar o overflow de opera��es
aritm�ticas, um programa em linguagem de montagem pode testar diretamente este bit,
coisa que um programa em Java n�o pode fazer. Al�m disso, um programa em linguagem
de montagem pode executar qualquer uma das instru��es do conjunto de instru��es da
m�quina alvo.

Tarefas do montador
Embora a montagem seja um processo simples, � tedioso e pass�vel de erros quando
feito manualmente. Montadores comerciais t�m ao menos as seguintes caracter�sticas:

Permitem ao programador especificar posi��o de valores de dados e programas durante


a execu��o;
Permitem que o programador de in�cio realize valores de dados na mem�ria antes da
execu��o do programa;
Implementam mnem�nicos em linguagem de montagem para todas as instru��es da m�quina
e modos de endere�amento, e traduzem comandos em linguagem de montagem v�lidos, nos
seus equivalentes em linguagem de m�quina;
Permitem o uso de r�tulos simb�licos para representar endere�os e constantes;
Incluem um mecanismo que permite que vari�veis sejam definidas em um programa em
linguagem de montagem e usadas em outros programas separadamente;
Possibilitam a expans�o de macros, ou seja, rotinas (semelhantes �s fun��es em
linguagem de alto n�vel) que podem ser definidas uma vez e ent�o instanciadas
quantas vezes necess�rio.
Montadores de dois passos
A maioria dos montadores leem textos do programa em linguagem de montagem duas
vezes, e s�o chamados de �montadores de dois passos�. O primeiro passo serve para
determinar o endere�o de todos os itens de dados e instru��es de m�quina, e
selecionar quais instru��es devem ser geradas para cada instru��o em linguagem de
montagem (mais ainda n�o ger�-las).

Os endere�os dos itens de dados e instru��es s�o determinados por meio do uso de um
contador de programa para a montagem, chamado contador de localiza��o. O contador
de localiza��o gerencia o endere�o da instru��o executada e dos itens de dados
durante a montagem, que geralmente � inicializada com 0 (zero). No in�cio do
primeiro passo, � incrementado de acordo com o tamanho de cada instru��o.

Durante este passo, o montador tamb�m efetua quaisquer opera��es aritm�ticas em


tempo de montagem, e insere as defini��es de todos os r�tulos de fun��es e
vari�veis e as constantes, em uma tabela chamada Tabela de S�mbolos.

A raz�o principal para exigir uma segunda passagem � permitir que s�mbolos sejam
usados no programa antes de serem definidos. Ap�s a primeira passagem, o montador
ter� identificado todos os s�mbolos e os colocado na Tabela de S�mbolos, j� durante
a segunda passagem, gerar� c�digo de m�quina, inserindo os identificadores dos
s�mbolos que agora s�o conhecidos.

Liga��o e Carregamento
A maioria dos programas � composto de mais de um procedimento. Os compiladores e os
montadores geralmente traduzem um procedimento de cada vez, colocando a sa�da da
tradu��o em disco. Antes que o programa possa rodar, todos os seus procedimentos
precisam ser localizados e ligados uns aos outros de maneira a formarem um �nico
c�digo.

Liga��o
A fun��o do ligador � coletar procedimentos traduzidos separadamente e lig�-los uns
aos outros para que eles possam executar como uma unidade chamada programa bin�rio
execut�vel.

Se o compilador ou o montador lesse um conjunto de procedimentos fonte e produzisse


diretamente um programa em linguagem de m�quina pronto para ser executado, bastaria
que um �nico comando fonte fosse alterado para que todos os procedimentos fonte
tivessem que ser novamente traduzidos.

Usando a t�cnica do m�dulo objeto separado, o �nico procedimento a ser novamente


traduzido seria aquele modificado. Havendo a necessidade de realizar apenas a etapa
de liga��o dos m�dulos separados novamente, sendo esta tarefa mais r�pida que a
tradu��o.

Carregamento
O carregador � um programa que coloca um m�dulo de carregamento na mem�ria
principal. Conceitualmente, a tarefa do carregador n�o � dif�cil. Ele deve carregar
os v�rios segmentos de mem�ria com seus valores corretos e inicializar certos
registradores, tais como o apontador para pilha do sistema, respons�vel pelo escopo
das rotinas que estar�o em execu��o e o contador de instru��es contido no
processador, com seus valores iniciais, indicando assim onde o programa deve ser
iniciado.

Em Sistemas Operacionais modernos, v�rios programas est�o residentes na mem�ria a


todo instante, e n�o h� como o montador ou o ligador saber em quais endere�os os
m�dulos de um programa ir�o residir. O carregador deve relocar estes m�dulos
durante o carregamento adicionando um deslocamento a todos os endere�os, permitindo
desta forma acessar cada m�dulo individualmente na mem�ria.

Esse tipo de carregamento � chamado de carregamento com reloca��o. O carregador


simplesmente modifica endere�os reloc�veis dentro de um �nico m�dulo de
carregamento para que v�rios programas passem a residir na mem�ria simultaneamente.

Interpretadores
O software interpretador � um programa de computador que executa instru��es
escritas em uma linguagem de programa��o. Por exemplo, as linguagens Basic, Prolog,
Python e Java, s�o frequentemente interpretados. Um interpretador geralmente usa
uma das seguintes estrat�gias para a execu��o do programa: executar o c�digo fonte
diretamente ou traduzir o c�digo fonte em alguma eficiente representa��o
intermedi�ria e depois executar este c�digo.

Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma
linguagem simplificada, chamada de c�digo intermedi�rio, que pode ser diretamente
�executado� por um programa chamado interpretador. N�s podemos imaginar o c�digo
intermedi�rio como uma linguagem de m�quina de um computador abstrato projetado
para executar o c�digo fonte.

Interpretadores s�o, em geral, menores que compiladores e facilitam a implementa��o


de constru��es complexas em linguagens de programa��o. Entretanto, o tempo de
execu��o de um programa interpretado � geralmente maior que o tempo de execu��o
deste mesmo programa compilado, pois o interpretador deve analisar cada declara��o
no programa a cada vez que � executado e depois executar a a��o desejada, enquanto
que o c�digo compilado apenas executa a a��o dentro de um contexto fixo,
anteriormente determinado pela compila��o. Este tempo no processo de an�lise �
conhecido como "overhead interpretativa".

Ver tamb�m

You might also like