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

Programação Avançada Funções

  • Upload
    santa

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Programação Avançada Funções

Programação AvançadaFunções

Prof. Natalia Castro FernandesMestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Programação Avançada Funções

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

Page 3: Programação Avançada Funções

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)

Page 4: Programação Avançada Funções

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

Page 5: Programação Avançada Funções

Exemplos

Page 6: Programação Avançada Funções

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

Page 7: Programação Avançada Funções

Passagem por valorVariável não é modificadaExemplos

Se o parâmetro existe, ele precisa ser passado

Page 8: Programação Avançada Funções

Passagem por valor

Page 9: Programação Avançada Funções

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

Page 10: Programação Avançada Funções
Page 11: Programação Avançada Funções

Passagem por referênciaModifica o valor da variável originalFeito com o uso de listas e dicionários

Page 12: Programação Avançada Funções
Page 13: Programação Avançada Funções

Contudo...

Por que não mudou?

Page 14: Programação Avançada Funções

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

Page 15: Programação Avançada Funções

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

Page 16: Programação Avançada Funções

Valor x Referência

>>>Lista=[1,3]>>>funcao(Lista) Estou passando a informação

lista que começa no endereço x

Page 17: Programação Avançada Funções

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

Page 18: Programação Avançada Funções

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

Page 19: Programação Avançada Funções

Variáveis locais e globaisExemplos

Page 20: Programação Avançada Funções

Não faça isso!!!!

Page 21: Programação Avançada Funções

Evite usar global!!!

Passe valores como argumentos da função!!!

Page 22: Programação Avançada Funções

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)

Page 23: Programação Avançada Funções

Lista de parâmetros variávelExemplo

resto =(3,)

resto =(3,4,5,6)

resto =()

Page 24: Programação Avançada Funções

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

Page 25: Programação Avançada Funções

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)