ALGOL Luccas L L M Martins Raon Galvo

  • Slides: 29
Download presentation
ALGOL Luccas L. L. M. Martins Raoní Galvão Renato Evangelista Renato Matsuura

ALGOL Luccas L. L. M. Martins Raoní Galvão Renato Evangelista Renato Matsuura

Introdução w O Algol é uma linguagem de programação de alto nível voltada principalmente

Introdução w O Algol é uma linguagem de programação de alto nível voltada principalmente para aplicações científicas. Seu nome provém das palavras "Algorithmic Language" (Linguagem Algorítmica). w começou a ser formulada em 1857, e foi definida em 1963, Algol 60.

Introdução w As duas características principais do Algol são: a clareza e a elegância

Introdução w As duas características principais do Algol são: a clareza e a elegância da sua estrutura baseada nos blocos e o estilo de sua definição, que usa uma linguagem metalingüística para definir de forma concisa e relativamente completa a sua sintaxe.

Introdução w Existem outras versões do Algol, como, por exemplo, o Algol 68, o

Introdução w Existem outras versões do Algol, como, por exemplo, o Algol 68, o Algol W voltado para máquinas IBM e o Algol 6000/7000 da Burroughs. w Esta linguagem se tornou apropriada para escrever "software" básico; em particular o sistema operacional do B 6700 (MCP – "Master Control Program") está escrito em DCALGOL, que é uma extensão do Algol B 6000/7000.

Compilação w Muitos compiladores foram escritos para o ALGOL 60, porém para implentar a

Compilação w Muitos compiladores foram escritos para o ALGOL 60, porém para implentar a linguagem toda eles falhavam. w O compilador de Elliott era um desses, mas com uma diferença.

Compilação O compilador de Elliott • Implementava quase todas as características da linguagem e

Compilação O compilador de Elliott • Implementava quase todas as características da linguagem e • Rodaria, até mesmo, em uma pequena máquina.

Compilação w Base de clientes principal do Elliott eram as universidades, com suas aquiteturas

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

Características w Algol usa uma linguagem metalingüística para definir de forma concisa e relativamente

Características w Algol usa uma linguagem metalingüística para definir de forma concisa e relativamente completa a sua sintaxe • capacidade de escrita X • clareza • Elegância

Características w Estrutura de controle é uma instrução de controle acompanhada da coleção de

Características w Estrutura de controle é uma instrução de controle acompanhada da coleção de comandos cuja execução ela controla.

Instruções Compostas w Instrução composta begin comando_1; . . . comando_n; end w Formar

Instruções Compostas w Instrução composta begin comando_1; . . . comando_n; end w Formar conjuntos de instruções.

Instruções Compostas w Um conjunto de instruções é abstraído para uma única. w Muito

Instruções Compostas w Um conjunto de instruções é abstraído para uma única. w Muito importante no projeto de instruções de controle.

