Buscar

Paradigma programação - Programação funcional cálculo lambda

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Programação funcional: cálculo lambda
1. Funções lambda, além de anônimas, reduzem expressões de forma significativa, fazendo com que o maior número de instruções possa ser expresso na mesma linha. Apesar de não ser 
considerada uma linguagem funcional, o Python vem implementando diversas funcionalidades, entre elas as funções lambda, de modo a permitir a otimização de seu código.
Dada a seguinte função lambda na linguagem Python:
lista = [2,3,5,7]
nova_lista = map(lambda x:x*2, lista)
for i in nova_lista:
 print i
O que deve ser mostrado na tela?
R: B. 4
6
10
14
A função Map tem como objetivo mapear os elementos e retornar os resultados de acordo com o que o função instruir. Neste caso, o solicitado era a varredura do array e a multiplicação 
de cada elemento por 2.
2. As funções internas ou embutidas, como filter, permitem que os dados sejam filtrados de uma lista a partir de uma instrução computacional. Essa função evita a necessidade de mudança 
de estado das variáveis, que tende a tornar expressões impuras.
Observe a função e diga qual mecanismo lambda está expresso na sentença:
lista1 = range(1, 20)
lista2 = filter (lambda x: x % 4 == 0, lista1)
for i in lista2:
 print i 
A saída é a seguinte:
4
8
12
16
R: A. Filter.
A função filter, como o próprio nome sugere, filtra os elementos e retorna valores que, quando comparados à uma instrução computacional, são verdadeiros. Neste caso, foi dado um
intervalo de 1 a 20 em que a função solicitava que cada item fosse verificado e que, se o resto da divisão por 4 fosse zero, o valor deveria ser mostrado na tela. Map, zip e reduce são outras 
funções que também podem ser utilizadas em programação funcional, com funcionalidades diferentes. A recursividade é justamente o que se evita ao utilizar funções como a filter, pois 
esta geralmente realiza a mudança de valores de uma variável, o que a torna impura e não correspondente ao objetivo da programação funcional.
3. As funções Map, Filter e outras nos permitem manipular listas de forma limpa e prática, sem que isso cause efeitos colaterais no restante do código. Sabendo disso, analise a seguinte 
situação:
Laura está modificando o sistema financeiro da universidade em que trabalha. O gerente financeiro solicitou que fossem calculados diariamente os valores recebidos nas negociações com 
os alunos. Laura sabe que todos os valores inseridos no sistema são armazenados em um array. Qual função lambda Laura poderá utilizar para somar todos os valores inseridos no 
sistema e, ao final do dia, entregar para seu gerente o montante total?
R: D. Reduce.
Laura deverá utilizar a função Reduce, que retorna argumentos de forma cumulativa e coloca-os em uma nova lista. A função Map varre listas e realiza a ação dentro da função com cada 
item. A função Filter também mapeia listas e realiza um filtro que satisfaça a condição atribuindo True a ela. A função Soma está dentro do escopo da orientação a objetos e precisaria de 
ajustes como a incrementação, que não fazem parte da programação funcional. Booleana é a operação que retorna um valor verdadeiro ou falso. Esta verificação é feita na execução das 
funções Map, Filter e Reduce como parâmetro para mostrar os elementos na tela.
4. De modo geral, o uso de funções lambda entrega ao desenvolvedor a possibilidade de um código mais limpo, conciso e imutável. São as chamadas funções puras. Para tanto, é preciso 
compreender a notação nativa da linguagem e a notação lambda, para só então entender a transformação realizada nas linhas do código. Sabendo disso, analise a situação:
Dada a função soma em Python, escolha a alternativa que representa a conversão utilizando lambda para reescrever o código:
def soma (a,b,c):
return a+b+c
>>> x = soma
>>> x(10,20,30)
>>>60
5. De forma muito clara e amigável, a função Filter realiza a verificação de uma lista e a extração dos elementos solicitados pela expressão ou função diretamente ligada a ela. Como 
resultado, ela traz uma nova lista contendo os elementos extraídos após a execução da função.
Analise a função lambda que recebe um array com as alturas de todos os candidatos de uma agência de propaganda. Verifique a sintaxe e marque a alternativa que informa o que a função
irá retornar na tela:
alturaMetros=[1.65,1.80,1.72,1.74,1.68,1.91]
def main( ):
 print filter(lambda x: x > 1.70 > 1.90 ,alturaMetros) 
 return 0
if name == ' main ':
 main( )
R: E. [1.80, 1.72, 1.74]
A função lambda traz uma variável contendo alturas entre 1.65 e 1.91 e pede que, por meio da função Filter, sejam retornados os valores do array maiores que 1.70 e menores que 1.90. 
Com isso, os valores mostrados na tela serão: [1.80, 1.72, 1.74].
desafio
 Padrão de resposta esperado
Uma alternativa para resolver a questão seria utilizar a função filter, que varreria o array e extrairia apenas os valores solicitados pelo usuário:
def saldo_caixa (saldos): return list(filter(lambda saldo: saldo < 0, saldos))
saldo_caixa ([1.000, -700, 690, -158, 870, 1.456, -3000, 480, 3.450])
>>> [-700, -158, -3.000]

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina