SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
!! ""
##$$ %% ## && $$
' ( ) * + ), - !+
UNIVERSIDADE ESTADUAL PAULISTA
“JÚLIO DE MESQUITA FILHO”
2
!"#$
% $&'"#$
! ()$ * ' $ ()$
! " # $%& '& (( %& )* +! "
'& (( * , ,+ " $%&
'& ((--- %& .* *+
/ * 0
* 1 2 "
30 ! 4 .
5 * *) 0 !
*" $%& 2 30 !
1 5 6 & '& ((--- *+
6 & 1 !
7
!&" 1 1 8
1 30
4 ! 7 ! 8 " . 92
0 *
Josué Labaki & Emanuel R. Woiski
# $%&
/ & :
;< 2$ =& 2
labaki@feis.unesp.br
woiski@dem.feis.unesp.br
3
+ &,-
! ()$ , !&$! ./ $ 0
>? * 9 @
A$ & B
C2 1 D
@ E
B F G H
! 12! 3$ ./ $ 24 ! 5
>2 1 I
A * >@
C >I
@ * AA
! ! "! 67
! 8 $ 9' ! 12! :;
! 8 1$ < "= $. $4 0>
! 8 ? -@-,$ 0>
8 4 !@AAA 0:
4
! ()$ , !&$! ./ $
>A !. 4' >
B
J * 30 ! $%&
*)
* * ) 3
37 ! G
5" ! 30 *) ' +
1 ! * $%& *
' !! / !
K * L 0 "
*) 8 !
1 $%&
! *
) " !
30 " ! K" ! 1 8 8
* " * "
" , ' +
M" " *) $%&
30 *)
1
Alusão à célebre frase “Habemus Papa!”, proclamada por um cardeal na basílica de São Pedro (Vaticano)
sempre que um novo papa acaba de ser eleito.
5
6A ,4 ,! !,<!3' ! &$& )$ A
$ 0 1 ! * ! !
2 30 *) 30
' 30 +! .
. " ) !
30
$ "
&
37 * * ! * 1
< 1 0 " ; 30 )
1 !
30 "
M" 30 *) * <0 1 37
! *)
" ! *)
N * ! & # !
! ! & <0
*) A
*) > K & N *
*) C < *)
8 3
6
< 30 ! "
O < 30
*) ! 0 ! '
1 0 + *)
:A C' &! !,<!3 ? 4 2$ &$4' &$ !2A
/ & 3 30
K 2
Procedimento 1: comprar uma banana;
Procedimento 2: aguardar meio-dia;
Procedimento 3: servir a banana.
2 " 0 ! * .
< ! 0 " K !)"
0 * ! 7 0 * !
) 0 . !
! *) !
7
Mensagem: alimente-se!
/ K! *) ! & ' & *8 !
8 ! " 0 + # ' 3
! 0 +! ) !
) ' K *) + !
K 1 30 !)" 0
* 30 *)
8
! K somar os lados da figura
= & 4
8 ! 1 !
0 < &
& Aπ *)
*) " # Calcule seu perímetro
" 8
! K K *
0A - ,! !,<!3 $-D&,C$A
J 0 !
! K
a = sqrt(b)
= ! 30 $
" P 1 ! 30
8
! 30 *) !
& 2 " " K ) $%& G
a = b.sqrt()
" K * $
*) 1 0 GJ ) &
>>> a='araraquara'
>>> a.split('a')
['', 'r', 'r', 'qu', 'r', '']
< ! !
30 *) 9 1 ! *)
! *) ' ) 30 + ! *
! 'a'
['', 'r', 'r', 'qu', 'r', '']
30
$%& ! 30 ! & * *)
! *)
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
'__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__',
'__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__str__', 'capitalize', 'center', 'count', 'decode', 'encode',
'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha',
'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust',
'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
9
; 30 & *)
& * *) ! * DA )
& ! * ) . K "
& ) 1 =/5 *
37 K *
9
7A 9'! ! ! ,<!3 E' F !G, !2H
! 30 *)
" & K
8 *) & *
N ' 8 +
#
/ 8 )" * *) 18 2
0 30 *) !* ".
. 8 0 L 0 "
$ 30 . & !
! " # < %% "
K
& a='araraquara' b=[1,2,3]' ( ")
b.reverse() * # " * $ !
+ a.upper() # "
, '- . $ / %
# * # !
/
10
! 12! 3 $ ./ $ 2 4 !
*) 0 ! 8
* ! 8 !
)" ! *) 0 8 1 30
! 37 *) 8
& ' 0 +! 0 30
*) #
*) ! * ! K . 0
0 Q ' +
30 :
! $%& ! 0 !
! 37 ! !
& " ! * *) ! J ) "
$%& 30 *) 0
>A , !? A
30 $%& " class
! 0 K *
pass
>>> class Cachorros:
pass
$ !* " & 9J )
11
>>> Cachorros
<class __main__.Cachorros at 0x00B04360>
; & 30 * ! *
. 1 )" *
>>> dir(Cachorros)
['__doc__', '__module__']
J )" * *) : 0
0 0 1 30 !
: $ * ! 1 " K :
2 * 0 !' < . &
Cachorros()! 0 R : S
' + <0
>>> Cachorros ()
<__main__.Cachorros instance at 0x00CF3D50>
>>> id(Cachorros()) == id(Cachorros())
False
30 * 3! '& 1 +
3 ". *) ; 30 *
12
37 & * K
1 0 2 * 0 ! : 2 *
! : 0 N !
! * ) &, , ! ! 0 &" . $%& !
K : ! * 8 :
* 4 !! 30 J ) 1
* 30 ! : &
d = Cachorros ()
/ 0 *) !
K 37 ! & " !
1 L " !
! " K $%& / !
1 ! 1
>>> Dogs = Cachorros
>>> Dogs
<class __main__.Cachorros at 0x00B04360> # O mesmo id de Cachorros!
>>> Dogs.__name__
'Cachorros'
* ! 1 ! *) *
! 37 0 *)
* / 30
0 ! . ! !*
13
>>> def nome_do_objeto(c): Você sabe dizer qual é o tipo de c?
try:
print 'Nome do objeto: %s. Id: %d.' % (c.__name__, id(c))
except:
print """O objeto " %s " não tem atributo __name__
mas seu id é %d.""" % (str(c), id(c))
>>> ndo=nome_do_objeto
>>> ndo(Dogs)
Nome do objeto: Cachorros. Id: 10756032.
>>> ndo('abacaxi')
O objeto " abacaxi " não tem atributo __name__
mas seu id é 10738400.
$ * '0 : !
5 + 30 $%& ! ! 37 !
! ! 0 0 * *) *
0 1 ! 0
) 8 30 0 & *) *
TT TT 2 1 F 0
8 ! * +
6 , #
# # ") ndo(ndo)'(
/
'
& ) " $
4 /
$ ./
14
6A ,.' $ 4F $&$ A
* 0 *) N ! )!
: = & &
8 7 :
0 * J ) 1
>>> class Cachorros:
cobertura='pelos'
alimento='carne'
patas=4
habitat='domestico'
nome='Rex'
>>> class Galinhas:
cobertura='penas'
alimento='graos'
patas=2
habitat='domestico'
bico='pequeno'
>>> dir(Cachorros)
['__doc__', '__module__', 'alimento', 'cobertura', 'habitat', 'nome', 'patas']
>>> dir(Galinhas)
15
['__doc__', '__module__', 'alimento', 'bico', 'cobertura', 'habitat', 'patas']
! 1 8 *
! ! 1 *
8 * !
J : 3 *
: 8 ! *
!
>>> Snoopy=Cachorros()
>>> Lala=Galinhas()
>>> Snoopy.alimento
'carne'
>>> Lala.alimento
'graos'
>>> Lala.bico
'pequeno'
>>> Snoopy.bico
Traceback (most recent call last):
File "<pyshell#28>", line 1, in -toplevel- Snoopy.bico
AttributeError: Cachorros instance has no attribute 'bico'
& ! * & ! 0 * *
*
16
>>> print '%s late sem parar!' % Snoopy.nome
Rex late sem parar!
; 9 0 2 %G P '
" + * 8 N : 2 %. * 9 :! R6 1S9
$ U V * 1 !
& 30 !
>>> Cachorros.nome
'Rex'
0 37 ! ! '* +
: ! 0 37
0 1 : < 1 1 !1
* 8 ! ;
-
>>> class Circulos:
raio = 25.4
def calcula_Area(self):
self.area = 3.14*(self.raio**2)
def calcula_Volume(self,altura):
self.volume = 3.14*(self.raio**2)*altura
17
! * 8 : >
= ! * 1 $ !
; * >! 0 : " * !
>>> C1=Circulos()
>>> C1.raio
25.399999999999999
>>> C1.area
Traceback (most recent call last):
File "<pyshell#44>", line 1, in -toplevel- C1.area
AttributeError: Circulos instance has no attribute 'area'
>>> dir(C1)
['__doc__', '__module__', 'calcula_Area', 'calcula_Volume', 'raio']
>>> C1.calcula_Area()
>>> C1.area
2025.8024
>>> dir(C1)
['__doc__', '__module__', 'area', 'calcula_Area', 'calcula_Volume', 'raio']
8 R "
T GGGS '
37 ! " * +
" 0
& G, ,"#$
18
K < 5 0
F ! " " 8
: & >! 13' ; *! "
K C1.area = 3.14*(C1.raio**2) ! * >!
" 1 * 1> 0 1 J *
>>> C1.calcula_Area() == Circulos.calcula_Area(C1)
True
= 13' ; *! 8
1 ' ; *13!
0 " !
0 F
$%& "
?" 1 ! - ! "
* * 2 !
! "
; K : 1 8
>>> C1 = Circulos()
>>> C1.calcula_Volume()
Traceback (most recent call last):
File "<pyshell#19>", line 1, in -toplevel- C1.calcula_Volume()
TypeError: calcula_Volume() takes exactly 2 arguments (1 given)
19
* *
1 -
1
R S " 8 9
>>> C1.Calcula_Volume(12.)
>>> C1.volume
24309.628799999999
4 !& G " 8
AB@9 " 8 : 8
G "! & 1 * * ! K
8 ' : R2 %S+ *
!R6 1S 8 &
G; K !TT TT
:A 4F $&$ -,!2 A
< 30
& ' 3 & K 0 +
= > !
* : $4$4 $ 4 E' 2! G$ -,!&!
: ! ! 8
)" 30 6 & !
8 & !
20
>>> class Cachorros:
cobertura='pelos'
alimento='carne'
patas=4
habitat='domestico'
def __init__(self, nome): # Jamais nos esqueceremos do self!
self.nome= nome
>>> d1 = Cachorros('Dog1')
>>> d1.nome
'Dog1'
! 0
1 30 : <
!
0 ' " +
$ !
*) R S! &
! & ! ! 4 $ ! 30
" '1!%+ " 4
>W1>W $ 30 !
< )" 30 +
W≤ 1≤ > ; 8 " "
21
>>> from random import random
>>> class Sprites:
def __init__(self, nome,
tamanho = 'grande',
cor = 'amarelo',
arestas = 5): # self é sempre o primeiro argumento!
self.nome = nome
self.tamanho = tamanho
self.cor = cor
self.arestas = arestas
def update_position(self):
self.position = random()*10,random()*10 # posições x e y
print '%s está agora em %s.' %(self.nome,self.position)
< 30 : >!
" ! )! 0 1 ! B
: A )
! )" * K
37
>>> s1 = Sprites('Star1', 'pequeno', 'vermelho')
>>> s1.nome, s1.tamanho, s1.cor, s1.arestas
('Star1', 'pequeno', 'vermelho', 5)
>>> s2 = Sprites('Star2', arestas=6, cor='azul')
>>> s2.nome, s2.tamanho, s2.cor, s2.arestas
('Star2', 'grande', 'azul', 6)
22
>>> s1.update_position(), s2.update_position()
Star1 está agora em (0.43251725889582815, 9.5024820736664353).
Star2 está agora em (0.50694145748064412, 1.6160935722866276).
(None, None)
>>> s1.position
(0.43251725889582815, 9.5024820736664353)
>>> s2.position
(0.50694145748064412, 1.6160935722866276)
J 30 *
: ! " 1 K . * $ : !
: 3 ? 8
& * ! 0
*
; (None, None)
# ") .
@5 ;'- . + $
$ $ ) /
0A ! ,.' $ -,!, A
! *
* ! 37 !
! $%& *
! ) 4 * .
23
& ! :
N : J )
>>> class Fausto:
"""Fausto é um romance de Goethe
que Beethoven transformou em Ópera."""
def review(self):
"""
Este método responde com a avaliação dos críticos
"""
print 'Um romance excepcional'
>>> print Fausto.__doc__
Fausto é um romance de Goethe
que Beethoven transformou em Ópera.
>>> print Fausto().__doc__
Fausto é um romance de Goethe
que Beethoven transformou em Ópera.
>>> print Fausto().review.__doc__
Este método responde com a avaliação dos críticos
24
30 ! )"&
30 ! 30 *
4 30 0 1* K !
) $ & 1* 30
& ! * "
! R S
>>> help(Fausto)
Help on class Fausto in module __main__:
class Fausto
| Fausto é um romance de Goethe
| que Beethoven transformou em Ópera.
|
| Methods defined here:
|
| review(self)
| Este método responde com a avaliação dos críticos
A 4 B$ " Fausto.__doc__ Fausto().__doc__/
P ! *
2 =/5 !
3' ' 3 :
+! " 9 : )! " )
9 : 1 6
* * =/5
25
>>> class So_Acredito_Vendo: pass
>>> sav = So_Acredito_Vendo()
>>> sav.__module__
'__main__'
>>> from math import sin
>>> sin.__module__
'math'
! ! "!
* & &
& & 8 ! *
$%& & * J ) 1
3! . ! 8 : &
8 K / ! 3 . 0 !
4 ! 3 * 4 8G
26
= ) 0 *
20 * !
! ! N ! !
<0 & 3! K &
* ! * 9
< 1 ! &
* K $ ! K.
1 # ' R S! R S! R* S+
@ 6 '$ K! @ 6 * ' R & S!
R S+ 1 # '
$%& ! K 0
' & 9+! 1
* K &
*
class Condutores_Térmicos:
atributos1....
class Materiais_Ferrosos(Condutores_Térmicos):
atributos2.....
class Materiais_Dúcteis(Materiais_Ferrosos):
atributos3.....
! * ? )
@ 6 ! * 3 &
/ ! @ CD & 3
? @ 6
0 9 ; ! &
* 0 & 6 !2 !& 6
O * & * F G
27
>>> class Pai:
Nome = 'Carlos'
Sobrenome = 'Oliveira'
Residência = 'Ilha Solteira'
>>> class Filha(Pai):
Nome = 'Luciana'
Olhos = 'castanhos'
>>> class Neta(Filha):
Nome = 'Maria'
>>> Pai.Nome, Filha.Nome, Neta.Nome
('Carlos', 'Luciana', 'Maria')
>>> Pai.Residência, Filha.Residência, Neta.Residência
('Ilha Solteira', 'Ilha Solteira', 'Ilha Solteira')
>>> Pai.Olhos, Filha.Olhos, Neta.Olhos
('azuis', 'castanhos', 'castanhos')
J ) * 2 6 2 L A .
& * 6 2 L ! K& *
6
X 8 ;" &
1 * !! " )
0 * ! ;"' 4
K 0 ;" & J )
* 2 & * ! K
28
* 6 $ !2 '
2 & *
>>> issubclass(Neta,Pai)
True
>>> Neta.__bases__
(<class __main__.Filha at 0x00A48030>,)
! & "
.* 0
>>> class Atlantico:
carater1 = 'É um oceano '
>>> class Indico:
carater2 = 'perigoso, '
>>> class Pacifico(Indico):
carater3 = 'cheio de tsunamis '
>>> class Artico(Atlantico, Indico, Pacifico):
carater4 = 'e muito gelado!'
>>> print Artico.carater1 + Artico.carater2 + Artico.carater3 +
Artico.carater4
29
É um oceano perigoso, cheio de tsunamis e muito gelado!
>>> Indico.__bases__
()
>>> Pacifico.__bases__
(<class __main__.Indico at 0x00A48060>,)
>>> Artico.__bases__
(<class __main__.Atlantico at 0x00A481E0>, <class __main__.Indico at
0x00A48060>, <class __main__.Pacifico at 0x00A48180>)
'J * * Y $%& *
& * 1 G= &
& +
* ! * & #
!
< ! ; & !
: ; * K .
1 ! " 1 1
K $%& *) ! #
!
J * Z!. [ *)
*)
Z ! *
30 $ *
: . !
[ (!
J :
' 8 K 1 !
R& " S+
30
>>> class Op_Basicas:
def __init__(self, entrada):
self.valor = entrada
def __add__(self, other): # método especial!
return self.valor + other.valor
def __mul__(self, other): # método espeial!
return self.valor * other.valor
>>> a = Op_Basicas(56)
>>> b = Op_Basicas(-23)
>>> a + b
33
>>> a * b
-1288
4 & *
PK !
! ! ! * : !
* "' 2 * 0 !
30
>>> str1 = Op_Basicas('56')
>>> str2 = Op_basicas('-23')
>>> str1 + str2
'56-23'
>>> str1 * str2
Traceback (most recent call last):
31
File "<pyshell#21>", line 1, in ?
str1 * str2
File "<pyshell#15>", line 7, in __mul__
return self.valor * other.valor
TypeError: can't multiply sequence to non-int
9<0 30 30
)" [
>>> str2 = Op_Basicas(34)
>>> str1 * str2
'56565656565656565656565656565656565656565656565656565656565656565656'
" $%& 2 *) N
! "! 2 0
! ) 0 ! )
0 ! 1 30 " / !
* 1 30 K30 4
9J " & * K +
? 3 2 ) ;
* 4 < ! 0 * *
3 3 ( ? ! 3 ?
:
32
>>> class Op_Avancadas(Op_Basicas):
def __init__(self, entrada):
self.valor = entrada
def __div__(self, other): # método especial!
return float(self.valor) / other.valor
& " 4 "
$ # " 5 / ( / E4
) " & /
>>> c = Op_Avancadas(4)
>>> c / a
0.071428571428571425
>>> c / b
-0.17391304347826086
>>> c + a
60
>>> c * b
-92
J ) & 3! *
30 * 0 8 : ;
33
! & .
*
P ! !
1 .* * 1 & !
>>> class Op_Extras(Op_Avancadas):
def quadrado(self):
return self.valor * self.valor
>>> d = Op_Extras(6)
>>> d.quadrado()
36
>>> d + a
62
>>> c + d
10
>>> d / b
-0.2608695652173913
$ # & 3! : . ! !)"
TT !TT ! TT !
"! 1 & !
F+ 1 30 ' !
D+
20 & $%& *) K
4 $ 0 * " ,
34
# 0 $ * *) !
30 * **) !
>>> callable(str1) # str1 é uma instância da classe Op_Basicas...
False
>>> callable(Op_Basicas)
True
>>> callable(d.quadrado)
True
>>> callable('abacaxi')
False
$ ! * & * : 0 0
! K. ! K
30 J
: )
>>> class Op_Basicas:
def __init__(self, entrada):
self.valor = entrada
def __add__(self, other):
return self.valor + other.valor
def __mul__(self, other):
return self.valor * other.valor
def __call__(self, qualquer_coisa): # método especial!
return qualquer_coisa
35
>>> a = Op_Basicas(56)
>>> a('Vejam, eu sou uma instância callable')
Vejam, eu sou uma instância callable
>>> b = Op_Avancadas(-23)
>>> b('Eu também sou!')
Eu também sou!
>>> d = Op_Extras(6)
>>> d('E eu, então, não sou?')
E eu, então, não sou?
>>> a(a.valor), a(b.valor), b(d.valor)
(56, -23, 6)
>>> callable(a), callable(b), callable(d)
(True, True, True)
$ 4 ! * : 0 *)
: 0 & "
$ $ ! * : 0 "
* 30 ! 30
! 0 : ! ! N
& 3 ! : ; F+ *
* ! )" ! TT T
*
F+ $ 4 B
Op_Basicas('abacaxi')(6) * Op_Extras(16)('bola')
36
P ! * 30
: ! "
print inst1! 3 : F )
1 30 K
>>> class Op_Basicas:
def __init__(self, entrada): # método especial!
self.valor = entrada
def __call__(self, qualquer_coisa): # método especial!
return qualquer_coisa
def __str__(self): # método especial!
return 'Sou uma orgulhosa instância de %s' % self.__class__
>>> a = Op_Basicas(56)
>>> print a
Sou uma orgulhosa instância de __main__.Op_Básicas
>>> a('Hello!')
'Hello!'
>>> b = Op_Avancadas('abacaxi')
>>> print b
Sou uma orgulhosa instância de __main__.Op_Avancadas
>>> d = Op_Extras(6)
>>> print d
Sou uma orgulhosa instância de __main__.Op_Extras
>>> b(a.valor)
56
37
>>> d('And from me ' + str(b.valor))
'And from me -23'
6 : 0 1 ! )"
TT
1 30 print
83 $%& 30 *) ; & 3
!
<0 0 4 1 K
: $G. ! !
0 * !! "
/ " *
K * K & <0 1
0 O
! 8 $ E' ! 12!
K ) 1 %
$%&
) ! 0
30 *)
/ ! !
30 *) ) 37 J )
30 /
38
1 . # ;
4 '''
>>> nome1 = 'Oliveira'
>>> idade1 = 35
>>> sexo1 = 'masculino'
>>> nome2 = 'Cardoso'
>>> idade2 = 23
>>> sexo2 = 'feminino'
>>> print nome1, idade1, sexo1, nome2, idade2, sexo2
E '''( 4 ;
$
>>> p1 = ['Oliveira', 35, 'masculino']
>>> p2 = ['Cardoso', 23, 'feminino']
>>> for e in p1:
print e
>>> for e in p2:
print e
7 ? 3 + /; 7
$ + # " '
4 - H
I 4 B
39
>>> p1 = dict{name = 'Oliveira', idade = 35, sexo = 'masculino'}
>>> p2 = dict{name = 'Cardoso', idade = 23, sexo = 'feminino'}
>>> for e in p1.keys():
print '%s: %s' % (e, p1[e])
>>> for e in p2.keys():
print '%s: %s' % (e, p2[e])
$ 4 " '
C4 ") 4
* !B
>>> class Imprimivel:
def __str__(self):
"""método mágico (especial) chamado por print, str()..."""
ps = ''
for e in self.__dict__.keys(): # outro método especial!
ps += '%s: %sn' % (e, str(self.__dict__[e]))
return ps
>>> class Pessoa(Imprimivel):
def __init__(self, nome, idade, sexo):
self.nome = nome
self.idade = idade
self.sexo = sexo
>>> class Nota_Fiscal(Imprimivel):
40
def __init__(self, nome, produto, preço):
self.nome = nome
self.produto = produto
self.preço = preço
>>> pes = Pessoa(nome = 'Oliveira', idade = 35, sexo = 'masculino')
>>> nf = Nota_Fiscal(nome = 'Cardoso', produto = 'carro', preço = 300.0)
>>> print pes # as instâncias são imprimíveis
idade: 35
sexo: masculino
nome: Oliveira
>>> print nf # as instâncias são imprimíveis
preço: 300.0
produto: carro
nome: Cardoso
30 / !
* & )
!
*
41
! 8 1$ < "= $. $4
' + ! 8 * 7
30 ! * <0
3 4 3
4 30 $%& 2
! " " K 30
! J )
37
• / ! . N :
"L
• ; 4 L
• ; 4 2
! !
! 4 ! .
T
• < * * *
' 30 + * ! ! ? A ! A!
!
! 8 I ? -@-,$
P"
6 1
& $%& & 3
.
42
& >WW & ! & U/ V!
) >! A! C! ! >WW!
2 0
/ K C×C K "
' +!
0 8 37 ! 30 "
C×C
6 J " K
& 1 8
6 # 9
/ * & 4 1 !
) K 37 *"
) 37 0
30 idbcadicbia )()()()( +++=+++
2 * 30 idbcadicbia )()()()( −+−=+−+
30 ibcadbdacdicbia )()()()( ++−=+⋅+
/ 0 i
dc
adbc
dc
bdac
dic
bia
+
−
+
+
+
=
+
+
2222
)(
)(
N 4 1
" 4 0 ! ! .
!J. ∠∠∠∠ θθθθ 5 * .
6
22
bar += ] =
b
a
arctanθ " &
K . $%&
F G
6 1 30 *)
43
8 4 !@AAA
J G<0 9 &
" * & $%&
<0 4
30 *) ' 9+ !
)" " ! K 1 8 )"
0 30 " ,
< ! " H ' * 7 ! ! 1 1 +
, ! )" *
*) * # !
! 2 7 K 30
< 9
Sua participação é muito importante para a constante
melhoria deste material. Ficaremos muito honrados em
conhecer suas opiniões, sugestões, críticas ou dúvidas
sobre ele. Para isso, podemos ser encontrados em
labaki@feis.unesp.br e woiski@dem.feis.unesp.br.
VERSÃO 1beta
&$-'4 $ $& &, ,.'@&$2,< 4 K& & E' 4! ,&$ $ -F&,$ !$ !' $ A

