You are on page 1of 58

Pós-Graduação em Dispositivos Móveis

Aplicações Móveis e Jogos com Python


Apresentação

Flávio Ribeiro

- Engenheiro de Software (Avaty! Tecnologia)

- Google Summer of Code Student 2010


- BlueZ

- Entusiasta Python (~5 anos)

- twitter.com/flavioribeiro
- email@flavioribeiro.com
- flavioribeiro @ #bluez #python-br
Disciplina

- 5 aulas ( 5 x 6 horas = 30 horas )

- História, implementações, cenário da linguagem

- Sintaxe e features

- Demonstrações

- Ranking

- Projeto

- Avaliações
Ranking

- Maneira diferente (mais dinâmica) de resolução de


exercícios 'on fly'
Ranking

- Maneira diferente (mais dinâmica) de resolução de


exercícios 'on fly'
Ranking

- Maneira diferente (mais dinâmica) de resolução de


exercícios 'on fly'

- Deadline de 10 minutos após a entrega do primeiro


aluno

- Após todas as submissões, correção 'on fly' dos


códigos
- Códigos corretos: 3 pontos
- Códigos incorretos: 1 ponto
- Nenhum código: -1 ponto
Ranking

- E o primeiro lugar ganha...


Ranking

- E o primeiro lugar ganha...


blablablabla... vamos começar? :)
O que é Python?


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...

“Youtube is pure Python” - Colin Winter


O que é Python?
Especificação x Implementação de Referência


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

The mission of the Python Software Foundation is


to promote, protect, and advance the Python
programming language, and to support and
facilitate the growth of a diverse and
international community of Python programmers.
Comunidade Python


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)

Acessado em Maio de 2010


Comunidade Python


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

>>> 'io' in 'flavio'


True
Entrada de Dados


A função raw_input()


A função input()


A instrução print


Atribuição de variáveis
Exercício 01

Exercício!

Capturar uma string da entrada de dados e


retornar o tamanho total de letras, o número de
vogais e se a palavra é iniciada ou não com a
Letra A (maiúscula ou minúscula).

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

>>> info = {'nome':'Flavio','idade':


22,'interesses' :
['python','embedded','linux']}
>>> info['idade']
22
Variáveis e Tipos


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!

Capturar uma string como entrada de dados de um


usuário onde conterá seu nome, idade e
profissão, todos separados por uma contra-
barra. Armazenar esses dados em um dicionário e
imprimir.

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:

>>> for numero in [1,2,3,4]:


... print numero,
...
1 2 3 4
>>>
Intruções de Repetição


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

You might also like