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
«Forte do Bom Sucesso (Lisboa) – Lápides 1, 2, 3» «nomes gravados, 21 de Agosto de 2008» «Ultramar.TerraWeb»
Advertisements

IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
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 Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
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.
Departamento de Informática Universidade Federal do Espírito Santo
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
Computação Gráfica I Conteúdo: Professor: - Objetos gráficos espaciais
A busca das mulheres para alcançar seu espaço dentro das organizações
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 – 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.
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.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Alexandre Suaide Ed. Oscar Sala sala 246 ramal 7072
Atividade Industrial - SUFRAMA
Curso de ADMINISTRAÇÃO
Relações Adriano Joaquim de O Cruz ©2002 NCE/UFRJ
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
A Teoria dos Determinantes
Base na composição química
Funções em C Universidade do Estado de Santa Catarina
Para consertar uma engrenagem, é necessário substituir uma peça circular danificada por outra, cujo raio r, em u.c., deve satisfazer à relação.
Universidade Federal do Espírito Santo Programação II Vetores Professora: Norminda Luiza.
Aula 4 Nomes, Vinculações, Tipos e Escopos
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Professores Claudia Boeres e Estefhan Dazzi Wandekoken 2010/1.
Provas de Concursos Anteriores
Amintas engenharia.
Elsa Carvalho 28 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
ESTATÍSTICA.
Renda até 2 SM.
Expressão algébrica a partir da representação gráfica da função
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Televisão: a tecnologia por detrás do écran
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
Algoritmos de Ordenação 4
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap. 12.
Bolha Posição de máx. W2 Ponto de Estagnação
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Conduta Auxiliar ANO V – Nº 02.
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.
LINHAS MAIS RECLAMADAS Ranking Negativo para Fiscalização Direcionada Conservação - Frota ANO IV – Nº 12.
FISCALIZAÇÃO DIRECIONADA CONSERVAÇÃO - FROTA ANO III – Nº 11.
Coordenação Geral de Ensino da Faculdade
Listas: Haskell x Prolog
Programação Funcional
FISCALIZAÇÃO DIRECIONADA CONSERVAÇÃO - FROTA ANO IV – Nº 05.
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
APOIOS PEDAGÓGICO ACRESCIDO
Projeto Medindo minha escola.
Semântica de Linguagens de Programação
Algoritmos Crescimento de Funções
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
Olhe fixamente para a Bruxa Nariguda
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Estatística Aula 13 Prof. Marllus Gustavo Ferreira Passos das Neves
Universidade Federal de São Paulo COEX - 1ª Prestação de Contas Encontro de Avaliação da Política de Educação Permanente em Saúde no Estado de São Paulo.
Introdução à análise Vetorial
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.
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

Definição de funções usando listas (list comprehension) Uma lista pode ser descrita através da enumeração de seus elementos Podemos também descrever listas através das condições que um elemento deve satisfazer para pertencer a ela. Em outras palavras, queremos descrever uma lista através de uma intenção. Esta forma é análoga à que já conhecemos para descrição de conjuntos. Exemplo: P = {quadrado de x | x é natural e é menor que 10} ou ainda mais formalmente, P = { x^2 | x pertence a N e x <10}

Sintaxe [ | ]

Sintaxe : - expressões usuais em Haskell para definição de valores, inclusive condicionais. : - descrição dos elementos a serem considerados para avaliação da.

Sintaxe A pertinência é formada por uma seqüência de qualificadores de dois tipos de construção: os geradores e os predicativos. Os geradores descrevem uma lista de onde se originam os elementos a serem considerados, usando a sintaxe:

Exemplos Prelude> [x^2| x<-[0..4]] [0,1,4,9,16] Prelude>[x | x<-[1,4..100],odd x] [1,7,13,19,25,31,37,43,49,55,61,67,73,7 9,85,91,97]

Exemplos É importante destacar que as expressões de pertinência são avaliadas da esquerda para direita. Prelude> [x | odd x, x<-[1,4..100]] ERROR: Undefined variable "x"

Exemplos -- Dada uma lista 'xs' defina uma sublista formada -- pelo quadrado dos elementos que são pares slpares xs = [x^2 | x<- xs, even x] Main> :l preparalista.txt Reading file "preparalista.txt": Hugs session for: E:\HUGS98\lib\Prelude.hs preparalista.txt Main> slpares [1,4..50] [16,100,256,484,784,1156,1600,2116] Main> slpares [34,67,99,23,12,3,67,99] [1156,144]

Exemplos -- Determinar a sublista de elementos menores que 'x' em -- uma lista --'xs' lmenor x xs = [ y | y <-xs, y < x] Main> lmenor 45 [1,5,6,86,34,76,12,34,86,99] [1,5,6,34,12,34] Main> lmenor 1 [1,5,6,86,34,76,12,34,86,99] [ ] Main> lmenor 100 [1,5,6,86,34,76,12,34,86,99] [1,5,6,86,34,76,12,34,86,99]

Exemplos -- Determinar a lista de elementos gerados -- condicionalmente a uma constante dada k. pmenoresk k xs = [ if x < k then x^2 else x + 2 | x <-xs]... Main> pmenoresk 30 [1,5,6,86,34,76,12,34,86,99] [1,25,36,88,36,78,144,36,88,101]

Uso de mais de um gerador Determinar a lista dos pontos do plano dentro da -- regiao definida pela origem, a coordenada (eixo y) -- 5 e a abscissa (eixo x) 3. pontos = [ (x,y) | x <- [0..3], y <- [0..5]]... Main> pontos [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5), (1,0),(1,1),(1,2),(1,3),(1,4),(1,5), (2,0),(2,1),(2,2),(2,3),(2,4),(2,5), (3,0),(3,1),(3,2),(3,3),(3,4),(3,5)]

Utilizando geradores e predicativos -- Determinar a lista dos pontos do plano dentro da -- regiao definida pela origem, a coordenada (eixo y) -- 5 e a abscissa (eixo x) 3. Considere apenas os -- pontos onde x é impar e y par. pontos1 = [ (x,y) | x <- [0..3], odd x, y <- [0..5], even y ]... Main> pontos1 [(1,0),(1,2),(1,4),(3,0),(3,2),(3,4)]

Exemplo Determinar os pares de valores, onde: o primeiro é múltiplo do segundo; o primeiro é dado pelos elementos impares de uma P.A de primeiro termo igual a 1, a razão igual 3 e o ultimo termo menor ou igual a 100; o segundo termo é dado pelos elementos de uma P.A de primeiro termo igual a 1, a razão igual 4 e o ultimo termo menor ou igual a 50; um dos dois é diferente da unidade; os dois termos são diferentes.

Solução A função paresE, traduz literalmente o enunciado. As P.A.'s são realizadas diretamente pelo mecanismo para definição de P.A. embutido na linguagem. Os predicativos foram inseridos na posição em que suas variáveis já estão instanciadas. paresE1 = [ (x,y) | x <- [1,4..100], odd x, y <- [1,5..50], (x /= 1 || y /= 1), x /= y, mod x y == 0] Main> paresE1 [(7,1),(13,1),(19,1),(25,1),(25,5),(31,1),(37,1), (43,1),(49,1),(55,1),(55,5),(61,1),(67,1),(73,1), (79,1),(85,1), (85,5),(85,17),(91,1),(91,13),(97,1)]