Weitere ähnliche Inhalte

Was ist angesagt?

Bogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoBogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoRodolpho Eckhardt
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Luis Gustavo Almeida
 
Segunda Apresentação jQuery
Segunda Apresentação jQuerySegunda Apresentação jQuery
Segunda Apresentação jQuerydouglasgrava
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Fugindo das armadilhas do MVC
Fugindo das armadilhas do MVCFugindo das armadilhas do MVC
Fugindo das armadilhas do MVCEdiaimo Borges
 
Minicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayMinicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayDilan Nery Lopes
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - TabelasDalton Martins
 
PHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPPHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPBruno Neves Menezes
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 

Was ist angesagt? (20)

Python Class
Python ClassPython Class
Python Class
 
Bogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoBogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de Programação
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
Php curl - Coleta de dados na web
Php curl - Coleta de dados na webPhp curl - Coleta de dados na web
Php curl - Coleta de dados na web
 
Minicurso de jQuery
Minicurso de jQueryMinicurso de jQuery
Minicurso de jQuery
 
Segunda Apresentação jQuery
Segunda Apresentação jQuerySegunda Apresentação jQuery
Segunda Apresentação jQuery
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Fugindo das armadilhas do MVC
Fugindo das armadilhas do MVCFugindo das armadilhas do MVC
Fugindo das armadilhas do MVC
 
Minicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayMinicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDay
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Resta um java
Resta um javaResta um java
Resta um java
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - Tabelas
 
Clean Code Matters!
Clean Code Matters!Clean Code Matters!
Clean Code Matters!
 
PHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPPHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHP
 
Do REST ao GraphQL com PHP
Do REST ao GraphQL com PHPDo REST ao GraphQL com PHP
Do REST ao GraphQL com PHP
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 

Andere mochten auch

Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 
Ekonomický týždenník Poštovej banky - 32. týždeň
Ekonomický týždenník Poštovej banky - 32. týždeňEkonomický týždenník Poštovej banky - 32. týždeň
Ekonomický týždenník Poštovej banky - 32. týždeňpabk
 
Μελέτη ποδηλατοδρόμων
Μελέτη ποδηλατοδρόμωνΜελέτη ποδηλατοδρόμων
Μελέτη ποδηλατοδρόμωνecopanou
 
Ερωτηματολόγιο
ΕρωτηματολόγιοΕρωτηματολόγιο
Ερωτηματολόγιοecopanou
 
Accounting Software for Canvassing Agent
Accounting Software for Canvassing AgentAccounting Software for Canvassing Agent
Accounting Software for Canvassing Agentwhoaimage
 
Introdução a python módulo c
Introdução a python   módulo cIntrodução a python   módulo c
Introdução a python módulo cJader Gabriel
 
