ALGOL - PowerPoint PPT Presentation

About This Presentation
Title:

ALGOL

Description:

Title: Instru es e Execu es Author: Particular Last modified by: Raon Galv o Cunha Created Date: 1/12/2005 7:28:52 PM Document presentation format – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 30
Provided by: Part287
Category:
Tags: algol | chapter2

less

Transcript and Presenter's Notes

Title: ALGOL


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

2
Introdução
  • 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).
  • começou a ser formulada em 1857, e foi definida
    em 1963, Algol 60.

3
Introdução
  • 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.

4
Introdução
  • 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.
  • Esta linguagem se tornou apropriada para escrever
    "software" básico em particular o sistema
    operacional do B6700 (MCP "Master Control
    Program") está escrito em DCALGOL, que é uma
    extensão do Algol B6000/7000.

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

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

7
Compilação
  • 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.
  • O compilador era um grande sucesso e foi usado
    extensivamente

8
Características
  • Algol usa uma linguagem metalingüística para
    definir de forma concisa e relativamente completa
    a sua sintaxe

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

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

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

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

13
Instruções de Seleção
  • 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.
  • Dividem-se em duas categorias gerais
  • - seleção bidirecional
  • - seleção múltipla (n-direcional)

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

15
Aninhamento de Seletores
  • 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

16
Aninhamento de Seletores
  • 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
  • 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

17
Aninhamento de Seletores
  • Exemplos
  • if soma 0 then
  • begin
  • if cont 0 then
  • resultado0
  • else
  • resultado1
  • end
  • (Else emparelhado com o 2º then)
  • if soma 0 then
  • begin
  • if cont 0 then
  • resultado0
  • end
  • else
  • resultado1
  • (Else emparelhado com o 1º then)

18
Palavras especiais e fechamento de seleção
  • São palavras cuja função é resolver a questão da
    semântica de seletores aninhados
  • São utilizadas no Algol 68, no Fortran 77 e 90,
    no Modula-2 e no Ada
  • Exemplo em Ada
  • if AgtB then
  • soma soma a
  • acont acont 1
  • else
  • soma soma b
  • bcont acont 1
  • end if

19
Seletores Múltiplos Modernos
  • 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

20
Seletores Múltiplos Modernos
  • 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)
  • end

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

22
Instrução FOR do Algol 60
  • Exemplo de como a busca por flexibilidade pode
    levar a excessiva complexidade
  • É uma generalização significativa da instrução DO
    do Fortran, como mostra a EBNF
  • ltfor_stmtgt -gt for var ltelemento_da_listagt
  • , ltelemento_da_listagt do
    ltcomandogt
  • ltelemento_da_listagt -gt ltexpressãogt
  • ltexpressãogt step ltexpressãogt until
    ltexpressãogt
  • ltexpressãogt while ltexpr_booleanagt

23
Instrução FOR do Algol 60
  • Diferença significativa pode combinar um
    controlador e uma expressão booleana para
    controle do laço
  • Três formas mais simples
  • for cont 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 do
  • listacont 0
  • for cont 1 step 1 until 10 do
  • listacont 0
  • for cont 1, cont 1 while (contlt10) do
  • listacont 0

24
Instrução FOR do Algol 60
  • A partir da combinação das formas simples
    criam-se instruções bem mais complexas
  • for indice 1, 4, 13, 41,
  • step 2 until 47,
  • 3 indice while
    indice lt 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

25
Instrução FOR do Algol 60
  • 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 gt 0 goto out
  • corpo do laço
  • var_for var_for step
  • goto loop
  • out ...

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

27
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 p1 step 1 until n do
  • for q1 step 1 until m do
  • if abs(ap, q) gt y then
  • begin y abs(ap, q)
  • i p k q
  • end
  • end Absmax

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

29
Bibliografia
  • http//es.wikipedia.org/wiki/Algol
  • http//www.dcs.qmul.ac.uk/ohearn/Algol/intro.html
  • http//www.cis.cau.edu/Curriculum/476/chapter2/alg
    ol60/
  • http//en.wikipedia.org/wiki/ALGOLftp//ftp.aw.com
    /cseng/authors/sebesta
Write a Comment
User Comments (0)
About PowerShow.com