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

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

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

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro."— Transcrição da apresentação:

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

2 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)

3 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]

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.

5 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]15 + 16 = 31 + [14, 11, 31]+ [25, 31]14 + 11 = 25 + [25, 31]+ [56]25 + 31 = 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]14 + 3 = 17 + [17, 8, 15, 16]+ [25, 15, 16]17 + 8 = 25 + [25, 15, 16]+ [40, 16]25 + 15 = 40 + [40, 16]+ [56]40 + 16 = 56 + [56]56

6 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.

7 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

8 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


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

Apresentações semelhantes


Anúncios Google