Ako sa nam zije 25 rokov od revolucie
Ako sa nam zije 25 rokov od revolucieAko sa nam zije 25 rokov od revolucie
Ako sa nam zije 25 rokov od revoluciepabk
 
Plus Accounting Software
Plus Accounting SoftwarePlus Accounting Software
Plus Accounting Softwarewhoaimage
 
Ekonomický týždenník Poštovej banky - 27. týždeň
Ekonomický týždenník Poštovej banky - 27. týždeňEkonomický týždenník Poštovej banky - 27. týždeň
Ekonomický týždenník Poštovej banky - 27. týždeňpabk
 
Κυκλοφοριακά προβλήματα
Κυκλοφοριακά προβλήματαΚυκλοφοριακά προβλήματα
Κυκλοφοριακά προβλήματαecopanou
 
चतुर खरगोश और हाथी
चतुर खरगोश और हाथीचतुर खरगोश और हाथी
चतुर खरगोश और हाथीDhananjay Kumar
 
Modul subsistem rumah sakit
Modul subsistem rumah sakitModul subsistem rumah sakit
Modul subsistem rumah sakitSri Lestari
 
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCESZeeshan Shariff
 

Andere mochten auch (18)

Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Ekonomický týždenník Poštovej banky - 32. týždeň
Ekonomický týždenník Poštovej banky - 32. týždeňEkonomický týždenník Poštovej banky - 32. týždeň
Ekonomický týždenník Poštovej banky - 32. týždeň
 
Μελέτη ποδηλατοδρόμων
Μελέτη ποδηλατοδρόμωνΜελέτη ποδηλατοδρόμων
Μελέτη ποδηλατοδρόμων
 
Can we share
Can we shareCan we share
Can we share
 
Ερωτηματολόγιο
ΕρωτηματολόγιοΕρωτηματολόγιο
Ερωτηματολόγιο
 
Accounting Software for Canvassing Agent
Accounting Software for Canvassing AgentAccounting Software for Canvassing Agent
Accounting Software for Canvassing Agent
 
Mmh mc may_2013
Mmh mc may_2013Mmh mc may_2013
Mmh mc may_2013
 
Introdução a python módulo c
Introdução a python   módulo cIntrodução a python   módulo c
Introdução a python módulo c
 
Can we share
Can we shareCan we share
Can we share
 
