Programação Avançada Funções

Preview:

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

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)

Recommended