Você está na página 1de 29

ALGOL

Luccas L. L. M. Martins Raon Galvo Renato Evangelista Renato Matsuura

Introduo
O Algol uma linguagem de programao de alto nvel voltada principalmente para aplicaes cientficas. Seu nome provm das palavras "Algorithmic Language" (Linguagem Algortmica). comeou a ser formulada em 1857, e foi definida em 1963, Algol 60.

Introduo
As duas caractersticas principais do Algol so: a clareza e a elegncia da sua estrutura baseada nos blocos e o estilo de sua definio, que usa uma linguagem metalingstica para definir de forma concisa e relativamente completa a sua sintaxe.

Introduo
Existem outras verses do Algol, como, por exemplo, o Algol 68, o Algol W voltado para mquinas IBM e o Algol 6000/7000 da Burroughs. Esta linguagem se tornou apropriada para escrever "software" bsico; em particular o sistema operacional do B6700 (MCP "Master Control Program") est escrito em DCALGOL, que uma extenso do Algol B6000/7000.

Compilao
Muitos compiladores foram escritos para o ALGOL 60, porm para implentar a linguagem toda eles falhavam. O compilador de Elliott era um desses, mas com uma diferena.

Compilao
O compilador de Elliott Implementava quase todas as caractersticas da linguagem e Rodaria, at mesmo, em uma pequena mquina.

Compilao
Base de clientes principal do Elliott eram as universidades, com suas aquiteturas 803. Uma das exigncias do compilador era ser capaz de rodar grupos de programas em ordem, sem a necessidade reiniciar o compilador. O compilador era um grande sucesso e foi usado extensivamente

Caractersticas
Algol usa uma linguagem metalingstica para definir de forma concisa e relativamente completa a sua sintaxe capacidade

de escrita

clareza Elegncia

Caractersticas
Estrutura de controle uma instruo de controle acompanhada da coleo de comandos cuja execuo ela controla.

Instrues Compostas
Instruo composta begin comando_1; ... comando_n; end Formar conjuntos de instrues.

Instrues Compostas
Um conjunto de instrues abstrado para uma nica. Muito importante no projeto de instrues de controle.

Instrues Compostas
Bloco: instruo composta que pode definir um novo escopo (com variveis locais). Algol introduziu a idia de programao utilizando blocos. C, C++ e Java permitem tanto instrues compostas como blocos, ambos delimitados por chaves. Em algumas linguagens a delimitao feita pela prpria estrutura de controle.

Instrues de Seleo
Definio: Uma instruo de seleo oferece os meios de escolher entre dois ou mais caminhos de execuo em um programa. Essas instrues so partes fundamentais de todas as linguagens de programao. Dividem-se em duas categorias gerais - seleo bidirecional - seleo mltipla (n-direcional)

Exemplos de Seletores Bidirecionais


Primeiro a permitir que uma instruo composta fosse selecionada por um seletor unidirecional Precursor do seletor bidirecional Exemplos: if (exp booleana) then if (exp booleana) then begin instruo; instruo_1; else .... instruo; instruo_n; end

Aninhamento de Seletores
Questo Fundamental: Emparelhamento de clusulas then e else Exemplo em Pascal (Sucessora do Algol 60) if soma = 0 then if cont = 0 then resultado :=0 else resultado :=1 O else pode ser interpretado como par do 1 ou do 2 then e, embora o recuo sugira o contrrio, em Pascal esta construo indica que o else par do 2 then

Aninhamento de Seletores
O Pascal utiliza uma regra semntica para solucionar a ambigidade existente no exemplo anterior: - TODO ELSE SE REFERE AO THEN NO EMPARELHADO MAIS RECENTE O Algol 60 utiliza uma regra sinttica para solucionar tal ambigidade - SE UM IF PRECISAR SER ANINHADO EM UMA THEN, ELE DEVER SER COLOCADO EM UMA INSTRUO COMPOSTA

Aninhamento de Seletores
Exemplos if soma = 0 then begin if cont = 0 then resultado:=0 else resultado:=1 end (Else emparelhado com o 2 then)

