Centro Universitário do Triângulo
|
|
|
- Bruno Gonçalves Chaves
- 9 Há anos
- Visualizações:
Transcrição
1 Centro Universitário do Triângulo Cálculo Lambda 1. Introdução A elaboração de modelos de computação (resolução de problemas por uma máquina) baseia-se em trabalhos de dois pesquisadores com enfoques bastante diferentes: Máquinas de Turing (Alan Turing, 1936) Cálculo Lambda (Alonzo Church, 1936) Utilidade do Cálculo Lambda em Programação Funcional: Ponto de partida: Maioria das Linguagens de Programação Funcional são semelhantes e diferem somente em aspectos sintáticos; Uma linguagem funcional de alto nível pode ser compilada em código intermediário com uma sintaxe e semântica extremamente simples. Essa linguagem é expressa em termos de cálculo lambda; O cálculo lambda é suficientemente expressivo para permitir a codificação de uma linguagem funcional de alto nível; Algoritmos para a resolução de problemas computacionais expressos em cálculo lambda podem ser facilmente implementados de diferentes formas. O cálculo lambda serve como uma ponte entre linguagens funcionais de alto nível e suas implementações de baixo nível. Razões para a apresentação do cálculo lambda como uma intermediária: É uma linguagem extremamente simples, consistindo de somente algumas poucas construções sintáticas e de uma semântica simples; Uma implementação do cálculo lambda necessita somente de suportar algumas construções simples. A sua semântica simples nos permite analisar facilmente a correção de sua implementação. É uma linguagem expressiva, a qual é suficientemente poderosa para expressar todos os programas funcionais e, por conseguinte, todas as funções computáveis. A linguagem Lisp foi inspirada pelo cálculo lambda, um formalismo desenvolvido nos anos 30 por Alonzo Church como parte de um sistema para lógicas de ordem superior e teoria das funções [HS86]. O cálculo lambda pode ser considerado como uma linguagem de programação abstrata, onde o conceito de computação, isto é, as maneiras como funções podem ser combinadas para formar outras funções, aparece em toda sua generalidade e de uma forma pura, despida de complicações sintáticas. A principal característica do cálculo lambda é tratar funções como cidadãos de primeira classe, isto é, entidades que podem ser, como um dado qualquer, utilizadas como argumentos e retornadas como valores de outras funções [Sto77]. Esta característica é preservada na linguagem Lisp onde dados e funções têm exatamente o mesmo ``status'' 2. Notação Inicialmente, vamos introduzir a notação utilizada no cálculo lambda. Considere a expressão matemática ; esta expressão pode ser interpretada como: Função de x; Função de y ou; 1
2 Uma função de ambos (x e y): Para eliminar esta ambigüidade, em geral, são adotadas notações ad hoc como, por exemplo, atribuir um nome arbitrário a cada função. No cálculo lambda, Church propõe uma maneira sistemática para representar uma função de uma ou mais variáveis, dada uma expressão matemática qualquer, sem a necessidade de atribuir um nome a esta função. Isto é feito utilizando o símbolo auxiliar : Exemplo: As equações e são escritas na notação lambda como: Usando o fato de serem permitidas funções cujos valores são outras funções, pode-se simplificar a notação utilizada para as funções e acima, eliminando a necessidade de notações específicas para funções de duas ou mais variáveis: Exemplo: A equação é agora escrita como: Esta nova notação permite que apenas funções de uma variável sejam consideradas, simplificando a apresentação da linguagem. Exemplo: A partir das funções abaixo, converta para a notação Lambda e encontre o resultado. a) f1(x) = x 2 + 2; f1(3) =? b) f2(y) = y 3 + 4; f2(2) =? c) f3(x) = x + x.y f3(4) =? d) f4(y) = x + x.y f4(3) =? e) f5(x,y) = x + x.y f5(4,3) =? f) f6(x,k) = x k f6(5,2) =? g) f7(x,y) = f1(x) + f2(y) f7(3,2) =? h) f8(y,x) = f1(x) + f2(y) f8(3,2) =? 3. Sintaxe Formalmente, a linguagem do cálculo lambda é determinada pela especificação dos seguintes conjuntos: Um conjunto infinito V de símbolos de variável. Um conjunto finito, infinito ou vazio C de símbolos de constante. 2
3 A sintaxe de uma expressão lambda em notação BNF é dada abaixo: <expr> ::= <constante> <variavel> <expr><expr> λ <variavel>.<exp> <constante> ::= a b c d <variavel> ::= x y w z ou, de forma mais estruturada (G. Revesz): <expr> ::= <constante> <variavel> <aplicação> <abstração> <aplicação> ::= (<expr>) <expr> <abstração> ::= λ <variavel>.<exp> <constante> ::= a b c d e f g <variavel> ::= x y w z Exercício: Verificar se a linguagem acima é capaz de gerar os seguintes Lambda-Termos: a) λx.x b) λx. λy.(y) x c) λx.(f)x d) (f)3 e) λf.(f)2 f) (λy.(x)y) λx.(d)x As variáveis e constantes são chamadas átomos. Termos arbitrários são representados por letras maiúsculas (M, N, P, Q, etc.) e quando dois termos e são sintaticamente idênticos, escreve-se. 4. Sintaxe da Linguagem Lambda Duas construções destacam-se na Linguagem Lambda: a) Abstração Lambda: Permite abstrair a definição da função. Por exemplo, a função f(x) = x é denotada pelo seguinte expressão lambda: λx. x 3 + 4, que pode ser interpretado como: função tal que, para um argumento arbitrário x resulta em x b) Aplicação Lambda: Determina o valor da função aplicada a um dado parâmetro. Por exemplo, a função f acima aplicada ao parâmetro 2 é denotada pelo seguinte expressão lambda: (λx. x 3 + 4)(2), que pode ser interpretado como: aplicação da função λx. x ao valor 2 Convenção: M, N, L... denotam termos da Linguagem Lambda; No caso acima, supondo que: M denota: x N denota: λx. x P denota 2 3
4 Então o termo (λx. x 3 + 4)(2) pode ser denotado como segue: (λx.m)(p) (N)(P) OBS: Qual a diferença entre as expressões lambdas abaixo? a) (λk.(λx.x k )(5))(2) b) (λk.(λx.x k ))(5)(2) Solução: a) (λk.(λx.x k )(5))(2) = (λk.5 k )(2) = 5 2 = 25 b) (λk.(λx.x k ))(5)(2) = (λx.x 5 )(2) = 2 5 = A Semântica operacional do Cálculo Lambda A semântica de um termo lambda está relacionada com os conceitos de variável livre, ligada (ou atada), substituição de variável livre e regra de redução beta. Variável livre e ligada Considere a expressão: λx (x+y)(4). Para avaliar esta expressão necessitamos: Saber o valor global de y; Não necessitamos saber o valor global de x, pois é o parâmetro formal da função; Assim vemos que: x e y possuem um status bastante diferente; A razão é que x ocorre ligado (atado) pelo λx, é somente um encaixe dentro do qual o argumento 4 é colocado quando a abstração-λ for aplicada ao argumento. Por outro lado, y não é ligado por nenhuum λ e assim ocorre livre na expressão. A ocorrência de uma variável é atada (ligada) se há uma expressão-λ envolvente qua a amarra, senão é livre. No exemplo a seguir (notação pré-fixada), x e y ocorrem atados (ligados), z porém, ocorre livre: λx. + ((λy. + y z) 7 )x Resumindo: Variável Ligada: se está dentro do escopo de uma abstração lambda; Variável Livre: caso contrário Exemplo: a) No termo λx.x k, as variáveis x e k são ditas ligada e livre, respectivamente. b) No termo λx.λk.x k (ou (λx.(λk.x k ))) as variáveis x e k são ditas ligadas. 4
5 6. Substituição de Variável Livre Sejam x uma variável e M, P termos lambda. A Substituição de uma Variável Livre x por P em M é denotada por: [P/x]M é simplesmente a substituição de todas as ocorrências de x em M pelo termo P. Exemplo: A substituição da variável livre x por 5 em λx.x k é como segue: [5/x] λk.x k = λk.5 k 7. Regra de Redução Beta Sejam x uma variável e M, P termos lambda. A Regra de Redução Beta (Regra de Redução β) de um termo (λx.m)(p) é dada pela substituição de x por P em M, ou seja: [P/x]M Note-se que x é uma variável ligada em λx.m, mas é livre em M, o que garante a coerência da definição acima. 8. Semântica de um termo lambda A Semântica de um Termo Lambda dado por uma função aplicada a um parâmetro é dada pelas aplicações sucessivas possíveis da regra de redução beta. Exemplo: A semântica do termo (λk.(λx.x k )(5))(2) é dada pela sucessiva aplicação da regra de redução beta como segue: (λk.(λx.x k )(5))(2) = aplicação da regra de redução beta em k [2/k](λx. x k )(5) = substituição da variável livre k (λx. x 2 )(5) = aplicação da regra de redução beta em x [5/x]( x 2 ) = substituição da variável livre x 5 2 = 25 Exercício: Converta as expressões abaixo para a linguagem Lambda e resolva-as a partir da Regra de Redução Beta. i) f1(x) = x 2 + 2; f1(3) =? j) f2(y) = y 3 + 4; f2(2) =? k) f3(x) = x + x.y f3(4) =? l) f4(y) = x + x.y f4(3) =? m) f5(x,y) = x + x.y f5(4,3) =? n) f6(x,k) = x k f6(5,2) =? o) f7(x,y) = f1(x) + f2(y) f7(3,2) =? p) f7(y,x) = f1(x) + f2(y) f8(3,2) =? 5
Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes
Funções Recursivas Prof.: Edson Holanda [email protected] Teoria da computação - Diverio e Menezes Tipos de Formalismos Operacional Define-se uma máquina abstrata, baseada em estados, em instruções
Cálculo Lambda Sem Tipos
Cálculo Lambda Sem Tipos Cálculo lambda sem tipos Peter Landin (60 s) observou que uma linguagem de programação pode ser compreendida formulando-a em um pequeno núcleo capturando suas características essenciais
Programação Funcional - Introdução a Cálculo Lambda
Programação Funcional - Introdução a Cálculo Lambda Cristiano Damiani Vasconcellos Universidade do Estado de Santa Catarina 1. Definição Cálculo lambda (λ-cálculo) é um modelo matemático capaz de ilustrar
Lambda Cálculo e Programação Funcional. Programação Funcional Bacharelado em Sistemas de Informação Maio
Lambda Cálculo e Programação Funcional Programação Funcional Bacharelado em Sistemas de Informação Maio - 2009 Alonzo Church (1903 1995) Professor em Princeton, EUA (1929 1967) e UCLA (1967 1990) Inventou
I.2 Introdução a Teoria da Computação
I.2 Introdução a Teoria da Computação O que é? Fundamento da Ciência da Computação Tratamento Matemático da Ciência da Computação Estudo Matemático da Transformação da Informação Qual sua importância?
Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação
Universidade Federal de Santa Maria Disciplina de Teoria da Computação Quais são as capacidades e limitações fundamentais dos computadores? Funções Computáveis Algoritmo: descrição finitade uma computação
Teoria da Computação
Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: [email protected] Funções recursivas Os formalismos usados para especificar algoritmos podem ser classificados
Matemática Discreta para Ciência da Computação
Matemática Discreta para Ciência da Computação P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação
Linguagens de Programação Funcional
Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A
Introdução à Programação Funcional
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao CLisp Funções Lambda e binding Funções
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected]
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 08 Equivalência de programas Parte 2 Prof.ª Danielle Casillo Poder computacional dos diversos tipos de programas
Marcos Castilho. DInf/UFPR. 16 de maio de 2019
16 de maio de 2019 Motivação Quais são os limites da computação? O que é um Problema de decisão? Um problema de decisão é um conjunto de perguntas, cada uma das quais tem um SIM ou um NÃO como resposta.
Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.
Máquinas Universais Máquina de Celso Olivete Júnior [email protected] http://www2.fct.unesp.br/docentes/dmec/olivete/ Roteiro Hipótese de Church - Máquinas Universais: Máquina de Máquina de : Noção
Resolução Exe 2.12 Monolítico Recursivo
Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R
LINGUAGENS FORMAIS E AUTÔMATOS
LINGUGENS FORMIS E UTÔMTOS Introdução reve Histórico Em 1936, lan Turing (matemático) propôs a possibilidade de se construir um computador digital através da formalização de um procedimento em tempo finito.
Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente
ESIN/UCPel 058814 Linguagens Formais e Autômatos TEXTO 5 Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente Prof. Luiz A M Palazzo Maio de 2007 0. Introdução A Ciência da Computação
Capítulo 2: Procedimentos e algoritmos
Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo
Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010
Programação em Lógica UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010 Roteiro Introdução Conceitos Básicos Linguagens Lógicas Semântica de Modelos Semântica de Prova Programação
1 INTRODUÇÃO E CONCEITOS BÁSICOS
1 INTRODUÇÃO E CONCEITOS BÁSICOS Inicia com uma breve história do surgimento e do desenvolvimento dos conceitos, resultados e formalismos nos quais a Teoria da Computação é baseada. Formalização dos conceitos
INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:
INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: [email protected] URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe
Teoria da Computação. Computabilidade
Cristiano Lehrer Introdução O objetivo do estudo da solucionabilidade de problemas é investigar a existência ou não de algoritmos que solucionem determinada classe de problemas. Ou seja, investigar os
Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.
DEINFO - UFRPE Julho, 2014 Motivação Introdução O que pode ser computado? E mais intrigantemente, o que não pode ser computado? Motivação Introdução O que pode ser computado? E mais intrigantemente, o
Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Programação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Conceito de Algoritmo Pseudocódigo Tipos de
Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.
Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes
2.2. A Semântica Operacional do Cálculo Lambda
2.2. A Semântica Operacional do Cálculo Lambda Até agora foi descrita a sintaxe do cálculocomo calcular com ele.. Para chamá-lo de cálculo, devemos porém dizer Basicamente isto é realizado através de três
Aulas 10 e 11 / 18 e 20 de abril
1 Conjuntos Aulas 10 e 11 / 18 e 20 de abril Um conjunto é uma coleção de objetos. Estes objetos são chamados de elementos do conjunto. A única restrição é que em geral um mesmo elemento não pode contar
Teoria da Computação
Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: [email protected] Máquinas Universais Máquinas Universais podem ser entendidas de duas formas: Se é capaz
Linguagens de Programação I. Introdução a Algoritmos e Lógica de Programação
Linguagens de Programação I Introdução a Algoritmos e Lógica de Programação 1 INTRODUÇÃO Que é um programa de computador? Um programa de computador é o produto resultante da atividade intelectual de um
Gramáticas Livres de Contexto
Gramáticas Livres de Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 42 Frase do dia Quando vires
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Proposta por Alan Turing em 1936; É universalmente conhecida e aceita como formalização de algoritmo; Teoria
Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática
Projeto e Análise de Algoritmos Introdução Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática Projeto e Análise de Algoritmos Eu penso que o projeto de algoritmos eficientes
Linguagens de Programação e Programação Funcional
Linguagens de Programação e Programação Funcional GSI004 Aula 01* Faculdade de Computação UFU *baseada nos slides do Professor Paulo Henrique Ribeiro Gabriel 30 de setembro de 2014 GSI004 Aula 01 30 de
Fundamentos de Programação
Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal
Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO
Principais paradigmas de programação Programação imperativa Programação funcional Programação lógica Programação OO Programação Imperativa É o paradigma mais usado. Programas são definidos através de sequências
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 01 Apresentação da Disciplina Prof.ª Danielle Casillo PLANO DE ENSINO Nome: Teoria da Computação Créditos:
IBM1088 Linguagens Formais e Teoria da
IBM1088 Linguagens Formais e Teoria da Computação Linguagens e Gramáticas Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 47 Frase do dia Sofremos muito com
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar
INE5622 INTRODUÇÃO A COMPILADORES
INE5622 INTRODUÇÃO A COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e
SCC Capítulo 2 Lógica de Predicados
SCC-630 - Capítulo 2 Lógica de Predicados João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
Programação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Paradigmas para linguagens de Programação
1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?
capítulo 1 introdução A ciência da computação é o conhecimento sistematizado da computação. Sua origem é milenar, tendo se desenvolvido em diferentes regiões e épocas. A teoria da computação é a base fundamental
Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática
Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra
Paradigmas de Programação
Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma
LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem
LFA Aula 04 Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem Linguagens Formais Linguagens formais se preocupam com os problemas sintáticos das linguagens. Sintaxe e Semântica Sintaxe
Introdução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Programação Funcional Cálculo Lambda - Aula Nº 3
Programação Funcional Cálculo Lambda - Aula Nº 3 2.3. Ordem de Redução Se uma expressão não contém mais redexes, então a avaliação está completa. Um expressão nesta forma é dita estar na forma normal.
INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas
INE5317 Linguagens Formais e Compiladores AULA 4: Gramáticas bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected] URL:
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Linguagens de Programação Programação Funcional (Haskell)
Linguagens de Programação Programação Funcional (Haskell) Andrei Rimsa Álvares Sumário Introdução Programação funcional Linguagens funcionais Haskell Casamento de padrões Funções de ordem superior Avaliação
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.
LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior [email protected] 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas
A Integração da Morte
A Integração da Morte Thiago de Paiva Campos No cálculo, Leibniz criou a integral mais especificamente para determinar a área sob uma curva no plano cartesiano. Mas o cálculo também pode ser utilizado
Aula 7: Autômatos com Pilha
Teoria da Computação Segundo Semestre, 2014 Aula 7: Autômatos com Pilha DAINF-UTFPR Prof. Ricardo Dutra da Silva Vamos adicionar um memória do tipo pilha ao nossos autômatos para que seja possível aceitar
SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42
Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais
Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação
Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é sem
Paradigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas
Definições Hierarquia de Chomsky Exemplos de gramáticas 1 Gramáticas Conceito introduzido pela lingüística Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas Fracasso da tradução
TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS
TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS Acadêmico: Cleison Vander Ambrosi Orientador: José Roque Voltolini da Silva Roteiro da Apresentação Introdução Motivação
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 03 Programas (Monolítico e Iterativo) Prof.ª Danielle Casillo Programas, Máquinas e Computações Diferentes
Linguagens Livres do Contexto. Adaptado de H. Brandão
Linguagens Livres do Contexto Adaptado de H. Brandão Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres
Conceitos de Linguagem de Programação - 2
Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação
Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.
Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.
Sintaxe e Semântica George Darmiton da Cunha Cavalcanti ([email protected]) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo
Linguagem de Programação
Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: [email protected]) Programas Programas são seqüências de instruções
