Programação Funcional

Slides:



Advertisements
Apresentações semelhantes
Título da Apresentação
Advertisements

Programação Funcional
Departamento de Informática Universidade Federal do Espírito Santo
Faculdades Integradas Santa Cruz
Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Python: Recursão Claudio Esperança.
Programação em Java Prof. Maurício Braga
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Planejamento passo-a-passo
SIC 2006 Título da Apresentação Nome do Autor e Coautores Nome da Empresa Posição Livre para o Logo da Empresa SIC 2006 Salvador - Bahia.
Departamento de Informática Universidade Federal do Espírito Santo
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Listas duplamente encadeadas
Linguagens Formais e Autômatos
Algoritmos de Ordenação Aplicação a Listas de Registos
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Visualg. Definição É um programa que executa algorítmos em forma de cálculos e a linguagem utilizada por ele é o Portugal, que é uma adaptação da linguagem.
Introdução à Linguagem Prolog
BCC101 – Matemática Discreta
Rafael Pinto Frederico Corrêa
LPG – I Prof. Flavio Marcello
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo
Construção de Compiladores
Instrutor: Nilo Menezes
PROGRAMAÇÃO ou LINGUAGEM C?
Linguagem C Estruturas de Seleção.
INTRODUÇÃO À PROGRAMAÇÃO
Árvore Geradora Mínima
Vinicius Ponte Machado
Linguagem Haskell Riocemar S. de Santana.
Prolog Programação Lógica Ícaro A. Souza.
O Portal do Estudante de Computação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Linguagem C++ - Introdução
Introdução ao uso de vatores na linguagem PASCAL.
Aula prática 6 Vetores e Matrizes
Desenvolvimento de Jogos e Entretenimento Digital
Monitoria de Sistemas Inteligentes
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.
Haskell Programação Funcional
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:
© André Santos Programação Funcional Listas André Santos.
Listas, Filas e Pilhas Katia Guimarães.
Aula 3 Listas, pilhas, filas.
1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins.
MED 4 Funções II.
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
Inserir logo da Empresa
Aula prática 7 Strings Monitoria de Introdução à Programação
Estruturas de Dados Aula 17: Estruturas Genéricas
Algoritmos e Estrutura de Dados I Jean Carlo Mendes

Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Estruturas Revisando: tipos de dados simples
Generalizações: Map, Fold, Filter, e Composição ©André Santos e Marcelo d’Amorim 2010.
Linguagens Formais - aula 02
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo X Encadeamento de Estruturas por Ponteiros.
BCC101 – Matemática Discreta
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville
Estrutura de Dados Aula 3 - Listas
Aula Prática 6 Vetores e Matrizes Monitoria
Haskell (é uma função polimorfica) Laboratório Rafael Borges
Aula prática 7 Strings Monitoria de Introdução à Programação.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Transcrição da apresentação:

Programação Funcional Funções com Listas

Introdução Usa-se a recursão, nos maiores casos de definição sobre listas, para se percorrer pelos seu elementos. Uma função simples seria a função para somar todos elementos de uma lista.

Funções Soma Para esta função existem dois casos: Caso Básico: Somar os elementos de uma lista vazia [] que irá resultar em ‘’Zero”; Passo Indutivo: Somar os elementos de uma lista não vazia. Em uma lista não vazia existe sempre o elemento head (o primeiro elemento), e o tail da lista, que é a lista que sobra sem o elemento head. Por exemplo, a lista [1, 2, 3] tem head 1 e tail [2,3].

Funções A definição da função seria: sum [] = 0; Uma lista com head a e tail x é escrita (a:x). Então a soma dos elementos de uma lista não vazia (a:x) é dada somando a à soma dos elementos de x. sum [a:x] = a + sum x

Funções Ex: sum [1,2,3,4,5] = 15 O comando é avaliado da seguinte maneira: sum [1, 2, 3, 4, 5] = 1 + somaLista [2, 3, 4, 5] = 1 + ( 2 + somaLista [3, 4, 5]) = 1 + (2 + ( 3 + somaLista [4, 5])) = 1 + (2 + ( 3 + ( 4 + somaLista [5])))

Funções = 1 + (2 + ( 3 + ( 4 + ( 5 + 0)))) (1) = 15 (+) = 1 + (2 + ( 3 + ( 4 + ( 5 + somaLista [])))) (2) = 1 + (2 + ( 3 + ( 4 + ( 5 + 0)))) (1) = 15 (+) Uma função que teria uma definição muito parecida com a definição de soma (sum), seria a função para determinar a lista cujos elementos são o dobro dos elementos de uma lista. Diga qual é o dobro da lista se se segue: [1,2,4] ?

Funções As funções apresentadas até o momento (soma e dobro) trabalham apenas com listas de um tipo específico. Porém existem funções polimórficas que trabalham com listas de qualquer tipo. Um exemplo seria a função length, pré-definida da linguagem, que dá o número de elementos de um lista.

Funções A que considerar que a lista vazia tem tamanho “Zero”. A lista não vazia, possui sempre um elemento a mais que o seu tail. E esta definição serve para qualquer tipo de listas, tanto para números quanto para caracteres, etc, por isso usa-se a variável de tipo “t” na declaração da função. A definição da função length seria: length [] = 0 length (a:x) = 1 + length x

Funções Exercicios ______________________________________________ Ex: length [1,2,3] = 3 ______________________________________________ Exercicios Identifique e explique detalhadamente (identificar a definição da sua função, dar exemplos)sobre os comandos de listas que se seguem: - Ordenação de elementos da lista; Inserção de elementos na lista;

Exercicios Remoção de elementos na lista; Soma de pares de elementos na lista. 2. Fale das funções polimorficas: folding, filtering e mapping.

FIM Docente: Ivo Passe