1 / 40

Programação Avançada Funções

Programação Avançada Funções. Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012. Introdução. Programas são divididos em subprogramas ou funções Funções são chamadas por um identificador e uma lista de parâmetros Funções podem retornar valores.

katina
Download Presentation

Programação Avançada Funções

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação AvançadaFunções Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012

  2. Introdução • Programas são divididos em subprogramas ou funções • Funções são chamadas por um identificador e uma lista de parâmetros • Funções podem retornar valores

  3. Funções em Python • Formato geral: • def nome (arg, arg, ... arg): • comando • . . . • comando Argumentos da função (0 ou mais argumentos) Nome da função Comandos (0 ou mais)

  4. Retorno de funções • Uma função pode retornar um valor/estrutura • Valor calculado • Código de erro • Comando return • Uso: • return expressão • Quando a execução chega a um return, a função termina, voltando ao ponto aonde a função foi chamada • Se nenhum valor de retorno for especificado, a função retorna None expressão é opcional

  5. Exemplos

  6. Parâmetros de funções • Parâmetros ou entradas ou argumentos • Podem ser passados por valor ou referência • Valor = A função recebe uma cópia da variável e alterações do valor dentro da função não afetam as variáveis originais • Referência = A função recebe a referência da variável e alterações do valor dentro da função afetam as variáveis originais

  7. Passagem por valor • Variável não é modificada • Exemplos Se o parâmetro existe, ele precisa ser passado

  8. Passagem por valor

  9. Argumentos padrão • Determinam um valor padrão para uma determinada entrada • Nesse caso, a entrada não precisa ser especificada • Assume valor pré-determinado • Uso: • Formato: • def nome (arg1=default1, ..., argN=defaultN) • Se apenas alguns argumentos possuem padrões, então esses devem vir por último • Evita ambiguidade na definição dos argumentos

  10. Passagem por referência • Modifica o valor da variável original • Feito com o uso de listas e dicionários

  11. Contudo... Por que não mudou?

  12. Valor x Referência • Todos os parâmetros são passados por valor • A lista e o dicionário são referências • O que é passado para a função é o endereço do espaço de memória • Endereço não pode ser mudado, mas o espaço de memória apontado não está protegido e pode ser modificado

  13. Valor x Referência >>>Lista=[1,3] >>>Lista.append(2) Memória antes Memória depois 1,3 1,3,2 Lista – começa no endereço 2 Lista – começa no endereço 2 >>>Lista=[‘str’] Memória antes Memória depois 1,3,2 1,3,2 ‘str’ Lista – começa no endereço 7 Lista – começa no endereço 2

  14. Valor x Referência >>>Lista=[1,3] >>>funcao(Lista) Estou passando a informação lista que começa no endereço x

  15. Valor x Referência • Executando a função >>>Lista.append(2) Memória antes Memória depois Valor interno da lista Valor interno da lista 1,3 1,3,2 Lista – começa no endereço x Lista – começa no endereço x >>>Lista=[‘str’] Memória antes Memória depois Valor interno da lista Valor interno da lista 1,3,2 1,3,2 ‘str’ Lista – começa no endereço x Lista – começa no endereço x

  16. Variáveis locais e globais • Variáveis definidas dentro de funções são locais • Não tem valor fora da função • Variáveis definidas fora de funções são globais • Para uma função usar variável global, é preciso declarar a variável como global

  17. Variáveis locais e globais • Exemplos

  18. Não faça isso!!!!

  19. Evite usar global!!! Passe valores como argumentos da função!!!

  20. Documentação de funções • Strings definidas logo após o cabeçalho da função são vistas como documentação • Acessível pelo comando funcao.__doc__ • Exemplo:

  21. Lista de parâmetros variável • Uma lista de parâmetros de tamanho variável pode ser passada para a função • Uso do último argumento com * • Todos os valores passados a partir desse ponto são colocados em uma tupla • Uso: • def funcao(arg1, arg2, ..., *argn)

  22. Lista de parâmetros variável • Exemplo resto =(3,) resto =(3,4,5,6) resto =()

  23. Lista de parâmetros variável • Se o último argumento for precedido de ** • Todas as entradas a partir desse ponto são interpretadas como um dicionário

  24. Lista de parâmetros variável • Uma lista pode preencher parâmetros variáveis se vier precedida de * • Um dicionário pode preencher parâmetros variáveis se vier precedido de ** • Chaves de variáveis simples devem ser iguais ao nome da variável

  25. Lista de parâmetros variável

  26. Funções como argumentos • Nomes de funções podem ser usados como variáveis

  27. Funções definidas em funções • Funções definidas dentro de outras funções tem acesso a seu escopo e também ao escopo da função que a define • Escopo é aquilo que está definido dentro de uma área de código • Escopo global • Escopo de uma função • Escopo de uma classe

  28. Exemplos

  29. Uso do lambda • Funções sem nome que retornam uma expressão • Usadas para definir outras funções • Uso • lambda arg1, arg2,...,argn: expressão • Exemplo: >>> f= lambda x,y: x+y >>> f(1,2) 3 >>>

  30. Uso do filter • Filtra os elementos de uma sequência que atendem a uma certa função, retornando uma subsequência • A sequência pode ser lista, tupla ou string • Uso: • filter(função, sequência)

  31. Uso do filter • Exemplos Retorna os elementos da sequência cujo resultado da função é True.

  32. Uso do map • Aplica uma sequência de elementos a uma função, retornando os resultados da função em uma sequência • Uso: • map(função, sequência)

  33. Uso do map • Exemplos

  34. Uso do reduce • Aplica uma função repetidamente, utilizando os elementos de sequência • A função precisa receber dois elementos • O primeiro elemento pode ser especificado opcionalmente • Uso: • reduce(função, sequência,inicializador_opcional)

  35. Uso do reduce • Exemplo: >>> reduce(lambda a,b: a+b , range(5)) 10 • Isso é equivalente a f(a,b)=a+b • Então: f(f(f(1,2),3),4)=10 >>> reduce(lambda a,b: a+b, range(2,5),1) 10 • f(f(f(1,2),3),4)

  36. Recursividade • Forma de resolver problemas • Resolução de uma função implica em rechamar essa mesma função • Exemplo: • Fibonacci def Fibonacci(i): if i==0: return 0 if i==1: return 1 return Fibonacci(i-1)+Fibonacci(i-2) i-ésimo elemento da sequência

  37. Exercício • Calcule a função fatorial recursivamente • Calcule o e-nésimo elemento de uma PA recursivamente • Guarde, em uma lista, os n+1 elementos de uma PA recursivamente • Faça um programa que calcula a área de uma forma geométrica. Os parâmetros para calcular a área devem ser passados para a função como parâmetros, assim como o nome da forma. O seu programa deve ser capaz de responder a ‘quadrado’, ‘retângulo’, ‘círculo’ e ‘triângulo’. Ex: • Area(‘triangulo’,base,altura) • Area(‘circulo’,raio) • Calcule os 10 primeiros elementos da série de Fibonacci usando o map • Calcule a função fatorial usando o reduce

More Related