09 Python

Propaganda
Python–Funções
IntroduçãoàProgramação
SI1
Conteúdo
•  Funções
– Conceitos
– Obje<vos
– Modularização
– Exemplos
– Exercícios
2
Funções
•  Oquesão?
•  Qualafunçãodeumafunção?
3
Imagine o código
4
Imagine o código
Repetição
De
Código!
5
Qual a utilidade da
função?
•  Evitarepe<çãodecódigo
•  DeixaocódigoMenor
•  Maislegível
•  Maismodularizado
6
Definindo Funções
Definição da função inicia
com “def”
Definindo Funções
Definição da função inicia
com “def”
Nome da função
Definindo Funções
Definição da função inicia
com “def”
Nome da função
Argumentos
Definindo Funções
Definição da função inicia
com “def”
Identação
Nome da função
Argumentos
Definindo Funções
Definição da função inicia
com “def”
Nome da função
Argumentos
Identação
“return” indica o
retorno da função
Programação
Estruturada
•  Usaoprincípiode“DividirparaConquistar”
•  Programassãodivididosemsub-programas
– Cadasub-programaéchamadopormeiode
umiden8ficadoreumalistadeparâmetrosde
entrada
•  Permiteespecificarcomoumproblemapodeser
resolvidonogeral
•  Omesmosub-programapodeserinvocadopara
resolverdiversosproblemasdemesmanatureza
mascomvaloresespecíficosdiferentes
12
Resultado de Funções
•  Umafunção<picamentecomputaumou
maisvalores
•  Paraindicarovaloraserdevolvidocomo
oresultadodafunção,usa-seocomando
return,quetemoformato
returnexpressão
– ondeaexpressãoéopcionaledesignao
valoraserretornado
13
Funções
•  returnàterminaafunçãoretornando
umvalor
•  OvalordefaultdereturnàNone
–  SimilaraNULL,void,ounilemoutraslinguagens;
•  Seafunçãochegaraofimsemouso
explícitodoreturn,entãotambémserá
retornadoovalorNone
14
Valor de retorno
•  Toda função em Python retorna algum valor;
•  Mesmo funções que não possuem a cláusula return.
•  Funções que não possuem return retornam None.
•  None é uma constante especial definida na linguagem;
•  Similar a NULL, void, ou nil em outras linguagens;
•  É lógicamente equivalente à False;
•  O interpretador não imprime None.
Exemplo 1
16
Exemplo 2
17
Exemplo 3
18
Exercício
•  Fazerumafunçãoquerecebetrês
argumentos,equeretorneoproduto
dessestrêsargumentos.
•  Fazerumafunçãoquerecebacomo
parametroumnumerointeiroeretorne
ofatorialdessenumero(nãousar
recursividade).
19
Abstração
•  Técnicadeprogramaçãoquenospermite
pensarnumproblemaemdiversosníveis
–  Q u a n d o p e n s a m o s n u m p r o b l e m a
m a c r o s c o p i c a m e n t e , n ã o e s t a m o s
preocupadoscomdetalhes
•  Dividirparaconquistar:
– Umproblemaédivididoemdiversossubproblemas
– Assoluçõesdossub-problemassão
combinadasnumasoluçãodoproblemamaior
20
Múltiplos argumentos
•  Podem receber um número arbitrário de ‘keywords’
Múltiplos argumentos
•  Podem receber inclusive listas e dicionários.
Funções
•  EmPython,sub-programastêmonomedefunções
•  Formatogeral:
defnome(arg,arg,...arg):
comando
...
comando
•  Onde:
–  nomeéonomedafunção
–  argssãoespecificaçõesdeargumentosdafunção
•  Umafunçãopodeter0,1oumaisargumentos
–  comandoscontêmasinstruçõesaserexecutadasquando
afunçãoéinvocada
23
Resultado de Funções
•  Aoencontrarocomandoreturn,a
funçãoterminaimediatamenteeo
controledoprogramavoltaaoponto
ondeafunçãofoichamada
•  Seumafunçãochegaaseufimsem
nenhumvalorderetornotersido
especificado,ovalorderetornoé None
24
Funções x
Procedimentos
•  Procedimento
25
Funções x
Procedimentos
•  Função
26
Argumentos de funções
•  Argumentos(ouparâmetros)são
variáveisquerecebemvaloresiniciaisna
chamadadafunção
•  Essasvariáveissãolocais
•  Seumafunçãodefinenargumentos,a
suachamadadeveincluirvalorespara
todoseles
– Exceção:argumentoscomvaloresdefault
27
Exemplo
>>> def f(x):
return x*x
>>> print(f(10))
100
>>> print(x)
....
NameError: name 'x' is not defined
>>> print(f())
....
TypeError: f() takes exactly 1 argument (0 given)‫‏‬
28
Argumentos default
•  Épossíveldarvaloresdefaultaargumentos
– Seochamadornãoespecificarvalorespara
essesargumentos,osdefaultssãousados
•  Formato:
defnomeFuncao (arg1=default1, ...,
argN=defaultN)‫‏‬
•  Seapenasalgunsargumentostêmdefault,
essesdevemserosúl4mos
29
Exemplo
>>> def f(nome,saudacao="Oi",pontuacao="!!"):
return saudacao+","+ nome + pontuacao
>>> print(f("Joao”))
Oi,Joao!!
>>> print(f("Joao","Parabens")‫)‏‬
Parabens,Joao!!
>>> print(f("Joao","Ah","...")‫)‏‬
Ah,Joao...
30
Argumentos
31
Observações
• 
• 
Funções podem ser u<lizadas da mesma maneira
queoutro<podedadoemPython
Elaspodemser:
• 
• 
• 
• 
Argumentosparaoutrasfunções;
Valoresderetornodeoutrasfunções;
Atribuídasparaoutrasvariáveis;
Partesdetuplas,listas,etc
32
Recursividade
•  Éumprincípiomuitopoderosopara
construçãodealgoritmos
•  Asoluçãodeumproblemaédivididoem
– Casossimples:
•  Sãoaquelesquepodemserresolvidos
trivialmente
– Casosgerais:
•  Sãoaquelesquepodemserresolvidos
compondosoluçõesdecasosmaissimples
33
Funções Recursivas
•  Algoritmosrecursivoondeasoluçãodos
casosgenéricosrequeremchamadasà
própriafunção
•  Exemplo:SequênciadeFibonacci
– Oprimeiroeosegundotermosão0e1,
respec<vamente
– Oi-ésimotermoéasomado(i-1)-ésimoe
o(i-2)-ésimotermo
34
Recursividade
Exemplo
35
Funções Recursivas
•  Exemplo:Fatorial
– Fatorial(1)=1
– Fatorial(i)=i*Fatorial(i–1)
36
Variáveis Locais e
Globais
•  Variáveisdefinidasemfunçõessãolocais,
istoé,sópodemserusadasnasfunçõesem
queforamdefinidas
•  Variáveisdefinidasforadefunçõessão
conhecidascomovariáveisglobais
– Emumafunçãopode-seleroconteúdode
umavariávelglobal
– Paraalterarumavariávelglobal,deve-se
declara-lanocorpodafunçãocomglobal 37
Exemplo
38
Escopo
•  Oescopodeumavariáveléoalcance
queelatem,deondeelapodeser
acessada.
•  VariáveisGlobais
•  VariáveisLocais
39
Escopo
40
Escopo
41
Escopo
42
Escopo
•  PalavrasReservadas
– global–permitequeavariávellocalassim
definidaaltereoconteúdodavariável
global.
– nonlocal–permitequeavariávellocal
tenhaescopoumnívelacima.
43
Escopo
44
Escopo
45
Escopo
46
Escopo
47
Escopo
48
Escopo
49
Escopo
50
Escopo
51
Escopo
52
Escopo
53
Módulos
•  Módulossãoarquivosempython(.py)
•  Usadosparasepararocódigo
dependendodesuafuncionalidade
•  Facilitaorganizaçãoereuso.
54
Import
•  1)importmodulo
–  Ex:
importrandom
random.randint(1,10)
•  2)frommoduloimportfuncao
–  Ex:
•  fromrandomimportrandint
•  randint(1,10)
•  3)frommoduloimport*
–  Ex:
•  fromrandomimport*
•  randint(1,10)
•  randfloat(1,10)
55
Exemplo
arq1.py
arq2.py
arq3.py
56
AlgumasFunçõesEspeciais!
Notação lambda
• 
• 
• 
• 
Funções podem ser definidas sem precisar de rótulos!
Isto é muito útil quando você quer passar uma pequena função
como argumento para outra função
Apenas funções simples (única expressão) podem ser definidas
nessa notação.
Notação lambda tem um histórico rico em linguagens de
programação desde I.A. passando por LISP, haskell…
Notação lambda
Notação lambda
Funções map, reduce e
filter
•  Função map(func, seq)
•  Função interna que aplica uma função func
a cada item de
um objeto sequência (seq) e retorna uma lista com os
resultados da chamada da função.
Funções map, reduce e
filter
•  Função reduce(func, seq)
•  Função interna que aplica a função sobre o valor corrente
retornado pela função (func) junto com o próximo item da
lista.
Funções map, reduce e
filter
•  Função filter(func, seq)
•  Função interna que aplica uma função filtro func a cada
item de um objeto sequência (seq) e retorna uma lista com
os resultados que satisfazem os critérios da função de teste
func.
Exercícios
Dado um conjunto de palavras [‘fita’, ‘Adenilton’, ‘armario’, ‘gaveta’, ‘Bruna’,
‘adentro’, ‘folga’, ‘impressora’]. Montar um filtro que remova todas as palavras
que comecem com ‘A’ ou ‘a’.
Calcule o quadrado dos números pares entre o intervalo de 0 a 10.
EXERCÍCIOS
65
Exercícios
1.FaçaumafunçãochamadasomaImposto.Afunçãopossuidois
parâmetros:
a)taxaImposto,queéaporcentagemdeimpostosobrevendas
b)custo,queéocustodeumitemantesdoimposto.
Afunçãoretornaovalordecustoalteradoparaincluiro
impostosobrevendas.
66
Exercícios (Arquivos
Separados)
2.Façaumafunçãoqueinformeaquan<dadede
dígitosdeumdeterminadonúmerointeiro
informadopelousuário.
3. Fazerumafunçãoquerecebeumargumento
inteiro.Afunçãoretornaovalordecaractere‘P’,
seseuargumentoforposi<vo,e‘N’,seseu
argumentoforzeroounega<vo.
4.Façaumafunçãoqueretorneoreversodeum
númerointeiroinformado.Porexemplo:127->
721.
67
Exercícios
5.Considereaseguintefórmulaparacalcularo
mdc(máximodivisorcomum)dedoisnúmeros
inteirosposi<vos:
–  mdc(a,b)=b,sebdividea(ouseja,a%b==0)
–  mdc(a,b)=mdc(b,a%b),casocontrário
EscrevaumafunçãoemPythonque,dadosdois
números,retorneomáximodivisorcomumentre
eles.Usarrecursividade.
68
6.Criarumprogramaqueleiaumalistade
pessoas,obtenhaosnomesdaspessoasque
comecemcom‘a’eimprimaamaiordelas(o
maiornome).
• Organizeasosmódulosdaseguinteforma.
–  MóduloPrincipal
–  Módulosóparamanipularlista
–  Módulosóparaimprimir.
• Aexecuçãodoalgoritmodeveráserfeitaatravés
dechamadadefunçõesdosmódulos.
Exercícios
7.Façaumprogramaqueconvertadanotaçãode24horaspara
anotaçãode12horas.Porexemplo,oprogramadeveconverter
14:25em2:25P.M;6:44em6:44A.M.Aentradaédadaemdois
inteiros.Oprogramadevelerváriasentradasechamaruma
funçãoparaconvertê-laseemseguidaimprimirasaída.
70
Exercícios
8.Façaumprogramaquepermitaaousuário
digitaroseunomeeemseguidaoprograma
chamaumafunçãoqueretornaonomedo
usuáriodetrásparafrenteu<lizandosomente
letrasmaiúsculas.Dica:lembre−sequeao
informaronome,ousuáriopodedigitarletras
maiúsculasouminúsculas.
71
Exercícios
9.Façaumprogramaquesoliciteadatade
nascimento(dd/mm/aaaa)dousuárioe
imprimaadatacomonomedomêspor
extenso.Oprogramadevechamarumafunção
queretornaomêsconver<do.Exemplo:
– Entrada-DatadeNascimento:29/10/1973
– Saída-Vocênasceuem29deOutubrode
1973.
72
Bibliografia
n 
Livro“ComopensarcomoumCien<stadeComputação
usandoPython”–Capítulos3e13
n  hyp://pensarpython.incubadora.fapesp.br/portal
n 
PythonTutorial
n  hyp://www.python.org/doc/current/tut/tut.html
DiveintoPython
n  hyp://www.diveintopython.org/
PythonBrasil
n  hyp://www.pythonbrasil.com.br/moin.cgi/
DocumentacaoPython#head5a7ba2746c5191e770383
0e02d0f5328346bcaac
n 
n 
73
Download