1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins.

Slides:



Advertisements
Apresentações semelhantes
Programação Funcional
Advertisements

Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Tipos Explícitos e Tipos Polimórficos para LF1
Programação em Java Prof. Maurício Braga
Soluções Iterativas com Laços
Recursividade Função recursiva é aquela que chama a si própria.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Métodos, Parâmetros, Argumentos e Contratos
Algoritmos e Estrutura de Dados I
JavaCC e JJTree Geração de compiladores implementados em Java
Sobrecarga de Operadores
Animador para a Linguagem Funcional 2 Carlos Eduardo Lima Lucas Roberto Bechert Schmitz Leonardo Lucena.
7 Abstração Genérica Unidades genéricas e instanciação.
Instrutor: Nilo Menezes
Sobrecarga e Declaração de Operadores Rafael Fonseca e Romeu Guimarães.
Linguagem OperOR Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades.
Revisão da Linguagem C.
Estrutura de Dados em Java
CRIANDO OBJETOS EM JAVA
Introdução a Estruturas de Dados Avançadas Utilizando Linguagem C
Implementar Listas em Linguagem Funcional II
Departamento de Estatística e Informática
Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
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.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de Programação JAVA
Expressões e Instrução de Atribuiçã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:
Paradigma Funcional Apresentação de LF1.
Augusto Sampaio e Paulo Borba Centro de Informática
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques
Linguagem de Programação JAVA
Orientação a Objetos e Java Graduação em Ciência da Computação
Pilhas Profa. Nádia Félix.
Paradigma funcional.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
1 Linguagem Imperativa 2 com Design by Contract Alunos: Bruno Moreno José Elias Queiroga Yuri Malheiros Samara Martins Prof.: Augusto Sampaio.
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Haskell :: Funções como valores George Darmiton da Cunha Cavalcanti Monitores: Bruno Barros cin.ufpe.br) Glerter Sabiá (gas2.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Gerador de Tabela-Verdade
Recursividade Profs. De Prog2 e Lab2.
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.
1 Diego Machado Dias Rodrigo Cézar Luna dos Santos Weslley Silva Torres.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
PLP – Paradigma de Linguagens de Programação
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Linguagem Funcional 2 Equipe: Gustavo Cabral Leonardo Maici Professor: Augusto
JavaCC.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Projeto II - PLP Prof. Augusto Sampaio
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
1 CIn / UFPE Algoritmos de Parsing Gustavo Carvalho Março 2011.
Listas Duplamente Encadeadas Profs Prog2 e Lab2 Unisinos.
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Capítulo 7 Métodos. 2Capítulo 7 – Métodos Métodos Criação e chamada de métodos Passagem de parâmetros VarArgs Sobrecarga Método com valor de retorno Métodos.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
1 CIn / UFPE Introdução a Parsing Gustavo Carvalho Abril 2015.
Mobilidade para Linguagem Orientada a Objetos 1
Transcrição da apresentação:

1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins

O Problema [1] Na linguagem funcional 3 o número de parâmetros passados a uma função é fixado no momento em que a mesma é criada e a sua chamada só pode ser feita com aquele número pré-determinado de parâmetros.

O Problema [2] Exemplo: let fun soma a b = a + b in soma(1,2)

O Problema [3] A função anterior só recebe dois parâmetros. Se eu quiser uma que receba três, quatro, cinco,...?

A solução Implementar o conceito de VARARGS na LF3 Com VARARGS, uma função/método pode ser criada com um parâmetro que recebe vários argumentos.

VARARGS [1] Características: –Uma vez chamada a função/método, a lista de parâmetros passada é imutável. –O tamanho da lista não é definido. –O VARARGS deve ser o último parâmetro da função/método.

15/01/20077 Varargs [2] Exemplo de VARARGS em Java: public static double somar(double... numeros ){ double soma = 0; for (double n: numeros){ soma += n; } return soma; }

15/01/20078 VARARGS em LF3 Usa a implementação de listas da LF3. Pode conter diferentes tipos. É identificado por “...” antes do parâmetro. Dentro do corpo da função, todas as operações com listas são permitidas.

15/01/20079 BNF Programa ::= Expressao Expressao ::= Valor | ExpUnaria | ExpBinaria | ExpDeclaracao | Id | Aplicacao | IfThenElse Valor ::= ValorConcreto | ValorAbstrato ValorAbstrato ::= ValorFuncao ValorConcreto ::= ValorInteiro | ValorBooleano | ValorString | ValorLista ValorFuncao ::= "fn" Id Id "." Expressao ExpUnaria ::= "-" Expressao | "not" Expressao | "length" Expressao | head(Expressao) | tail(Expressao) | size(Expressao) | ExpCompreensaoLista ExpCompreensaoLista ::= Expressao Gerador | Expressao Gerador Filtro Gerador ::= “for” Id “in” Expressao | “for” Id “in” Expressao [“,”] Gerador Filtro ::= “if” Expressao

BNF ExpBinaria ::= Expressao "+" Expressao | Expressao "-" Expressao | Expressao "*" Expressao | Expressao ">" Expressao | Expressao "<" Expressao | Expressao "and" Expressao | Expressao "or" Expressao | Expressao "==" Expressao | Expressao "++" Expressao | Expressao ".." Expressao | Expressao ":" Expressao | Expressao "^^" Expressao ExpDeclaracao ::= "let" DeclaracaoFuncional "in" Expressao DeclaracaoFuncional ::= DecVariavel | DecFuncao | DeclaracaoFuncional "," DeclaracaoFuncional DecVariavel ::= "var" Id "=" Expressao DecFuncao ::= "fun" ParamList "=" Expressao ListId ::= Id | Id"," ListId ParamList ::= ListId | ListId"," "..."VarargsId | "..."VarargsId Aplicacao:= Expressao"(" ListExp ")” ListExp ::= Expressao | Expressao, ListExp

15/01/ Exemplos let fun somaUm a = a + 1 in let fun somaCinco b = b + 5 in let fun comp valor...funcoes = (head(tail(funcoes)))((head(funcoes))(valor)) in comp(2,somaUm, somaCinco) Resultado: 8

Exemplos let fun heads...listas = [head( x) for x in listas] in heads([3,4,5],[1,7,8],[9,2,6]) Resultado: [3,1,9] let fun heads...listas = [head( x) for x in listas] ^^ [tail( y) for y in listas] in heads([3,4,5],[1,7,8],[9,2,6]) Resultado: [3, 1, 9, [4, 5], [7, 8], [2, 6]]

Dúvidas