A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estudo dos Conceitos e Paradigmas de Programação

Apresentações semelhantes


Apresentação em tema: "Estudo dos Conceitos e Paradigmas de Programação"— Transcrição da apresentação:

1 Estudo dos Conceitos e Paradigmas de Programação

2 Abordagem e Escopo Estudo de linguagens e paradigmas através de ambientes de execução (interpretação) Implementação (incremental) de uma única linguagem: funcional, imperativa e OO A modelagem dos interpretadores será um bom exemplo de projeto OO e um vasto exercício de Java

3 Abordagem e Escopo A modelagem dos interpretadores inclui os seguintes aspectos: Um parser realiza análise léxica e sintática e efetua a redução (conversão da sintaxe concreta em uma sintaxe abstrata modelada por classes em Java) Métodos para análise semântica (verificação de tipos) Métodos para avaliação e execução de expressões e comandos

4 A linguagem objeto de estudo
A linguagem será apresentada de forma incremental: Expressões Funcional Imperativa Funcional Imperativa Orientada a Objetos Funcional Imperativa OO

5 A linguagem objeto de estudo
Expressão 1 Expressão 2 Funcional 1 Imperativa 1 Funcional 2 Imperativa 2 OO 1 Funcional Imperativa OO 2 Funcional Imperativa OO

6 Linguagem de Expressões 1 - LE1
Inclui apenas constantes (valores) e operações sobre valores Valores e operações sobre inteiros, booleanos e string são admitidos Um programa é uma expressão

7 Linguagem de Expressões 2 - LE2
Estende LE1 com identificadores (variáveis) que possuem um valor (constante) Durante a verificação de tipos e interpretação surge a necessidade de um contexto: mapeamento entre identificadores e tipos mapeamento entre identificadores e valores Na avaliação de uma expressão, a ocorrência de um identificador é substituída pelo valor associado ao identificador Um programa é uma expressão

8 Linguagem Funcional 1 - LF1
Estende LE2 com funções parametrizadas e recursivas O corpo de uma função é uma expressão e a aplicação da função a um argumento retorna um valor O contexto de execução inclui dois componentes: mapeamento de identificadores em valores mapeamento de identificadores (nomes de função) em definições de função Um programa é uma expressão

9 Linguagem Funcional 2 - LF2
Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto de execução inclui um único componente: mapeamento de identificadores em valores Portanto, o resultado da avaliação de uma expressão pode ser uma função, uma função pode ser argumento de outra função, ... Um programa é uma expressão

10 Linguagem Imperativa 1 - LI1
Estende LE1 com identificadores (variáveis) e comandos de atribuição, entrada/saída e controle de fluxo O contexto de execução inclui três componentes: um mapeamento (dinâmico) de identificadores em valores uma lista de valores de entrada uma lista de valores de saída Um programa é um comando

11 Linguagem Imperativa 2 - LI2
Estende LI1 com procedimentos parametrizados e recursivos O corpo de um procedimento é um comando e a chamada de um procedimento idem O contexto também é estendido com: um mapeamento de identificadores (nomes de procedimentos) em definições de procedimentos Procedimentos não possuem o status de valor Um programa é um comando

12 Linguagem Funcional Imperativa - LFI
Integra as linguagens LF2 e LI2 Um programa é uma expressão ou um comando

13 Linguagem OO 1 - LOO1 Estende LI2 com classes e objetos
Procedimentos passam a ocorrer exclusivamente como métodos das classes O contexto também é estendido com: um mapeamento de identificadores (nomes de classes) em definições de classes Um programa é um comando

14 Linguagem OO 2 Estende LOO1 com herança e subtipos
Procedimentos (métodos) podem ser redefinidos O contexto também é estendido com: uma estrutura para registrar a hierarquia de classes Um programa é um comando

15 Linguagem Funcional Imperativa OO (LFIOO)
Integra as linguagens LF2 e LOO2 Um programa é uma expressão ou um comando

16 Interpretando as Linguagens
Para cada linguagem foi construída uma BNF que define sua gramática O projeto (OO) de cada interpretador: Cada item da BNF é uma classe, interface ou classe abstrata de Java A hierarquia da BNF é modelada através de herança e subtipos (extends e implements) Classes adicionais são introduzidas para modelar estruturas internas do interpretador, como contexto As BNFs e os interpretadores estão disponibilizados na homepage do curso

17 Apresentação da Linguagem de Expressões 1 - LE1

18 Exercícios Estender a LE1 com ValorChar (caracter) e uma operação que retorna a ordem (ascii) do caracter Implementar ValorReal e as operações aritméticas usuais sobre os reais Implementar operadores relacionais como menor que, maior que, ..., para valores inteiros

19 Explorando Conceitos na LE1
O componente mais básico é valor Um valor é algo que pode ser avaliado, armazenado, incorporado em estruturas de dados, passado como parâmetro, retornado como resultado, ... Ou seja, um valor é uma entidade que existe durante uma computação Decidir que construções da linguagem têm o status de valor pode impactar radicalmente o poder de expressão da linguagem (ex. Funções como valor)

20 Explorando Conceitos na LE1
É conveniente agrupar valores em tipos Tipos são conjuntos de valores e operações associadas Valores de um tipo devem exibir comportamento uniforme em relação às operações sobre o tipo O conceito de tipos permite a definição de restrições contextuais que eliminam vários erros já durante uma análise estática (compilação) LE1 agrupa valores em tipos e a verificação de tipos foi implementada

21 Explorando Conceitos na LE1
Os tipos podem ser caracterizados como Primitivos (booleanos, inteiros, reais, strings, ...) Compostos (registros, vetores, listas, conjuntos, ...) Recursivos (listas, árvores, ...) LE1 inclui apenas valores de tipos primitivos Valores compostos e recursivos serão introduzidos como exercício

22 Leitura Programming Language Concepts and Paradigms
Seções 2.1, 2.2, 2.3 e 2.4


Carregar ppt "Estudo dos Conceitos e Paradigmas de Programação"

Apresentações semelhantes


Anúncios Google