Sei sulla pagina 1di 18

Programa c ao I

Licenciatura em Engenharia Inform atica 20112012

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

Vitor Beires Noguera Escola de Ci encia e Tencologia Universidade de Evora


1.1

Chamadas de fun c oes


PI VBN Chamada de 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

Deni co es e usos Fluxo de execu c ao

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

Fun c oes para a convers ao de tipos I


PI VBN Chamada de Fun c oes

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

>>> float(32) 32.0 >>> float(3.14159) 3.14159

1.3

Fun c oes para a convers ao de tipos II


PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao

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

>>> str(32) 32 >>> str(3.14159) 3.14159

1.4

Fun c oes matem aticas


PI VBN Chamada de Fun c oes

Deni c ao

Um m odulo e um cheiro que cont em um conjunto de fun c oes relacionadas


M odulo math
>>> import datetime >>> print datetime <module datetime from /usr/lib/python2.7/lib-dynload/datetime.so>

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

Acrescentando fun c oes I


PI VBN

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>

Fun c oes void e n ao void Porqu e utilizar fun c oes

1.7

Acrescentando fun c oes II


PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas

Exemplo: repeat lyrics

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

Deni c oes e usos


PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas Composi c ao

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

Par ametros e Argumentos I


PI VBN Chamada de Fun c oes

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

Valor fornecidos a uma fun c ao aquando da sua invoca c ao


Deni c ao (Par ametros)

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

def p r i n t t w i c e ( b r u c e ) : print bruce print bruce

1.11

Par ametros e Argumentos II


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

Exemplos

>>> print_twice(Spam) Spam Spam >>> print_twice(17) ... >>> print_twice(Spam *4) ... >>> michael = Eric, the half a bee. >>> print_twice(michael) ...

1.12

Vari aveis e par ametros s ao locais ` as fun c oes


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

Fun c ao cat twice

def c a t t w i c e ( p a r t 1 , p a r t 2 ) : cat = part1 + part2 p r i n t t w i c e ( cat )

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

Stack diagrams in frames

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

Fun c oes matem aticas Composi c ao

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 void e n ao void I


PI VBN Chamada de Fun c oes

Deni c ao (Fun c ao void)

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 que n ao retorna nada


Deni c ao (Fun c ao n ao void)

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

Uma fun c ao n ao e void se devolver algo.


Exemplos

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

Fun c oes void e n ao void II


PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas

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

Porqu e utilizar fun c oes


PI VBN Chamada de Fun c oes Fun c oes para a convers ao de tipos Fun c oes matem aticas

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

Potrebbero piacerti anche