Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.

Slides:



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

Programação Funcional
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Projeto de Programação Departamento de Informática – CT XVII Engenharia de Computação Programação I /1 Maria Claudia Boeres MOONLANDER Hudson Martins.
Moonlander Projeto Computacional. Função: pilotar nave terreno pilotar nave terreno = (estado1,estado2) Onde estado1 representa o foguete horizontal e.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Python: Recursão Claudio Esperança.
Haskell The Craft of Functional Programming Simom Thompson Capítulo 14
Input/Output em Haskell
Programação Funcional
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Eng. Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Prof. Jane Méri Santos Coordenadora do Programa de
Variáveis Dinâmicas Caixas de Nós
Funções em C Universidade do Estado de Santa Catarina
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Introdução ao -calculus
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Professores Claudia Boeres e Estefhan Dazzi Wandekoken 2010/1.
Aula 07 Comandos de Repetição while e for
Linguagem Haskell Riocemar S. de Santana.
Implementar Listas em Linguagem Funcional II
Algoritmos de Ordenação 4
Material Didático Proposto 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas.
Listas: Haskell x Prolog
Haskell Programação Funcional
©André Santos, Programação Funcional Generalizações André Santos.
©André Santos, Programação Funcional Classes em Haskell André Santos.
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:
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
© André Santos Programação Funcional Listas André Santos.
Estrutura de Decisão e Repetição
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
INTRODUÇÃO.
Material Didático Proposto 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas.
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Lista de exercício 4 Prof. Luis S. B. Marques MINISTÉRIO DA EDUCAÇÃO
Generalizações: Map, Fold, Filter, e Composição ©André Santos e Marcelo d’Amorim 2010.
Funções como Valor ©André Santos e Marcelo d’Amorim.
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.
UFES Teoria dos Grafos Representação computacional de redes de fluxo Maria Claudia Silva Boeres Mestrado em Informática.
CEEIDSC Prof.: José Eustáquio Rangel de Queiroz Carga Horária: 60 h.
Elsa Carvalho BEGIN  := id; b:=true; S:=[,..., ] WHILE (S  AND b)DO := top(S); S:=pop(S); := ; IF s e v são da forma f(t 1,... t n ), g(r 1,..., r m.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Renata Galante.
Haskell Programação Funcional Diego Lima Rubem Moreira.
BCC101 – Matemática Discreta
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Lista de exercício 3 Prof. Luis S. B. Marques MINISTÉRIO DA EDUCAÇÃO
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Funções de Alta Ordem Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Definindo Funções Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Transcrição da apresentação:

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo

Pesquisa Binária pesquisa binária -- pesqbin k xs = if null xs then False else if k == pivot then True else if k < pivot then pesqbin k menores else pesqbin k maiores where p = div (length xs) 2 menores = take p xs maiores = tail (drop p xs) pivot = head (drop p xs)

Funções de segunda ordem Quando pelo menos um dos argumentos da função é uma função Exemplos: – sublista prop xs (elaborado em sala!) – takeWhile prop xs: primitiva do Prelude que gera uma lista dos elementos de xs enquanto prop for satisfeita. Exemplo: takeWhile (<3) [2,3,1,4] – dropWhile prop xs: a sublista de xs obtida a partir do primeiro elemento que não satisfaz prop. dropWhile (<3) [2,3,1,4]

Paradigma aplicativo observamos que uma situação frequente na resolução de problemas é a necessidade de aplicar, de forma cumulativa, uma função à uma coleção de elementos. estilos utilizados para isso: Recursão Mecanismos de repetição (em linguagens procedurais) aplicativo (em linguagens funcionais): usado quando desejamos generalizar uma operação para todos os elementos de uma lista.

Exemplo: soma dos elementos de uma lista expressãonova expressãoredução + [5, 9, 3, 8, 15, 16]+ [14, 3, 8, 15, 16]5 + 9 = 14 + [14, 3, 8, 15, 16]+ [14, 11, 15, 16]3 + 8 = 11 + [14, 11, 15, 16]+ [14, 11, 31] = 31 + [14, 11, 31]+ [25, 31] = 25 + [25, 31]+ [56] = 56 + [56]56 Expressãonova expressãoRedução + [5, 9, 3, 8, 15, 16]+ [14, 3, 8, 15, 16]5 + 9 = 14 + [14, 3, 8, 15, 16]+ [17, 8, 15, 16] = 17 + [17, 8, 15, 16]+ [25, 15, 16] = 25 + [25, 15, 16]+ [40, 16] = 40 + [40, 16]+ [56] = 56 + [56]56

A função foldl A função de segunda ordem que utilizaremos para o estilo aplicativo se chama foldl Sintaxe: foldl valor especial: é tomado como ponto de partida para as reduções. A primeira aplicação da operação é sobre o valor especial e o primeiro elemento da lista.

Exemplos Soma dos elementos de uma lista: sum xs = foldl (+) 0 xs Produto dos elementos de uma lista: product xs = foldl (*) 1 xs O operador && aplicado aos elementos de uma lista (conjunção lógica): and xs = foldl (&&) True xs O operador || aplicado aos elementos de uma lista (disjunção lógica): or xs = foldl (||) False xs

Outros Exemplos Menor elemento de uma lista: menorL xs = foldl menor (head xs)xs Ordenação de uma lista, usando inserção ordenada: ordena xs = foldl insord [] xs insord xs x = takeWhile (< x) xs ++ [x] ++ dropWhile (< x) xs