if soma = 0 then begin if cont = 0 then resultado:=0 end else resultado:=1


(Else emparelhado com o 1 then)

Palavras especiais e fechamento de seleo


So palavras cuja funo resolver a questo da semntica de seletores aninhados So utilizadas no Algol 68, no Fortran 77 e 90, no Modula-2 e no Ada Exemplo em Ada: if A>B then soma := soma + a; acont := acont + 1; else soma := soma + b; bcont := acont + 1; end if;

Seletores Mltiplos Modernos


O Case foi includo no Algol-W. Trata-se de uma estrutura encapsulada e de entrada nica cuja forma geral :
case expresso_inteira of begin instruo_1; ..... ..... instruo_n; end

Seletores Mltiplos Modernos


Para o caso de o valor da expresso no aparecer em nenhuma lista de constantes, muitos dialetos do Pascal (sucessora do Algol) incluem, agora, uma clusula opcional else. Um exemplo :
case indice of 1, 3: begin impar := impar + 1; somaimpar := somaimpar + indice end; 2, 4: begin par := par + 1; somapar := somapar + indice end; else writeln (Erro na instruo case, indice =, indice)

Instrues Iterativas

Roteiro
Introduo Questes de Projeto Laos controlados por contador Laos controlados logicamente Mecanismos de controle de lao localizados pelo usurio Iterao baseada em estrutura de dados

Instruo FOR do Algol 60


Exemplo de como a busca por flexibilidade pode levar a excessiva complexidade uma generalizao significativa da instruo DO do Fortran, como mostra a EBNF:
<for_stmt> -> for var := <elemento_da_lista> {, <elemento_da_lista>} do <comando> <elemento_da_lista> -> <expresso> | <expresso> step <expresso> until <expresso> | <expresso> while <expr_booleana>

Instruo FOR do Algol 60


Diferena significativa: pode combinar um controlador e uma expresso booleana para controle do lao Trs formas mais simples:
for cont := 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 do lista[cont] := 0 for cont := 1 step 1 until 10 do lista[cont] := 0 for cont := 1, cont + 1 while (cont<=10) do lista[cont] := 0

Instruo FOR do Algol 60


A partir da combinao das formas simples criamse instrues bem mais complexas
for indice := 1, 4, 13, 41, step 2 until 47, 3 * indice while indice < 1000, 34, 2, -24 do soma := soma + ndice

Essa instruo adiciona os seguintes valores varivel soma: 1, 4, 13, 41, 43, 45, 47, 141, 423, 34, 2, -24

Instruo FOR do Algol 60


Descrio semntica operacional de uma instruo FOR geral somente com a forma STEP-UNTIL: var_for := expressao_inicial loop: until := expressao_until step := expressao_step temp := (var_for - until) * SIGN(step) if temp > 0 goto out [corpo do lao] var_for := var_for + step goto loop out: ...

Opes de Projeto do Algol 60


A varivel de lao pode ser do tipo inteiro ou real e declarada como qualquer outra A varivel de lao tem seu valor mais recente atribudo (independente da causa da finalizao) Seus parmetros (no sua varivel) podem ser mudados no corpo do lao ilegal desviar-se para o corpo do lao Os parmetros do lao so avaliados para cada iterao

Programa em Algol
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k); value n, m; array a; integer n, m, i, k; real y; begin integer p, q; y := 0; i := k := 1; for p:=1 step 1 until n do for q:=1 step 1 until m do if abs(a[p, q]]) > y then begin y := abs(a[p, q]); i := p; k := q end end Absmax

Concluses
Diversidade de opinies entre os projetistas de linguagens. Clareza e elegncia. Introduziu a idia de Blocos

Bibliografia
http://es.wikipedia.org/wiki/Algol http://www.dcs.qmul.ac.uk/~ohearn/Algol/int ro.html http://www.cis.cau.edu/Curriculum/476/chap ter2/algol60/ http://en.wikipedia.org/wiki/ALGOLftp://ftp. aw.com/cseng/authors/sebesta