Professional Documents
Culture Documents
Flávio Ribeiro
- twitter.com/flavioribeiro
- email@flavioribeiro.com
- flavioribeiro @ #bluez #python-br
Disciplina
- Sintaxe e features
- Demonstrações
- Ranking
- Projeto
- Avaliações
Ranking
Linguagem de Altíssimo Nível (Very High Level
Language)
Suporta múltiplos paradigmas
Estruturada
Orientação a Objetos
Funcional
Case Sensitive
Interpretada
Transformação source > bytecode
Tipagem Dinâmica
Multiplataforma
Symbian, Linux, Windows, OSX
“Baterias Inclusas”
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
O que é Python?
Python vai na web, no desktop, OLPC, Celulares,
Internet Tablets...
Criação\Desenvolvimento de uma tecnologia
Especificação
Documentos que descrevem a tecnologia e suas
features
Implementação de Referência
Implementação oficial da tecnologia
Especificação x Implementação de Referência
Especificação
Grupo de Interesse (SIG)
Define e documenta minuciosamente as features
Implementações seguem o padrão definido pelas
documentações
Toshiba Stack \ BlueZ \ WidComm \ IwBT \
BlueCode++
Especificação x Implementação de Referência
Implementação de Referência
CPython (Guido Van Rossum)
Demais implementações “imitam” o comportamento
da implementação oficial
Especificação x Implementação de Referência
Stackless Python
Focado em concorrência (dspython – Nintendo DS)
Unladen Swallow
Fork do Google focado em otimização
Merge no CPython?
IronPython
.NET
Jython
Python + Java
Tinypy
Subset de Python em 64k de código
Retirado de http://wiki.python.org/moin/implementation
Comunidade Python
Python Software Foundation
Python Software Foundation
FOSS
Comunidade grande e ativa
Comunidade Python
Python Software Foundation
FOSS
Comunidade grande e ativa
Comunidade Python
No Brasil: Associação Python Brasil
Evento anual: Python Brasil
Curitiba, 2010
Wiki (muito material em pt-br):
http://www.python.org.br
Lista de Discussão da Python-Brasil:
Associados: 3205
Atividade nos últimos 7 dias: 101 novas
mensagens
Canal #Python-Br na Freenode (IRC)
PEP's
Python Enhancement Proposals
Submissões formais de alterações no Cpython
Feitos pela comunidade
Cenário da Linguagem Python em Mobile & Embedded
Android
Muitos fabricantes aderindo
Núcleo e principal linguagem
de desenvolvimento: Java (Dalvik)
ASE (Android Scripting Environment)
Cenário da Linguagem Python em Mobile & Embedded
●
Apple IPhone
●
Apple = Revolução de 3 mercados
●
Computadores de Mesa
●
Música
●
Dispositivos Móveis
●
Apple Store
●
Objective-C
●
PyObjC
●
Plataforma fechada
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia
●
Duas Plataformas:
●
Symbian s60
●
Maemo (MeeGo?)
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Maemo
●
Linux Based
●
Participação intensa do INdT
●
PyMaemo
●
Port do interpretador Python (Arquitetura ARM)
●
Aplicações reais no mundo real
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Maemo
●
Linux Based
●
Participação intensa do INdT
●
PyMaemo
●
Port do interpretador Python (Arquitetura ARM)
●
Aplicações reais no mundo real
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Maemo
●
Linux Based
●
Participação intensa do INdT
●
PyMaemo
●
Port do interpretador Python (Arquitetura ARM)
●
Aplicações reais no mundo real
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Maemo
●
Linux Based
●
Participação intensa do INdT
●
PyMaemo
●
Port do interpretador Python (Arquitetura ARM)
●
Aplicações reais no mundo real
●
Sistema operacional oficial do celular upstream
da Nokia (N900)
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Symbian
●
Symbian Foundation
●
Código Aberto
●
Plataforma mais utilizada em smartphones no momento
●
Vantagens:
●
Muitas aplicações prontas
●
Já atingiu a massa
Cenário da Linguagem Python em Mobile & Embedded
●
Nokia Symbian
●
Symbian Foundation
●
Código Aberto
●
Plataforma mais utilizada em smartphones no momento
●
Vantagens:
●
Muitas aplicações prontas
●
Já atingiu a massa
●
Evoluindo bastante, e com Python (PyS60)!
Vamos praticar!
Interpretador Interativo
●
Aplicação nativa para testes de código
●
Interpretador run-in-time
●
Seu mais novo amigo
Variáveis e Tipos
Tipagem Dinâmica
>>> a = 1
>>> type(a)
<type 'int'>
>>> a = 'flavio'
>>> type(a)
<type 'str'>
Tipos Nativos
float, int, long, boolean, strings, listas,
tuplas e dicionários.
Variáveis e Tipos
Strings
Objeto iterável
Imutável
Aspas simples (') e duplas (“)
Acessivel através de indices
Operador de concatenação: +
upper() , count(), title(), find(),
startswith(), isalpha(), isdigit()
Slice e Substrings através de índices
Membership
A função raw_input()
A função input()
A instrução print
Atribuição de variáveis
Exercício 01
Exercício!
Entrada:
flavio
Saída:
6
3
False
Variáveis e Tipos
Listas
Objeto iterável
Mutável
Objetos dentro de colchetes []
Acessivel através de indices
Aceita vários tipos de objetos diferentes
Lista bi-dimensional
Concatenação de listas
+ e extend()
Adição de Objetos
append() e insert()
Remoção de Objetos
pop() e remove()
Index(), sort(), reverse(), count()
Slicing
Variáveis e Tipos
A Função range()
Função geradora de iteradores
Útil na construção de laços for
>>> range(4)
[0, 1, 2, 3]
>>> range(4,9)
[4, 5, 6, 7, 8]
>>> range(0,10,2)
[0, 2, 4, 6, 8]
Variáveis e Tipos
Tuplas
Imutável
Delimita objetos por ()
Indicado para retorno de funções\métodos com
múltiplos valores
>>> a = (1,2,3,'flavio','idez')
>>> a[0]
1
>>> a[3]
'flavio'
>>>
Variáveis e Tipos
Dicionários
Mapping
Estrutura bastante poderosa
Delimita os objetos com {}
Par CHAVE:VALOR
Chave só pode ser tipos imutáveis
Sem ordem fixa
Dicionários
Gerando Iteradores
dict.keys()
dict.values()
Adicionando pares chave: valor
Buscando Valores
dict.has_key('chave')
Somar dois dicionários
dict1.update(dict2)
Apagar tudo
dict.clear()
Transformação de Tipos
Funções Embutidas
Int(), long(), float(), list(), dict(),
tuple(), bool(), str()
Transformações string <> lista
O método join()
O método split()
Exercício 02
Exercício!
Entrada:
flavio\22\programador
Saida:
{'idade': 22, 'profissao': 'programador',
'nome': 'flavio'}
Transformação de Tipos
Palavras Reservadas
and assert break class continue while
def del elif else except exec
if import in is lambda not
or pass print raise return try
Blocos
Identação obrigatória
TAB's ou 4 espaços
Intruções Condicionais
Operadores de Comparação
==
!=
is
in
if – elif – else
>>> if nota >= 7:
... print 'Parabens.'
... elif nota >= 5:
... print 'Voce esta na recuperacao!'
... else:
... print 'Voce foi reprovado.'
Intruções de Repetição
while
>>> b = 5
>>> while b > 0:
... print b,
... b -= 1
...
5 4 3 2 1
Intruções de Repetição
For
>>> for var in objeto_iteravel:
Exemplo:
Mais Exemplos
>>> dic = {'flavio' : 22, 'theo' : 19, 'andre' : 26}
>>> for nome in dic.keys():
... print nome, 'tem', dic[nome], 'anos.'
...
theo tem 19 anos.
andre tem 26 anos.
flavio tem 22 anos.
>>> for par in range(2,9,2):
... print par, 'eh par.'
...
2 eh par.
4 eh par.
6 eh par.
8 eh par.
Exercício 03
Exercício!
Capturar entradas de dados do usuário, checar
se é inteiro ou string, e dependendo de qual
for, adicionar as strings em uma lista ou somar
os numeros entrados. O programa encerra quando
o usuário digitar $. Imprimir a lista de
strings e a soma de numeros.
Entrada:
1
flavio
30
ribeiro
$
Saida:
['flavio','ribeiro']
31
Exercício 04
Exercício!
Faça um programa para uma loja de tintas. O
programa deverá pedir o tamanho em metros
quadrados da área a ser pintada. Considere que
a cobertura da tinta é de 1 litro para cada 3
metros quadrados e que a tinta é vendida em
latas de 10 litros, que custam R$ 80,00.
Informe ao usuário a quantidades de latas de
tinta a serem compradas e o preço total.
Entrada:
300
Saida:
10 latas
R$800,00