Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
Deni c ao
Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes
Uma fun c ao e uma sequ encia de instru c oes com nome que realizam uma computa c ao.
Exemplos de fun c oes
J a zemos chamadas a fun c oes. Aonde? Exemplo >>> type(32) <type int> O nome da fun c ao e type e o argumento e 32 E usual dizer que uma fun c ao recebe um argumento e devolve um resultado.
Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.2
int
>>> int(32) 32 >>> int(Hello) ValueError: invalid literal for int(): Hello >>> int(3.99999) 3 >>> int(-2.3) -2
oat
Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.3
str
Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.4
Deni c ao
Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais
Dot notation
Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
>>> degrees = 45 >>> radians = degrees / 360.0 * 2 * math.pi >>> math.sin(radians) 0.707106781187
1.5
Composi c ao
PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao
Exemplos
Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
x = math.sin(degrees / 360.0 * 2 * math.pi) x = math.exp(math.log(x+1)) N ao esquecer que o lado esquerdo de uma instru c ao de atribui c ao tem de ser o nome de uma vari avel.
1.6
Deni c ao
Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes
A deni c ao de uma fun c ao especica o nome da nova fun c ao assim como a sequ encia de instru c oes que deve ser executadas quando a fun c ao e invocada
Exemplo: print lyrics
Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams
def print_lyrics(): print "Im a lumberjack, and Im okay." print "I sleep all night and I work all day." Header e body? Identa c ao e aspas? >>> print print_lyrics <function print_lyrics at 0xb7e99e9c> >>> print type(print_lyrics) <type function>
1.7
Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
def repeat_lyrics(): print_lyrics() print_lyrics() O que acontece se zermos >>> repeat lyrics() ?
1.8
As deni c oes de fun c oes s ao semelhantes ` as que j a conhecemos, somente o efeito e que e diferente: criamos fun co es! As instru c oes dentro de uma fun c ao s o s ao executadas quando a fun c ao e invocada. Uma fun c ao tem de ser denida antes de ser invocada.
Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.9
Fluxo de execu c ao
PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
A execu c ao come ca na primeira instru c ao do programa As instru c oes s ao executadas uma de cada vez, por ordem, de cima para baixo. A invoca c ao de uma fun c ao e como que um desvio no uxo de execu c ao. Em vez de seguir para a pr oxima instru c ao, o uxo
1 2 3
salta para a body da fun c ao executa as instru co es existentes no body regressa, retomando o ponto onde tinha cado
N ao esquecer que no body de uma fun c ao podemos invocar outra . . . Quando lemos um programa, em vez de ler de cima para baixo podemos (e devemos) fazer estes saltos
1.10
Deni c ao (Argumentos)
Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes
Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais
O nome utilizado dentro de uma fun c ao para se referir ao valor passado como argumentos
Fun c ao print twice
Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.11
Exemplos
>>> print_twice(Spam) Spam Spam >>> print_twice(17) ... >>> print_twice(Spam *4) ... >>> michael = Eric, the half a bee. >>> print_twice(michael) ...
1.12
Exemplos
Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
>>> line1 = Bing tiddle >>> line2 = tiddle bang. >>> cat_twice(line1, line2) Bing tiddle tiddle bang. Bing tiddle tiddle bang. >>> print cat NameError: name cat is not defined
1.13
Stack Diagrams I
PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
O que acontece se tentarmos aceder ` a vari avel cat dentro da fun c ao print twice?
1.14
Stack Diagrams II
PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos
Traceback
Traceback (innermost last): File "test.py", line 13, in __main__ cat_twice(line1, line2) File "test.py", line 5, in cat_twice print_twice(cat) File "test.py", line 9, in print_twice print cat NameError: name cat is not defined
Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.15
Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao Acrescentado fun c oes
Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
x = math.cos(radians) golden = (math.sqrt(5) + 1) / 2 Qual e a diferen ca de de invocarmos math.cos(radians) num script ou em modo interactivo?
1.16
Mais exemplos
Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
>>> result = print_twice(Bing) Bing Bing >>> print result None >>> print type(None) <type NoneType>
1.17
Ao darmos nome a um grupo de instru c oes, tornamos o programa mais leg vel e mais f acil de fazer debugging. As fun c oes, ao eliminar c odigo repetitivo, podem tornar um programa mais pequeno. Dividir um programa extenso em fun c oes permite fazer o debugging de cada uma das partes e somente depois junt a-las. Fun co es bem concebidas s ao por vezes muito u teis para muitos programas.
Composi c ao Acrescentado fun c oes Deni co es e usos Fluxo de execu c ao Par ametros e Argumentos Vari aveis e par ametros s ao locais Stack Diagrams Fun c oes void e n ao void Porqu e utilizar fun c oes
1.18