programação avançada funções
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 PresentationTRANSCRIPT
![Page 1: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/1.jpg)
Programação AvançadaFunções
Prof. Natalia Castro FernandesMestrado em Telecomunicações – UFF
2º semestre/2012
![Page 2: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/5.jpg)
Exemplos
![Page 6: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/7.jpg)
Passagem por valorVariável não é modificadaExemplos
Se o parâmetro existe, ele precisa ser passado
![Page 8: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/8.jpg)
Passagem por valor
![Page 9: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/10.jpg)
![Page 11: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/12.jpg)
![Page 13: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/13.jpg)
Contudo...
Por que não mudou?
![Page 14: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/19.jpg)
Variáveis locais e globaisExemplos
![Page 20: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/20.jpg)
Não faça isso!!!!
![Page 21: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/21.jpg)
Evite usar global!!!
Passe valores como argumentos da função!!!
![Page 22: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/23.jpg)
Lista de parâmetros variávelExemplo
resto =(3,)
resto =(3,4,5,6)
resto =()
![Page 24: Programação Avançada Funções](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062501/568166e3550346895ddb1be4/html5/thumbnails/25.jpg)
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)