36
Grupo – 1 Júlio César Eiras Melanda – 14267 Emmanuel Ferreira Borges - 13675 Wellington dos Santos Flauzino – 13739 Universidade Federal de Itajubá - 27/05/09

Aula python

Embed Size (px)

DESCRIPTION

Slideshow made for Programming Languages classes at college

Citation preview

Page 1: Aula python

Grupo – 1

Júlio César Eiras Melanda – 14267Emmanuel Ferreira Borges - 13675

Wellington dos Santos Flauzino – 13739

Universidade Federal de Itajubá - 27/05/09

Page 2: Aula python

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

Page 3: Aula python

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

Page 4: Aula python

Conteúdo (cont.)

● Módulos

● Programas que usam Python

● Referências

Page 5: Aula python

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.

Page 6: Aula python

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.

Page 7: Aula python

Características Importantes

Page 8: Aula python

Características Importantes Paradigmas

− Multi-paradigma Orientada a Objetos Procedural Funcional Scripting

Compilação

− Interpretada

− Programação interativa

− Bytecodes

Page 9: Aula python

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)

Page 10: Aula python

Características Importantes Multiplataforma

− Windows

− GNU/Linux

− MacOS

− PalmOS

− Symbian Estruturas de dados nativas

− Listas

− Dicionários

− Tuplas

− Conjuntos

Page 11: Aula python

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)

Page 12: Aula python

Programando

Page 13: Aula python

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'

Page 14: Aula python

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

Page 15: Aula python

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.

Page 16: Aula python

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

Page 17: Aula python

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

Page 18: Aula python

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"

Page 19: Aula python

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]

Page 20: Aula python

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'

Page 21: Aula python

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

Page 22: Aula python

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

Page 23: Aula python

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

Page 24: Aula python

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

Page 25: Aula python

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

Page 26: Aula python

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]

Page 27: Aula python

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

Page 28: Aula python

Módulos

● Interfaces gráficas

– wxPython

– TkInter

– PyQt

– PyGTK

● Científico e numérico

– numpy

– scipy

– ScientificPython

– BioPython

Page 29: Aula python

Módulos (cont.)● Jogos

– Pygame

● Imagens

– PyOpenGL

– PyOgre

– Soya 3D

– Panda 3d

● Web

– Django

– TurboGears

– Zope

Page 30: Aula python

Programas que usam Python

● YUM

● Wicd

● BitTorrent

● ForecastWatch

● Wing IDE

● Blender (renderização de imagens)

● OpenOffice

● Scribus

● Vim

Page 31: Aula python

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

Page 32: Aula python

Frets On Fire

Civilization IV

Page 33: Aula python

Mount & Blade

PySol

Page 34: Aula python

Inkscape

Poser

Page 35: Aula python

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

Page 36: Aula python

Obrigado!!!