Post on 24-Feb-2016
description
Programação AvançadaFunções
Prof. Natalia Castro FernandesMestrado em Telecomunicações – UFF
2º semestre/2012
IntroduçãoProgramas são divididos em subprogramas
ou funçõesFunções são chamadas por um identificador e
uma lista de parâmetrosFunções podem retornar valores
Funções em PythonFormato geral:
def nome (arg, arg, ... arg): comando . . . comando
Nome da função
Argumentos da função (0 ou mais argumentos)
Comandos (0 ou mais)
Retorno de funçõesUma função pode retornar um valor/estrutura
Valor calculadoCódigo de erro
Comando returnUso:
return expressãoQuando 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
Exemplos
Parâmetros de funçõesParâ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
Passagem por valorVariável não é modificadaExemplos
Se o parâmetro existe, ele precisa ser passado
Passagem por valor
Argumentos padrãoDeterminam um valor padrão para uma
determinada entradaNesse 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
Passagem por referênciaModifica o valor da variável originalFeito com o uso de listas e dicionários
Contudo...
Por que não mudou?
Valor x ReferênciaTodos 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
Valor x Referência>>>Lista=[1,3]>>>Lista.append(2)
Memória antes Memória depois
1,3 1,3,2
>>>Lista=[‘str’]
Memória antes Memória depois
1,3,2
1,3,2
‘str’
Lista – começa no endereço 2
Lista – começa no endereço 2
Lista – começa no endereço 2
Lista – começa no endereço 7
Valor x Referência
>>>Lista=[1,3]>>>funcao(Lista) Estou passando a informação
lista que começa no endereço x
Valor x ReferênciaExecutando a função
Memória antes Memória depois
1,3 1,3,2
>>>Lista=[‘str’]Memória antes Memória depois
1,3,2
1,3,2
‘str’
Lista – começa no endereço x
Lista – começa no endereço x
Lista – começa no endereço x
Valor interno da lista
>>>Lista.append(2)
Valor interno da lista
Valor interno da lista Valor interno da lista
Lista – começa no endereço x
Variáveis locais e globaisVariáveis definidas dentro de funções são
locaisNã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
Variáveis locais e globaisExemplos
Não faça isso!!!!
Evite usar global!!!
Passe valores como argumentos da função!!!
Lista de parâmetros variávelUma lista de parâmetros de tamanho variável
pode ser passada para a funçãoUso do último argumento com *
Todos os valores passados a partir desse ponto são colocados em uma tupla
Uso: def funcao(arg1, arg2, ..., *argn)
Lista de parâmetros variávelExemplo
resto =(3,)
resto =(3,4,5,6)
resto =()
RecursividadeForma 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 0if i==1: return 1return Fibonacci(i-1)+Fibonacci(i-2)
i-ésimo elemento da sequência
Exercício Calcule a função fatorial recursivamenteCalcule o e-nésimo elemento de uma PA recursivamenteGuarde, 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)