Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil.

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Python: Recursão Claudio Esperança.
Linguagem PASCAL Estruturas de Controle
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
REVISÃO– CONJUNTOS E FUNÇÕES Fabrício Dias
IV – Análise semântica DEI Associação de regras semânticas a produções
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
Medida do Tempo de Execução de um Programa
LIFE: predicados, funções e sorts built-in Jacques Robin Paulo Oliva Leonardo Lemos DI-UFPE.
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Introdução ao -calculus
8 Sistemas de Tipos Polimorfismo de inclusão.
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Linguagem Haskell Riocemar S. de Santana.
CAPÍTULO 05 Listas.
JAVA: Conceitos Iniciais
Implementar Listas em Linguagem Funcional II
Estrutura de um Programa:
Algoritmos Computacionais ( Programas )
Ponteiros Variáveis do tipo “ponteiro” armazenam endereços de memória
Definição de tipos - LF3Definição de tipos - LF3 PLP - Apresentação 1.
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
Aula 01- Funções Definição de função, representação de funções, função crescente e decrescente, função linear e polinomial.
Fábio de Oliveira Borges
Programação de Computadores
AGORA É COM VOCÊ... Escreva os números abaixo em notação científica:
Bags n Servem para armazenar a repetição de elementos n Tal qual conjuntos, a ordem dos elementos não importa n Por isso, também recebem a designação de.
Aritmética de Números Cardinais
Haskell Programação Funcional
Organização do Ambiente de Execução (Runtime System)
Teoria e Implementação de Linguagens Computacionais – IF688
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Semântica de Linguagens de Programação
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Organização do Ambiente de Execução (Runtime system) Representação de dados Avaliação de expressões Alocação de memória Rotinas Objetos e métodos.
Paradigma Funcional Apresentação de LF1.
Linguagem de Expressões 2
Estruturas de Dados Aula 1: Introdução e conceitos básicos
Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Elaborando um Programa Prof.: Gláucya Carreiro Boechat Universidade.
BCC101 Matemática Discreta I
MED 4 Funções II.
Haskell :: Funções como valores George Darmiton da Cunha Cavalcanti Monitores: Bruno Barros cin.ufpe.br) Glerter Sabiá (gas2.
Tradução Dirigida por Sintaxe
Cálculo Lambda (l – Calculus)
Métodos Formais.
94 Elsa Carvalho Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
A Linguagem Formal de Especificação VDM-SL
Generalizações: Map, Fold, Filter, e Composição ©André Santos e Marcelo d’Amorim 2010.
Programação Funcional > FUNÇÕES COMO VALORES Monitor: Guilherme Moura Paradigmas de Linguagens Computacionais.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Semântica de Linguagens de Programação
Matemática Discreta I BCC101
Departamento de Informática Universidade Federal do Espírito Santo
FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Analise de Algoritmos e Notação Assintótica
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos.
Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni.
Semântica em Linguagens de Programação Semântica Denotacional
Geração de Código Difícil de generalizar, devido à variedade de características das máquinas-destino: –Conjunto de registradores (se houver) –Pilha –Instruções.
Grupo de Estudos.Net Generics. Grupo de Estudos.Net OverView New Feature do.Net Framework 2.0 Conceito de tipo parametro Definir classe e métodos Generalização.
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
1 Lógica de Predicados BCC101 Matemática Discreta I.
Definindo Funções Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Transcrição da apresentação:

Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil

Notação para Funções Notação ‘let... in...’ –let s = 0,5 (a + b + c) in sqrt s –let succ n = n + 1 in succ m Notação lambda – n.n+1 –let succ = n.n+1 in succ m

Domínios Um domínio é um conjunto de valores. Tais valores são os elementos do domínio. Domínios primitivos: –Character –Integer –Natural –Truth-Value –Unit

Domínios (cont.) Produtos cartesianos (produto) –elementos são pares ordenados –escreve-se D  D’ –D  D’ são os pares ordenados (x, x’) tal que x in D e x’ in D’ –pode ser generalizado para o domínio D 1 ...  D n –Dinheiro = Natural  Moeda, onde Moeda = {real, dolar, libra}

Domínios (cont.) União Disjunta (soma) –um domínio união disjunta tem seus elementos escolhidos de um dos domínios componentes –escreve-se D + D’ –cada elemento do domínio é marcado (recebe um tag) que identifica o seu domínio componente –Nat + Bool: 1, true, 567, false

Domínios (cont.) Seqüência –um domínio seqüência tem elementos que são sequências homogêneas –escreve-se D* –cada elemento de D* é uma sequência finita de zero ou mais elementos escolhidos de D –nil representa a sequência vazia

Domínios (cont.) Domínio Função –cada elemento do domínio função D  D’ é uma função que mapeia elementos de D em elementos de D’ –escreve-se D  D’ –Int  Bool: par, impar, positivo, primo

Função Parcial Uma função parcial do domínio D  D’ é aquela que só pode ser aplicada com sucesso a alguns argumentos em D Muito usado em semântica Divisão é um exemplo: –div _ _ :: Nat, Nat  Nat elemento fail (  ) em cada domínio

Um Modelo de Memória Location, Storable, Store location may be: unused, undefined, contain a value empty-store : Store allocate : Store  Store  Location deallocate : Store  Location  Store update : Store  Location  Storable  Store fetch : Store  Location  Storable Store = Location  (stored Storable + undefined + unused)

Exemplos de uso das funções auxiliares Seja a s a store formada por quatro endereços, com a seguinte configuração:     unused}, então: –fetch = 3 –fetch = fail –fetch = fail –update 7) =     unused}

Exemplos de uso das funções auxiliares (cont.) –deallocate =     unused} –allocate (s) =    

Um Modelo de Ambiente Identifier, Bindable, Env empty-env : Env bind : Identifier  Bindable  Env overlay : Env  Env  Env find : Env  Identifier  Bindable Env = Identifier  (bound Bindable + unbound)

Exemplos de uso das funções auxiliares Seja env = {i  1, j  2}. Então: –bind (k, 3) = {k  3} –overlay ({j  3, k  4}, env) = {i  1, j  3, k  4} –find (env, j) = 2 –find (env, k) = fail

Abstrações Abstrações de Funções Considere a seguinte sintaxe abstrata: Exp  ...  Id “(” ParReal “)” Decl  ...  “fun” Id “(” ParFormal “)” “=” Exp ParFormal   Id “:” IdTipo ParReal   Exp

Exemplo de uma função let val s = 4 in let fun soma (n:int) = s + n in soma 10

Semântica para Funções –Argumento = Int –Funcao = Argumento  Int –Bindable = Integer + Funcao –avalie : Exp  (Env  Int) –elabore : Decl  (Env  Env) –bind-parametro : ParFormal  (Argumento  Env) –give-argumento : ParReal  (Env  Argumento)

Funções Semânticas bind-parametro  I : T  arg = bind (I, arg) give-argumento  E  env = avalie E env avalie  I ( PR )  env = let function func = find (env, I) in let arg = give-argumento PR env in func arg

Funções Semânticas elabore  fun I ( PF ) = E  env = let func arg = let parenv = bind-parametro PF arg in avalie E (overlay (parenv, env)) in bind (I, function func)

Referências Programming Language Syntax and Semantics. David A Watt. Prentice Hall, Capítulo 3.

Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil