Algol Trab

Download Algol Trab

Post on 20-Oct-2015

4 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

<ul><li><p>ALGOLLuccas L. L. M. Martins Raon Galvo Renato Evangelista Renato Matsuura </p></li><li><p>IntroduoO 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.</p></li><li><p>IntroduoAs 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. </p></li><li><p>IntroduoExistem 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.</p></li><li><p>CompilaoMuitos 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.</p></li><li><p>CompilaoO compilador de Elliott</p><p>Implementava quase todas as caractersticas da linguagem eRodaria, at mesmo, em uma pequena mquina. </p></li><li><p>CompilaoBase 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 </p></li><li><p>CaractersticasAlgol usa uma linguagem metalingstica para definir de forma concisa e relativamente completa a sua sintaxe </p></li><li><p>CaractersticasEstrutura de controle uma instruo de controle acompanhada da coleo de comandos cuja execuo ela controla.</p></li><li><p>Instrues CompostasInstruo compostabegincomando_1;...comando_n;endFormar conjuntos de instrues.</p></li><li><p>Instrues CompostasUm conjunto de instrues abstrado para uma nica.Muito importante no projeto de instrues de controle.</p></li><li><p>Instrues CompostasBloco: 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.</p></li><li><p>Instrues de SeleoDefinio: 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)</p></li><li><p>Exemplos de Seletores BidirecionaisPrimeiro a permitir que uma instruo composta fosse selecionada por um seletor unidirecionalPrecursor do seletor bidirecionalExemplos: if (exp booleana) then if (exp booleana) then begin instruo; instruo_1; else .... instruo; instruo_n; end </p></li><li><p>Aninhamento de SeletoresQuesto Fundamental: Emparelhamento de clusulas then e elseExemplo em Pascal (Sucessora do Algol 60)if soma = 0 thenif cont = 0 thenresultado :=0elseresultado :=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</p></li><li><p>Aninhamento de SeletoresO Pascal utiliza uma regra semntica para solucionar a ambigidade existente no exemplo anterior:- TODO ELSE SE REFERE AO THEN NO EMPARELHADO MAIS RECENTEO 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</p></li><li><p>Aninhamento de SeletoresExemplos if soma = 0 then begin if cont = 0 then resultado:=0 else resultado:=1 end(Else emparelhado com o 2 then) </p><p> if soma = 0 then begin if cont = 0 then resultado:=0 endelse resultado:=1 (Else emparelhado com o 1 then) </p></li><li><p>Palavras especiais e fechamento de seleoSo palavras cuja funo resolver a questo da semntica de seletores aninhadosSo utilizadas no Algol 68, no Fortran 77 e 90, no Modula-2 e no AdaExemplo em Ada:if A&gt;B thensoma := soma + a;acont := acont + 1;elsesoma := soma + b;bcont := acont + 1;end if;</p></li><li><p>Seletores Mltiplos ModernosO Case foi includo no Algol-W. Trata-se de uma estrutura encapsulada e de entrada nica cuja forma geral :</p><p>case expresso_inteira ofbegininstruo_1;..........instruo_n;end</p></li><li><p>Seletores Mltiplos ModernosPara 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 of1, 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)end</p></li><li><p>Instrues IterativasRoteiro</p><p>IntroduoQuestes de ProjetoLaos controlados por contadorLaos controlados logicamenteMecanismos de controle de lao localizados pelo usurioIterao baseada em estrutura de dados</p></li><li><p>Instruo FOR do Algol 60Exemplo de como a busca por flexibilidade pode levar a excessiva complexidade uma generalizao significativa da instruo DO do Fortran, como mostra a EBNF: -&gt; for var := {, } do -&gt; | step until | while </p></li><li>Instruo FOR do Algol 60Diferena significativa: pode combinar um controlador e uma expresso booleana para controle do laoTrs formas mais simples:for cont := 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 dolista[cont] := 0for cont := 1 step 1 until 10 dolista[cont] := 0for cont := 1, cont + 1 while (cont</li><li><p>Instruo FOR do Algol 60</p><p>A partir da combinao das formas simples criam-se instrues bem mais complexasfor indice := 1, 4, 13, 41, step 2 until 47, 3 * indice while indice &lt; 1000, 34, 2, -24 dosoma := soma + ndice Essa instruo adiciona os seguintes valores varivel soma: 1, 4, 13, 41, 43, 45, 47, 141, 423, 34, 2, -24</p></li><li><p>Instruo FOR do Algol 60Descrio semntica operacional de uma instruo FOR geral somente com a forma STEP-UNTIL:var_for := expressao_inicialloop:until := expressao_untilstep := expressao_steptemp := (var_for - until) * SIGN(step)if temp &gt; 0 goto out[corpo do lao]var_for := var_for + stepgoto loopout: ...</p></li><li><p>Opes de Projeto do Algol 60A varivel de lao pode ser do tipo inteiro ou real e declarada como qualquer outraA 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 laoOs parmetros do lao so avaliados para cada iterao</p></li><li><p>Programa em Algolprocedure 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]]) &gt; y then begin y := abs(a[p, q]); i := p; k := q end end Absmax</p></li><li><p>ConclusesDiversidade de opinies entre os projetistas de linguagens.Clareza e elegncia.Introduziu a idia de Blocos</p></li><li><p>Bibliografiahttp://es.wikipedia.org/wiki/Algolhttp://www.dcs.qmul.ac.uk/~ohearn/Algol/intro.htmlhttp://www.cis.cau.edu/Curriculum/476/chapter2/algol60/http://en.wikipedia.org/wiki/ALGOLftp://ftp.aw.com/cseng/authors/sebesta</p><p>Comentar:Dentro dos seletores bidirecionais, existe um caso degenerado: o seletor unidirecional. Dentro dos seletores mltiplos, tambm existe um caso degenerado: o seletor tridirecional.Esses casos sero explicados adiante.Lembrar que s o segundo exemplo um caso puramente bidirecional, no primeiro ainda estamos falando de seletores bidirecionais degenerados, ou seja, unidirecionais.Depois disso, a maioria das linguagens que vieram oferecem seletores unidirecionais capazes de selecionar instrues compostas. Nessa poca, praticamente s os seletores do Algol 60, do C,e do C++ suportavam mltiplas entradas.Aninhar seletores , basicamente, colocar um seletor dentro do outro, como no exemplo.Comentar sobre a ambigidade gerada pelo cdigo e que o Algol 60 e o Pascal tm maneiras de se resolv-la, como veremos no prximo slideDizer que no prximo slide, sero dados exemplos dos dois tipos de emparelhamentoComentar que a legibilidade do Algol 60 ligeiramente maior que a do PascalIntroduzir o outro slide dizendo que outra alternativa para solucionar a ambigidade utilizar palavras de fechamento especiaisAs instrues (nicas ou compostas) entre 1 e n so selecionadas de acordo com o valor da expresso</p></li></ul>