Ako sa nam zije 25 rokov od revolucie
Ako sa nam zije 25 rokov od revolucieAko sa nam zije 25 rokov od revolucie
Ako sa nam zije 25 rokov od revolucie
 
Plus Accounting Software
Plus Accounting SoftwarePlus Accounting Software
Plus Accounting Software
 
Ekonomický týždenník Poštovej banky - 27. týždeň
Ekonomický týždenník Poštovej banky - 27. týždeňEkonomický týždenník Poštovej banky - 27. týždeň
Ekonomický týždenník Poštovej banky - 27. týždeň
 
Κυκλοφοριακά προβλήματα
Κυκλοφοριακά προβλήματαΚυκλοφοριακά προβλήματα
Κυκλοφοριακά προβλήματα
 
चतुर खरगोश और हाथी
चतुर खरगोश और हाथीचतुर खरगोश और हाथी
चतुर खरगोश और हाथी
 
Modul subsistem rumah sakit
Modul subsistem rumah sakitModul subsistem rumah sakit
Modul subsistem rumah sakit
 
Personality development
Personality developmentPersonality development
Personality development
 
Equipa 2013
Equipa 2013Equipa 2013
Equipa 2013
 
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES
5 SCHEDULING NIGHTMARES: WHY YOU SHOULDN'T USE EXCEL FOR PLANNING RESOURCES
 

Ähnlich wie Universidade Estadual Paulista Júlio de Mesquita Filho

Pythonbasico
PythonbasicoPythonbasico
PythonbasicoUFT
 
Introdução a python módulo a
Introdução a python   módulo aIntrodução a python   módulo a
Introdução a python módulo aJader Gabriel
 
Python modulo a
Python modulo aPython modulo a
Python modulo aNatyTGomes
 
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...MARCO AURÉLIO BICALHO DE ABREU CHAGAS
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyMarcel Caraciolo
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Capítulo 2 Evolução do pensamento em administração
Capítulo 2   Evolução do pensamento em administraçãoCapítulo 2   Evolução do pensamento em administração
Capítulo 2 Evolução do pensamento em administraçãoPUC Minas
 
12 03-2010 - apresentação da teleconferência 2009
12 03-2010  -   apresentação da teleconferência 200912 03-2010  -   apresentação da teleconferência 2009
12 03-2010 - apresentação da teleconferência 2009AES Tietê
 
Acordao.stf.exclusao icms da base de cauculo da cofins
Acordao.stf.exclusao icms da base de cauculo da cofinsAcordao.stf.exclusao icms da base de cauculo da cofins
Acordao.stf.exclusao icms da base de cauculo da cofinsleia lima
 
Apresentações alta performance
Apresentações alta performanceApresentações alta performance
Apresentações alta performanceCésar Ribeiro
 
Hilton,P-animais-VP15V687
Hilton,P-animais-VP15V687Hilton,P-animais-VP15V687
Hilton,P-animais-VP15V687Ana Santos
 
Guia rapido para_aplicacao_nova_ortografia
Guia rapido para_aplicacao_nova_ortografiaGuia rapido para_aplicacao_nova_ortografia
Guia rapido para_aplicacao_nova_ortografiaSusana Frikh
 

Ähnlich wie Universidade Estadual Paulista Júlio de Mesquita Filho (20)

Pythonbasico
PythonbasicoPythonbasico
Pythonbasico
 
Python introdução
Python   introduçãoPython   introdução
Python introdução
 
Pythonbasico
PythonbasicoPythonbasico
Pythonbasico
 
Introdução a python módulo a
Introdução a python   módulo aIntrodução a python   módulo a
Introdução a python módulo a
 
Python modulo a
Python modulo aPython modulo a
Python modulo a
 
pythonbasico.pdf
pythonbasico.pdfpythonbasico.pdf
pythonbasico.pdf
 
Tcc apresentacao1
Tcc apresentacao1Tcc apresentacao1
Tcc apresentacao1
 
346
346346
346
 
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
EXIGÊNCIAS DE CERTIDÕES NEGATIVAS PARA LEVANTAMENTO DE VALORES DECORRENTES DE...
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e Scipy
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Capítulo 2 Evolução do pensamento em administração
Capítulo 2   Evolução do pensamento em administraçãoCapítulo 2   Evolução do pensamento em administração
Capítulo 2 Evolução do pensamento em administração
 
12 03-2010 - apresentação da teleconferência 2009
12 03-2010  -   apresentação da teleconferência 200912 03-2010  -   apresentação da teleconferência 2009
12 03-2010 - apresentação da teleconferência 2009
 
Acordao.stf.exclusao icms da base de cauculo da cofins
Acordao.stf.exclusao icms da base de cauculo da cofinsAcordao.stf.exclusao icms da base de cauculo da cofins
Acordao.stf.exclusao icms da base de cauculo da cofins
 
Aconteceu no trabalho
Aconteceu no trabalho  Aconteceu no trabalho
Aconteceu no trabalho
 
Apresentações alta performance
Apresentações alta performanceApresentações alta performance
Apresentações alta performance
 
Teleconferência 3T10
Teleconferência 3T10Teleconferência 3T10
Teleconferência 3T10
 
apostila.pdf
apostila.pdfapostila.pdf
apostila.pdf
 
Hilton,P-animais-VP15V687
Hilton,P-animais-VP15V687Hilton,P-animais-VP15V687
Hilton,P-animais-VP15V687
 
Guia rapido para_aplicacao_nova_ortografia
Guia rapido para_aplicacao_nova_ortografiaGuia rapido para_aplicacao_nova_ortografia
Guia rapido para_aplicacao_nova_ortografia
 