Instruções Compostas w Bloco: instrução composta que pode definir um novo escopo (com variáveis

Instruções Compostas w Bloco: instrução composta que pode definir um novo escopo (com variáveis locais). w Algol introduziu a idéia de programação utilizando blocos. w C, C++ e Java permitem tanto instruções compostas como blocos, ambos delimitados por chaves. w Em algumas linguagens a delimitação é feita pela própria estrutura de controle.

Instruções de Seleção w Definição: Uma instrução de seleção oferece os meios de escolher

Instruções de Seleção w Definição: Uma instrução de seleção oferece os meios de escolher entre dois ou mais caminhos de execução em um programa. Essas instruções são partes fundamentais de todas as linguagens de programação. w Dividem-se em duas categorias gerais - seleção bidirecional - seleção múltipla (n-direcional)

Exemplos de Seletores Bidirecionais w Primeiro a permitir que uma instrução composta fosse selecionada

Exemplos de Seletores Bidirecionais w Primeiro a permitir que uma instrução composta fosse selecionada por um seletor unidirecional w Precursor do seletor bidirecional Exemplos: if (exp booleana) then begin instrução; instrução_1; else. . instrução; instrução_n; end

Aninhamento de Seletores w Questão Fundamental: Emparelhamento de cláusulas then e else Exemplo em

Aninhamento de Seletores w Questão Fundamental: Emparelhamento de cláusulas 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 contrário, em Pascal esta construção indica que o else é par do 2º then

Aninhamento de Seletores w O Pascal utiliza uma regra semântica para solucionar a ambigüidade

Aninhamento de Seletores w O Pascal utiliza uma regra semântica para solucionar a ambigüidade existente no exemplo anterior: - TODO ELSE SE REFERE AO THEN NÃO EMPARELHADO MAIS RECENTE w O Algol 60 utiliza uma regra sintática para solucionar tal ambigüidade - SE UM IF PRECISAR SER ANINHADO EM UMA THEN, ELE DEVERÁ SER COLOCADO EM UMA INSTRUÇÃO COMPOSTA

Aninhamento de Seletores w Exemplos if soma = 0 then begin if cont =

Aninhamento de Seletores w 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 seleção w São palavras cuja função é resolver a

Palavras especiais e fechamento de seleção w São palavras cuja função é resolver a questão da semântica de seletores aninhados w São 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 Múltiplos Modernos w O Case foi incluído no Algol-W. Trata-se de uma estrutura

Seletores Múltiplos Modernos w O Case foi incluído no Algol-W. Trata-se de uma estrutura encapsulada e de entrada única cuja forma geral é: case expressão_inteira of begin instrução_1; . . instrução_n; end

Seletores Múltiplos Modernos w Para o caso de o valor da expressão não aparecer

Seletores Múltiplos Modernos w Para o caso de o valor da expressão não aparecer em nenhuma lista de constantes, muitos dialetos do Pascal (sucessora do Algol) incluem, agora, uma cláusula 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 instrução case, indice =’, indice)

Instruções Iterativas n Roteiro Introdução l Questões de Projeto l Laços controlados por contador

Instruções Iterativas n Roteiro Introdução l Questões de Projeto l Laços controlados por contador l Laços controlados logicamente l Mecanismos de controle de laço localizados pelo usuário l Iteração baseada em estrutura de dados l

Instrução FOR do Algol 60 w Exemplo de como a busca por flexibilidade pode

Instrução FOR do Algol 60 w Exemplo de como a busca por flexibilidade pode levar a excessiva complexidade w É uma generalização significativa da instrução DO do Fortran, como mostra a EBNF: <for_stmt> -> for var : = <elemento_da_lista> {, <elemento_da_lista>} do <comando> <elemento_da_lista> -> <expressão> | <expressão> step <expressão> until <expressão> | <expressão> while <expr_booleana>

Instrução FOR do Algol 60 w Diferença significativa: pode combinar um controlador e uma

Instrução FOR do Algol 60 w Diferença significativa: pode combinar um controlador e uma expressão booleana para controle do laço w Três 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

Instrução FOR do Algol 60 w A partir da combinação das formas simples criamse

Instrução FOR do Algol 60 w A partir da combinação das formas simples criamse instruções 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 instrução adiciona os seguintes valores à variável soma: 1, 4, 13, 41, 43, 45, 47, 141, 423, 34, 2, -24

Instrução FOR do Algol 60 w Descrição semântica operacional de uma instrução FOR geral

Instrução FOR do Algol 60 w Descrição semântica operacional de uma instrução 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 laço] var_for : = var_for + step goto loop out: . . .

Opções de Projeto do Algol 60 w A variável de laço pode ser do

Opções de Projeto do Algol 60 w A variável de laço pode ser do tipo inteiro ou real e é declarada como qualquer outra w A variável de laço tem seu valor mais recente atribuído (independente da causa da finalização) w Seus parâmetros (não sua variável) podem ser mudados no corpo do laço w É ilegal desviar-se para o corpo do laço w Os parâmetros do laço são avaliados para cada iteração

Programa em Algol procedure Absmax(a) Size: (n, m) Result: (y) Subscripts: (i, k); value

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 Absmax

Conclusões w Diversidade de opiniões entre os projetistas de linguagens. w Clareza e elegância.

Conclusões w Diversidade de opiniões entre os projetistas de linguagens. w Clareza e elegância. w Introduziu a idéia de Blocos

Bibliografia w http: //es. wikipedia. org/wiki/Algol w http: //www. dcs. qmul. ac. uk/~ohearn/Algol/int ro.

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