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

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Linguagem de Programação I
Linguagem PASCAL Subprogramas
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Estruturas de Controle
Linguagem de Programação COBOL/ALGOL
Programação em Java Prof. Maurício Braga
Programas e Microprogramas
Estruturas de Repetição
Paulo Marques Hernâni Pedroso
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Introdução a Informática
INTRODUÇÃO À PROGRAMAÇÃO
Linguagem C Estruturas de Controle de Fluxos
Sincronização de Processos (2)
Aula 4 Nomes, Vinculações, Tipos e Escopos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
O Portal do Estudante de Computação
Paradigmas de programação
João Lucas de Oliveira Torres
Ada.
Variáveis, Tipos de Dados e Constantes
Unidade I: “Dê um mergulho rápido”
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Aula prática 6 Vetores e Matrizes
Linguagens imperativas: Aula prática
Linguagem de programação I A
Introdução a Programação
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Introdução ao uso de vatores na linguagem PASCAL.
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Linguagens Imperativas
Tipos de Dados Paradigmas de Programação
Estruturas de Controle entre Instruções
Verificação de Tipos e Escopos
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Modelos de Paradigmas de programação
Algoritmo e Programação
Ambiente de Execução - Rotinas
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem Pascal Prof. Sérgio Rodrigues.
Lógica Estruturada Aplicada
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Métodos Formais.
Aula 1 – Profª Danielle Costa
Algoritmos e Estrutura de Dados I
Comando CASE Desvio por seleção múltipla
Linguagens de Programação Introdução Prof. Renato Melo.
Critérios de Avaliação das Linguagens de Programação
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Fundamentos de linguagens de programação
Programação de Computadores - 1
Introdução à Programação
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Prof: Adriano A. Ribeiro
Paradigmas das Linguagens de Programação - História
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
Linguagens de Programação Pedro Lopes MÓDULO 4- Subprogramas (Procedimentos e Funções) 2010/2011.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Transcrição da apresentação:

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

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.

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.

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.

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.

O compilador de Elliott 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 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

Características clareza Elegância X 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 Estrutura de controle é uma instrução de controle acompanhada da coleção de comandos cuja execução ela controla.

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

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

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.

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) Comentar: Dentro dos seletores bidirecionais, existe um caso degenerado: o seletor unidirecional. Dentro dos seletores múltiplos, também existe um caso degenerado: o seletor tridirecional. Esses casos serão explicados adiante.

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 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 instruções compostas. Nessa época, praticamente só os seletores do Algol 60, do C,e do C++ suportavam múltiplas entradas.

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 Aninhar seletores é, basicamente, colocar um seletor dentro do outro, como no exemplo. Comentar sobre a ambigüidade gerada pelo código e que o Algol 60 e o Pascal têm maneiras de se resolvê-la, como veremos no próximo slide

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 Dizer que no próximo slide, serão dados exemplos dos dois tipos de emparelhamento

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) Comentar que a legibilidade do Algol 60 é ligeiramente maior que a do Pascal Introduzir o outro slide dizendo que outra alternativa para solucionar a ambigüidade é utilizar palavras de fechamento especiais

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 A>B then soma := soma + a; acont := acont + 1; else soma := soma + b; bcont := acont + 1; end if;

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 As instruções (únicas ou compostas) entre 1 e n são selecionadas de acordo com o valor da expressão

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 else writeln (‘Erro na instrução case, indice =’, indice) end

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

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: <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 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 lista[cont] := 0 for cont := 1 step 1 until 10 do for cont := 1, cont + 1 while (cont<=10) do

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 < 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 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 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

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

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

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/algol60/ http://en.wikipedia.org/wiki/ALGOLftp://ftp.aw.com/cseng/authors/sebesta