Universidade Estadual Paulista Júlio de Mesquita Filho

  • 1. !! "" ##$$ %% ## && $$ ' ( ) * + ), - !+ UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
  • 2. 2 !"#$ % $&'"#$ ! ()$ * ' $ ()$ ! " # $%& '& (( %& )* +! " '& (( * , ,+ " $%& '& ((--- %& .* *+ / * 0 * 1 2 " 30 ! 4 . 5 * *) 0 ! *" $%& 2 30 ! 1 5 6 & '& ((--- *+ 6 & 1 ! 7 !&" 1 1 8 1 30 4 ! 7 ! 8 " . 92 0 * Josué Labaki & Emanuel R. Woiski # $%& / & : ;< 2$ =& 2 labaki@feis.unesp.br woiski@dem.feis.unesp.br
  • 3. 3 + &,- ! ()$ , !&$! ./ $ 0 >? * 9 @ A$ & B C2 1 D @ E B F G H ! 12! 3$ ./ $ 24 ! 5 >2 1 I A * >@ C >I @ * AA ! ! "! 67 ! 8 $ 9' ! 12! :; ! 8 1$ < "= $. $4 0> ! 8 ? -@-,$ 0> 8 4 !@AAA 0:
  • 4. 4 ! ()$ , !&$! ./ $ >A !. 4' > B J * 30 ! $%& *) * * ) 3 37 ! G 5" ! 30 *) ' + 1 ! * $%& * ' !! / ! K * L 0 " *) 8 ! 1 $%& ! * ) " ! 30 " ! K" ! 1 8 8 * " * " " , ' + M" " *) $%& 30 *) 1 Alusão à célebre frase “Habemus Papa!”, proclamada por um cardeal na basílica de São Pedro (Vaticano) sempre que um novo papa acaba de ser eleito.
  • 5. 5 6A ,4 ,! !,<!3' ! &$& )$ A $ 0 1 ! * ! ! 2 30 *) 30 ' 30 +! . . " ) ! 30 $ " & 37 * * ! * 1 < 1 0 " ; 30 ) 1 ! 30 " M" 30 *) * <0 1 37 ! *) " ! *) N * ! & # ! ! ! & <0 *) A *) > K & N * *) C < *) 8 3
  • 6. 6 < 30 ! " O < 30 *) ! 0 ! ' 1 0 + *) :A C' &! !,<!3 ? 4 2$ &$4' &$ !2A / & 3 30 K 2 Procedimento 1: comprar uma banana; Procedimento 2: aguardar meio-dia; Procedimento 3: servir a banana. 2 " 0 ! * . < ! 0 " K !)" 0 * ! 7 0 * ! ) 0 . ! ! *) !
  • 7. 7 Mensagem: alimente-se! / K! *) ! & ' & *8 ! 8 ! " 0 + # ' 3 ! 0 +! ) ! ) ' K *) + ! K 1 30 !)" 0 * 30 *) 8 ! K somar os lados da figura = & 4 8 ! 1 ! 0 < & & Aπ *) *) " # Calcule seu perímetro " 8 ! K K * 0A - ,! !,<!3 $-D&,C$A J 0 ! ! K a = sqrt(b) = ! 30 $ " P 1 ! 30
  • 8. 8 ! 30 *) ! & 2 " " K ) $%& G a = b.sqrt() " K * $ *) 1 0 GJ ) & >>> a='araraquara' >>> a.split('a') ['', 'r', 'r', 'qu', 'r', ''] < ! ! 30 *) 9 1 ! *) ! *) ' ) 30 + ! * ! 'a' ['', 'r', 'r', 'qu', 'r', ''] 30 $%& ! 30 ! & * *) ! *) >>> dir(a) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
  • 9. 9 ; 30 & *) & * *) ! * DA ) & ! * ) . K " & ) 1 =/5 * 37 K * 9 7A 9'! ! ! ,<!3 E' F !G, !2H ! 30 *) " & K 8 *) & * N ' 8 + # / 8 )" * *) 18 2 0 30 *) !* ". . 8 0 L 0 " $ 30 . & ! ! " # < %% " K & a='araraquara' b=[1,2,3]' ( ") b.reverse() * # " * $ ! + a.upper() # " , '- . $ / % # * # ! /
  • 10. 10 ! 12! 3 $ ./ $ 2 4 ! *) 0 ! 8 * ! 8 ! )" ! *) 0 8 1 30 ! 37 *) 8 & ' 0 +! 0 30 *) # *) ! * ! K . 0 0 Q ' + 30 : ! $%& ! 0 ! ! 37 ! ! & " ! * *) ! J ) " $%& 30 *) 0 >A , !? A 30 $%& " class ! 0 K * pass >>> class Cachorros: pass $ !* " & 9J )
  • 11. 11 >>> Cachorros <class __main__.Cachorros at 0x00B04360> ; & 30 * ! * . 1 )" * >>> dir(Cachorros) ['__doc__', '__module__'] J )" * *) : 0 0 0 1 30 ! : $ * ! 1 " K : 2 * 0 !' < . & Cachorros()! 0 R : S ' + <0 >>> Cachorros () <__main__.Cachorros instance at 0x00CF3D50> >>> id(Cachorros()) == id(Cachorros()) False 30 * 3! '& 1 + 3 ". *) ; 30 *
  • 12. 12 37 & * K 1 0 2 * 0 ! : 2 * ! : 0 N ! ! * ) &, , ! ! 0 &" . $%& ! K : ! * 8 : * 4 !! 30 J ) 1 * 30 ! : & d = Cachorros () / 0 *) ! K 37 ! & " ! 1 L " ! ! " K $%& / ! 1 ! 1 >>> Dogs = Cachorros >>> Dogs <class __main__.Cachorros at 0x00B04360> # O mesmo id de Cachorros! >>> Dogs.__name__ 'Cachorros' * ! 1 ! *) * ! 37 0 *) * / 30 0 ! . ! !*
  • 13. 13 >>> def nome_do_objeto(c): Você sabe dizer qual é o tipo de c? try: print 'Nome do objeto: %s. Id: %d.' % (c.__name__, id(c)) except: print """O objeto " %s " não tem atributo __name__ mas seu id é %d.""" % (str(c), id(c)) >>> ndo=nome_do_objeto >>> ndo(Dogs) Nome do objeto: Cachorros. Id: 10756032. >>> ndo('abacaxi') O objeto " abacaxi " não tem atributo __name__ mas seu id é 10738400. $ * '0 : ! 5 + 30 $%& ! ! 37 ! ! ! 0 0 * *) * 0 1 ! 0 ) 8 30 0 & *) * TT TT 2 1 F 0 8 ! * + 6 , # # # ") ndo(ndo)'( / ' & ) " $ 4 / $ ./
  • 14. 14 6A ,.' $ 4F $&$ A * 0 *) N ! )! : = & & 8 7 : 0 * J ) 1 >>> class Cachorros: cobertura='pelos' alimento='carne' patas=4 habitat='domestico' nome='Rex' >>> class Galinhas: cobertura='penas' alimento='graos' patas=2 habitat='domestico' bico='pequeno' >>> dir(Cachorros) ['__doc__', '__module__', 'alimento', 'cobertura', 'habitat', 'nome', 'patas'] >>> dir(Galinhas)
  • 15. 15 ['__doc__', '__module__', 'alimento', 'bico', 'cobertura', 'habitat', 'patas'] ! 1 8 * ! ! 1 * 8 * ! J : 3 * : 8 ! * ! >>> Snoopy=Cachorros() >>> Lala=Galinhas() >>> Snoopy.alimento 'carne' >>> Lala.alimento 'graos' >>> Lala.bico 'pequeno' >>> Snoopy.bico Traceback (most recent call last): File "<pyshell#28>", line 1, in -toplevel- Snoopy.bico AttributeError: Cachorros instance has no attribute 'bico' & ! * & ! 0 * * *
  • 16. 16 >>> print '%s late sem parar!' % Snoopy.nome Rex late sem parar! ; 9 0 2 %G P ' " + * 8 N : 2 %. * 9 :! R6 1S9 $ U V * 1 ! & 30 ! >>> Cachorros.nome 'Rex' 0 37 ! ! '* + : ! 0 37 0 1 : < 1 1 !1 * 8 ! ; - >>> class Circulos: raio = 25.4 def calcula_Area(self): self.area = 3.14*(self.raio**2) def calcula_Volume(self,altura): self.volume = 3.14*(self.raio**2)*altura
  • 17. 17 ! * 8 : > = ! * 1 $ ! ; * >! 0 : " * ! >>> C1=Circulos() >>> C1.raio 25.399999999999999 >>> C1.area Traceback (most recent call last): File "<pyshell#44>", line 1, in -toplevel- C1.area AttributeError: Circulos instance has no attribute 'area' >>> dir(C1) ['__doc__', '__module__', 'calcula_Area', 'calcula_Volume', 'raio'] >>> C1.calcula_Area() >>> C1.area 2025.8024 >>> dir(C1) ['__doc__', '__module__', 'area', 'calcula_Area', 'calcula_Volume', 'raio'] 8 R " T GGGS ' 37 ! " * + " 0 & G, ,"#$
  • 18. 18 K < 5 0 F ! " " 8 : & >! 13' ; *! " K C1.area = 3.14*(C1.raio**2) ! * >! " 1 * 1> 0 1 J * >>> C1.calcula_Area() == Circulos.calcula_Area(C1) True = 13' ; *! 8 1 ' ; *13! 0 " ! 0 F $%& " ?" 1 ! - ! " * * 2 ! ! " ; K : 1 8 >>> C1 = Circulos() >>> C1.calcula_Volume() Traceback (most recent call last): File "<pyshell#19>", line 1, in -toplevel- C1.calcula_Volume() TypeError: calcula_Volume() takes exactly 2 arguments (1 given)
  • 19. 19 * * 1 - 1 R S " 8 9 >>> C1.Calcula_Volume(12.) >>> C1.volume 24309.628799999999 4 !& G " 8 AB@9 " 8 : 8 G "! & 1 * * ! K 8 ' : R2 %S+ * !R6 1S 8 & G; K !TT TT :A 4F $&$ -,!2 A < 30 & ' 3 & K 0 + = > ! * : $4$4 $ 4 E' 2! G$ -,!&! : ! ! 8 )" 30 6 & ! 8 & !
  • 20. 20 >>> class Cachorros: cobertura='pelos' alimento='carne' patas=4 habitat='domestico' def __init__(self, nome): # Jamais nos esqueceremos do self! self.nome= nome >>> d1 = Cachorros('Dog1') >>> d1.nome 'Dog1' ! 0 1 30 : < ! 0 ' " + $ ! *) R S! & ! & ! ! 4 $ ! 30 " '1!%+ " 4 >W1>W $ 30 ! < )" 30 + W≤ 1≤ > ; 8 " "
  • 21. 21 >>> from random import random >>> class Sprites: def __init__(self, nome, tamanho = 'grande', cor = 'amarelo', arestas = 5): # self é sempre o primeiro argumento! self.nome = nome self.tamanho = tamanho self.cor = cor self.arestas = arestas def update_position(self): self.position = random()*10,random()*10 # posições x e y print '%s está agora em %s.' %(self.nome,self.position) < 30 : >! " ! )! 0 1 ! B : A ) ! )" * K 37 >>> s1 = Sprites('Star1', 'pequeno', 'vermelho') >>> s1.nome, s1.tamanho, s1.cor, s1.arestas ('Star1', 'pequeno', 'vermelho', 5) >>> s2 = Sprites('Star2', arestas=6, cor='azul') >>> s2.nome, s2.tamanho, s2.cor, s2.arestas ('Star2', 'grande', 'azul', 6)
  • 22. 22 >>> s1.update_position(), s2.update_position() Star1 está agora em (0.43251725889582815, 9.5024820736664353). Star2 está agora em (0.50694145748064412, 1.6160935722866276). (None, None) >>> s1.position (0.43251725889582815, 9.5024820736664353) >>> s2.position (0.50694145748064412, 1.6160935722866276) J 30 * : ! " 1 K . * $ : ! : 3 ? 8 & * ! 0 * ; (None, None) # ") . @5 ;'- . + $ $ $ ) / 0A ! ,.' $ -,!, A ! * * ! 37 ! ! $%& * ! ) 4 * .
  • 23. 23 & ! : N : J ) >>> class Fausto: """Fausto é um romance de Goethe que Beethoven transformou em Ópera.""" def review(self): """ Este método responde com a avaliação dos críticos """ print 'Um romance excepcional' >>> print Fausto.__doc__ Fausto é um romance de Goethe que Beethoven transformou em Ópera. >>> print Fausto().__doc__ Fausto é um romance de Goethe que Beethoven transformou em Ópera. >>> print Fausto().review.__doc__ Este método responde com a avaliação dos críticos
  • 24. 24 30 ! )"& 30 ! 30 * 4 30 0 1* K ! ) $ & 1* 30 & ! * " ! R S >>> help(Fausto) Help on class Fausto in module __main__: class Fausto | Fausto é um romance de Goethe | que Beethoven transformou em Ópera. | | Methods defined here: | | review(self) | Este método responde com a avaliação dos críticos A 4 B$ " Fausto.__doc__ Fausto().__doc__/ P ! * 2 =/5 ! 3' ' 3 : +! " 9 : )! " ) 9 : 1 6 * * =/5
  • 25. 25 >>> class So_Acredito_Vendo: pass >>> sav = So_Acredito_Vendo() >>> sav.__module__ '__main__' >>> from math import sin >>> sin.__module__ 'math' ! ! "! * & & & & 8 ! * $%& & * J ) 1 3! . ! 8 : & 8 K / ! 3 . 0 ! 4 ! 3 * 4 8G
  • 26. 26 = ) 0 * 20 * ! ! ! N ! ! <0 & 3! K & * ! * 9 < 1 ! & * K $ ! K. 1 # ' R S! R S! R* S+ @ 6 '$ K! @ 6 * ' R & S! R S+ 1 # ' $%& ! K 0 ' & 9+! 1 * K & * class Condutores_Térmicos: atributos1.... class Materiais_Ferrosos(Condutores_Térmicos): atributos2..... class Materiais_Dúcteis(Materiais_Ferrosos): atributos3..... ! * ? ) @ 6 ! * 3 & / ! @ CD & 3 ? @ 6 0 9 ; ! & * 0 & 6 !2 !& 6 O * & * F G
  • 27. 27 >>> class Pai: Nome = 'Carlos' Sobrenome = 'Oliveira' Residência = 'Ilha Solteira' >>> class Filha(Pai): Nome = 'Luciana' Olhos = 'castanhos' >>> class Neta(Filha): Nome = 'Maria' >>> Pai.Nome, Filha.Nome, Neta.Nome ('Carlos', 'Luciana', 'Maria') >>> Pai.Residência, Filha.Residência, Neta.Residência ('Ilha Solteira', 'Ilha Solteira', 'Ilha Solteira') >>> Pai.Olhos, Filha.Olhos, Neta.Olhos ('azuis', 'castanhos', 'castanhos') J ) * 2 6 2 L A . & * 6 2 L ! K& * 6 X 8 ;" & 1 * !! " ) 0 * ! ;"' 4 K 0 ;" & J ) * 2 & * ! K
  • 28. 28 * 6 $ !2 ' 2 & * >>> issubclass(Neta,Pai) True >>> Neta.__bases__ (<class __main__.Filha at 0x00A48030>,) ! & " .* 0 >>> class Atlantico: carater1 = 'É um oceano ' >>> class Indico: carater2 = 'perigoso, ' >>> class Pacifico(Indico): carater3 = 'cheio de tsunamis ' >>> class Artico(Atlantico, Indico, Pacifico): carater4 = 'e muito gelado!' >>> print Artico.carater1 + Artico.carater2 + Artico.carater3 + Artico.carater4
  • 29. 29 É um oceano perigoso, cheio de tsunamis e muito gelado! >>> Indico.__bases__ () >>> Pacifico.__bases__ (<class __main__.Indico at 0x00A48060>,) >>> Artico.__bases__ (<class __main__.Atlantico at 0x00A481E0>, <class __main__.Indico at 0x00A48060>, <class __main__.Pacifico at 0x00A48180>) 'J * * Y $%& * & * 1 G= & & + * ! * & # ! < ! ; & ! : ; * K . 1 ! " 1 1 K $%& *) ! # ! J * Z!. [ *) *) Z ! * 30 $ * : . ! [ (! J : ' 8 K 1 ! R& " S+
  • 30. 30 >>> class Op_Basicas: def __init__(self, entrada): self.valor = entrada def __add__(self, other): # método especial! return self.valor + other.valor def __mul__(self, other): # método espeial! return self.valor * other.valor >>> a = Op_Basicas(56) >>> b = Op_Basicas(-23) >>> a + b 33 >>> a * b -1288 4 & * PK ! ! ! ! * : ! * "' 2 * 0 ! 30 >>> str1 = Op_Basicas('56') >>> str2 = Op_basicas('-23') >>> str1 + str2 '56-23' >>> str1 * str2 Traceback (most recent call last):
  • 31. 31 File "<pyshell#21>", line 1, in ? str1 * str2 File "<pyshell#15>", line 7, in __mul__ return self.valor * other.valor TypeError: can't multiply sequence to non-int 9<0 30 30 )" [ >>> str2 = Op_Basicas(34) >>> str1 * str2 '56565656565656565656565656565656565656565656565656565656565656565656' " $%& 2 *) N ! "! 2 0 ! ) 0 ! ) 0 ! 1 30 " / ! * 1 30 K30 4 9J " & * K + ? 3 2 ) ; * 4 < ! 0 * * 3 3 ( ? ! 3 ? :
  • 32. 32 >>> class Op_Avancadas(Op_Basicas): def __init__(self, entrada): self.valor = entrada def __div__(self, other): # método especial! return float(self.valor) / other.valor & " 4 " $ # " 5 / ( / E4 ) " & / >>> c = Op_Avancadas(4) >>> c / a 0.071428571428571425 >>> c / b -0.17391304347826086 >>> c + a 60 >>> c * b -92 J ) & 3! * 30 * 0 8 : ;
  • 33. 33 ! & . * P ! ! 1 .* * 1 & ! >>> class Op_Extras(Op_Avancadas): def quadrado(self): return self.valor * self.valor >>> d = Op_Extras(6) >>> d.quadrado() 36 >>> d + a 62 >>> c + d 10 >>> d / b -0.2608695652173913 $ # & 3! : . ! !)" TT !TT ! TT ! "! 1 & ! F+ 1 30 ' ! D+ 20 & $%& *) K 4 $ 0 * " ,
  • 34. 34 # 0 $ * *) ! 30 * **) ! >>> callable(str1) # str1 é uma instância da classe Op_Basicas... False >>> callable(Op_Basicas) True >>> callable(d.quadrado) True >>> callable('abacaxi') False $ ! * & * : 0 0 ! K. ! K 30 J : ) >>> class Op_Basicas: def __init__(self, entrada): self.valor = entrada def __add__(self, other): return self.valor + other.valor def __mul__(self, other): return self.valor * other.valor def __call__(self, qualquer_coisa): # método especial! return qualquer_coisa
  • 35. 35 >>> a = Op_Basicas(56) >>> a('Vejam, eu sou uma instância callable') Vejam, eu sou uma instância callable >>> b = Op_Avancadas(-23) >>> b('Eu também sou!') Eu também sou! >>> d = Op_Extras(6) >>> d('E eu, então, não sou?') E eu, então, não sou? >>> a(a.valor), a(b.valor), b(d.valor) (56, -23, 6) >>> callable(a), callable(b), callable(d) (True, True, True) $ 4 ! * : 0 *) : 0 & " $ $ ! * : 0 " * 30 ! 30 ! 0 : ! ! N & 3 ! : ; F+ * * ! )" ! TT T * F+ $ 4 B Op_Basicas('abacaxi')(6) * Op_Extras(16)('bola')
  • 36. 36 P ! * 30 : ! " print inst1! 3 : F ) 1 30 K >>> class Op_Basicas: def __init__(self, entrada): # método especial! self.valor = entrada def __call__(self, qualquer_coisa): # método especial! return qualquer_coisa def __str__(self): # método especial! return 'Sou uma orgulhosa instância de %s' % self.__class__ >>> a = Op_Basicas(56) >>> print a Sou uma orgulhosa instância de __main__.Op_Básicas >>> a('Hello!') 'Hello!' >>> b = Op_Avancadas('abacaxi') >>> print b Sou uma orgulhosa instância de __main__.Op_Avancadas >>> d = Op_Extras(6) >>> print d Sou uma orgulhosa instância de __main__.Op_Extras >>> b(a.valor) 56
  • 37. 37 >>> d('And from me ' + str(b.valor)) 'And from me -23' 6 : 0 1 ! )" TT 1 30 print 83 $%& 30 *) ; & 3 ! <0 0 4 1 K : $G. ! ! 0 * !! " / " * K * K & <0 1 0 O ! 8 $ E' ! 12! K ) 1 % $%& ) ! 0 30 *) / ! ! 30 *) ) 37 J ) 30 /
  • 38. 38 1 . # ; 4 ''' >>> nome1 = 'Oliveira' >>> idade1 = 35 >>> sexo1 = 'masculino' >>> nome2 = 'Cardoso' >>> idade2 = 23 >>> sexo2 = 'feminino' >>> print nome1, idade1, sexo1, nome2, idade2, sexo2 E '''( 4 ; $ >>> p1 = ['Oliveira', 35, 'masculino'] >>> p2 = ['Cardoso', 23, 'feminino'] >>> for e in p1: print e >>> for e in p2: print e 7 ? 3 + /; 7 $ + # " ' 4 - H I 4 B
  • 39. 39 >>> p1 = dict{name = 'Oliveira', idade = 35, sexo = 'masculino'} >>> p2 = dict{name = 'Cardoso', idade = 23, sexo = 'feminino'} >>> for e in p1.keys(): print '%s: %s' % (e, p1[e]) >>> for e in p2.keys(): print '%s: %s' % (e, p2[e]) $ 4 " ' C4 ") 4 * !B >>> class Imprimivel: def __str__(self): """método mágico (especial) chamado por print, str()...""" ps = '' for e in self.__dict__.keys(): # outro método especial! ps += '%s: %sn' % (e, str(self.__dict__[e])) return ps >>> class Pessoa(Imprimivel): def __init__(self, nome, idade, sexo): self.nome = nome self.idade = idade self.sexo = sexo >>> class Nota_Fiscal(Imprimivel):
  • 40. 40 def __init__(self, nome, produto, preço): self.nome = nome self.produto = produto self.preço = preço >>> pes = Pessoa(nome = 'Oliveira', idade = 35, sexo = 'masculino') >>> nf = Nota_Fiscal(nome = 'Cardoso', produto = 'carro', preço = 300.0) >>> print pes # as instâncias são imprimíveis idade: 35 sexo: masculino nome: Oliveira >>> print nf # as instâncias são imprimíveis preço: 300.0 produto: carro nome: Cardoso 30 / ! * & ) ! *
  • 41. 41 ! 8 1$ < "= $. $4 ' + ! 8 * 7 30 ! * <0 3 4 3 4 30 $%& 2 ! " " K 30 ! J ) 37 • / ! . N : "L • ; 4 L • ; 4 2 ! ! ! 4 ! . T • < * * * ' 30 + * ! ! ? A ! A! ! ! 8 I ? -@-,$ P" 6 1 & $%& & 3 .
  • 42. 42 & >WW & ! & U/ V! ) >! A! C! ! >WW! 2 0 / K C×C K " ' +! 0 8 37 ! 30 " C×C 6 J " K & 1 8 6 # 9 / * & 4 1 ! ) K 37 *" ) 37 0 30 idbcadicbia )()()()( +++=+++ 2 * 30 idbcadicbia )()()()( −+−=+−+ 30 ibcadbdacdicbia )()()()( ++−=+⋅+ / 0 i dc adbc dc bdac dic bia + − + + + = + + 2222 )( )( N 4 1 " 4 0 ! ! . !J. ∠∠∠∠ θθθθ 5 * . 6 22 bar += ] = b a arctanθ " & K . $%& F G 6 1 30 *)
  • 43. 43 8 4 !@AAA J G<0 9 & " * & $%& <0 4 30 *) ' 9+ ! )" " ! K 1 8 )" 0 30 " , < ! " H ' * 7 ! ! 1 1 + , ! )" * *) * # ! ! 2 7 K 30 < 9 Sua participação é muito importante para a constante melhoria deste material. Ficaremos muito honrados em conhecer suas opiniões, sugestões, críticas ou dúvidas sobre ele. Para isso, podemos ser encontrados em labaki@feis.unesp.br e woiski@dem.feis.unesp.br. VERSÃO 1beta &$-'4 $ $& &, ,.'@&$2,< 4 K& & E' 4! ,&$ $ -F&,$ !$ !' $ A