aula python
DESCRIPTION
Slideshow made for Programming Languages classes at collegeTRANSCRIPT
Grupo – 1
Júlio César Eiras Melanda – 14267Emmanuel Ferreira Borges - 13675
Wellington dos Santos Flauzino – 13739
Universidade Federal de Itajubá - 27/05/09
Conteúdo Objetivos
O que é Python
Características Importantes
− Paradigma
− Compilação
− Tipagem
− Escopo de variáveis
− Multiplataforma
− Estruturas de dados nativas
− Outras características
Conteúdo (cont.) Programando
− Começando...
− Sintaxe básica
− Fora do interpretador
− Controle de fluxo – seleção
− Controle de fluxo – laço
− Controle de fluxo – laço
− Subprogramas
− Orientação a Objetos
− Programação funcional
Conteúdo (cont.)
● Módulos
● Programas que usam Python
● Referências
Objetivos
Apresentar para a turma a linguagem de programação Python em sua versão 2.x pois houve quebra de compatibilidade na versão 3.0 que ainda não é largamente usada..
Desta forma, serão abordados tópicos referentes ao projeto da linguagem, relacionando à matéria estudada, além de alguns exemplos de como funciona a programação nesta linguagem que está entre as que mais vem crescendo em importância nos últimos anos.
O que é Python
Python é uma linguagem de programação poderosa e fácil de aprender que possui estruturas de alto nível, com uma abordagem simples e efetiva à programação orientada a objetos. [1]
Foi criada no início da década de 90 por Guido van Rossum na Holanda no Stichting Mathematisch Centrum. Todos os releases, exceto 1.6, 1.6.1 e 2.0 são distribuídos sob a GPL-compatível. [2]
O nome vem do show da BBC “Monty Python's Flying Circus”, e não das cobras de mesmo nome.[1]
Python é muito versátil podendo ser usada em aplicativos Web do lado servidor, jogos, programas de controle e configuração de sistemas, scripts, editores de imagens, music players, Web browsers e muito mais.
Características Importantes
Características Importantes Paradigmas
− Multi-paradigma Orientada a Objetos Procedural Funcional Scripting
Compilação
− Interpretada
− Programação interativa
− Bytecodes
Características Importantes
Tipagem
− Dinâmica
− Forte Escopo de variáveis
− Estático com vinculação dinâmica
− Podem ser acessados diretamente: Variáveis locais Variáveis globais Variáveis externas (nomes pré-definidos)
Características Importantes Multiplataforma
− Windows
− GNU/Linux
− MacOS
− PalmOS
− Symbian Estruturas de dados nativas
− Listas
− Dicionários
− Tuplas
− Conjuntos
Características Importantes
Outras características
− Tudo é objeto (inclusive tipos de dados)
− Tipo nativo para números complexos
− Extensa biblioteca padrão
− Suporta coerção (dentro dos limites impostos pela tipagem forte)
Programando
Começando... Na programação interativa, basta abrir o interpretador e digitar
os comandos
>>> print “Olha eu aqui!” #isto é um comentário
Olha eu aqui!
>>> x = '3' #Não precisa declarar x
>>> x #Mostra o objeto vinculado ao nome x
'3'
Sintaxe Básica
Blocos são definidos por identação
>>> i = 0 #Sem ';' no final da instrução
>>> while i < 2: #Sem begin ou {
... print i, #vírgula evita quebra de linha
... i += 1 #operador de atribuição composto
... #sem end ou }
0 1
O ':' indica que a próxima instrução faz parte de um bloco
Fora do interpretador Código fonte em arquivo .py ou .pyw (no Windows)
Exemplo:
#!/usr/bin/env python
#-*- coding: utf8 -*-
#mentira.py
'''Mostra uma mentira na tela'''
print “Não fui eu!!!”
Primeira linha para chamar o interpretador python (somente em Unix)
Segunda linha conta para o interpretador qual a codificação do arquivo. Sem ela, é levantada uma exceção se houver caracteres não ASCII.
Fora do interpretador (cont.)
A terceira linha é um comentário com o nome do arquivo python. É convenção colocar este comentário em todos os módulos (arquivos) criados.
A quarta linha é uma dosctrnig (texto de documentação). Todos objetos devem ter uma docstring antes de começar com as instruções propriamente (convenção).
Finalmente a instrução que será interpretada e executada
Controle de fluxo - seleção Em python não existe switch
if x < 0:
pass #usado para não fazer nada
else:
pass
if y == 1: #if e elif funcionam como cases
pass #com a vantagem de aceitar
elif y > 2: #expressões
pass
else: #Faz o papel do default
pass
Controle de fluxo - seleção● Fazer um switch usando
dicionários:
def case_1():
print "um"
def case_2():
print "dois"
def case_3():
print "tres"
switch ={'1':case_1,
'2':case_2,
'3':case_3}
x = raw_input()
try: #pega excessão
switch[x]()
except:
print "default"
Controle de fluxo - laço Temos duas instruções para laços – for e while (não tem do)
while executa um laço condicional pós-teste
while x >= 0:
y = x * x
x -= 1 for executa iteração sobre uma lista
for i in [1, 2 ,3 ,4]:
print (' i vale %d') % i Podemos gerar listas com a função range()
>>> range(5)
[0, 1, 2, 3, 4]
Controle de fluxo - laço
Para controle com instruções localizadas pelo usuário temos as instruções break e continue do mesmo modo que em C
Para os casos em que o laço terminar normalmente significa algo, usa-se a instrução else
for i in range(2, 10):
for n in range(2, i):
if i % n == 0:
print i, '=', n, '*', i/nbreak
else:
print i, 'é um número primo'
Subprogramas
Todos subprogramas são funções
Funções sem return, ou com return sem parâmetros retornam None
def fib(n):
''' Calcula fibonacci até n '''
a, b = 0, 1 #Atribuições simultâneas
while b < n:
print b
a, b = b, a + b #Avalia da esquerda #para a direita
Subprogramas (cont.)
def continuar(opcao = true):
''' continua alguma coisa '''
if opcao:
print “Continuando”
else:
print “Você decidiu parar”
>>> continuar() #parâmetro é opcional
Continuando
>>> continuar(false)
Você decidiu parar
Orientação a Objetos● Tudo é objeto, da estrutura mais simples à mais complexa
● Classes
class MinhaClasse(SuperClasse1):
''' Docstring qualquer '''
atributo1 = 'valor do atributo 1'
_atributo2 = 9
def __init__(self, atributo1, atributoS):
self.atributo1 = atributo1
SuperClasse1.__init__(atributoS)
def metodo1(self, *params):
pass
Orientação a objetos
● Python possui herança múltipla
● Todo método de classe recebe o parâmetro self
● Atributos não públicos : _atributo2
● Método __init__ é o primeiro a ser executado
● __init__ não é um construtor
Orientação a objetos (cont.)
x = classe() #Instanciando...
y = classe2(param)
x.metodo1(param1, param2) #utilizando métodos
z = y.troca1(a, b)
var = x.atributo1 #utilizando atributo
y.atributo2 = 'Arara' #'setando' atributos
Programação funcional● filter(func, lista) retorna uma sequência com os itens da lista
para os quais func é verdadeiro
def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
● map(func, lista) aplica func(item) em cada item da lista retornando uma lista de valores retornados por func(item)
def f(x): return x*x*x
>>> map(f, range(1, 5))
[1, 8, 27, 64] # códigos extraídos de [1]
Programação funcional (cont.)● reduce(func, lista) aplica sucessivamente func aos elementos
de lista dois a dois, retornando um único valor
def add(x, y): return x + y
>>> reduce(add, range(1, 11))
55
● Funções lambda: cria funções anônimas simples
def incrementa(n)
return lambda x: x + n #somente uma
>>> f = incrementa(20) #expressão
>>> f(20)
40
Módulos
● Interfaces gráficas
– wxPython
– TkInter
– PyQt
– PyGTK
● Científico e numérico
– numpy
– scipy
– ScientificPython
– BioPython
Módulos (cont.)● Jogos
– Pygame
● Imagens
– PyOpenGL
– PyOgre
– Soya 3D
– Panda 3d
● Web
– Django
– TurboGears
– Zope
Programas que usam Python
● YUM
● Wicd
● BitTorrent
● ForecastWatch
● Wing IDE
● Blender (renderização de imagens)
● OpenOffice
● Scribus
● Vim
Programas que usam Python (cont.)
● GIMP
● Inkscape
● Poser
● Jogos
– Battlefield 2 (Windows)
– Civilization IV (Windows)
– Frequency (PS2)
– Star Trek Bridge Commander (Windows)
– Vegastrike (Multiplataforma)
– Frets On Fire
Frets On Fire
Civilization IV
Mount & Blade
PySol
Inkscape
Poser
Referências
● Rossum, Guido von, PythonTutorial– Release 2.4.2, 2005, Python Software Foundation
● Rossum, Guido von, Python Tutorial – Release 2.6.1, 2009, Python Software Foundation - [1]
● Rossum, Guido von, The Python Language Reference – Release 2.6.1, 2009, Python Software Foundation - [2]
● Pilgrim, Mark, Dive Into Python – versão 5.4, 2004, diveintopython.org
Obrigado!!!