Implementação de Aplicações Móveis
e Jogos com Python
Apresentação
Flávio Ribeiro
● Graduando em Engenharia Elétrica (IFPB)
● Desenvolvedor de Software (Avaty! Tecnologia)
● Entusiasta Python (~ 3 anos)
● email@flavioribeiro.com
● flavioribeiro @ freenode #python-br #elinux
Apresentação
Flávio Ribeiro
● 1º Contato com Python pra Celulares: Bossa Conference 2006
Objetivos da Disciplina
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
 Games
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
 Games
 Conceitos
 Ferramentas
 Práticas
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
 Games
 Conceitos
 Ferramentas
 Práticas
 Python pra Celulares s60
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
 Games
 Conceitos
 Ferramentas
 Práticas
 Python pra Celulares s60
 Sintaxe
 Práticas
Objetivos da Disciplina
 Apresentar a linguagem de programação Python
 Características
 Pontos fortes e Fracos
 Práticas
 Games
 Conceitos
 Ferramentas
 Práticas
 Python pra Celulares s60
 Sintaxe
 Práticas
 Projetos!
Apresentando Python
O que é Python?
 Linguagem de Altíssimo Nível (Very High Level Language)
 Suporta múltiplos paradigmas
 Estruturada
 Orientação a Objetos
 Case Sensitive
 Interpretada
 Transformação source > bytecode
 Tipagem Dinâmica
 Multiplataforma
 Symbian, Linux, Windows, OSX
 “Baterias Inclusas”
Por que usar Python?
 Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
Por que usar Python?
 Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
Por que usar Python?
 Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
Por que usar Python?
 Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
 “7ª Linguagem mais utilizada” (TIOBE 2009)
 É uma porcentagem, não ajustada, sobre a quantidade de hits em 5 engines de
procura.
 Quem usa Python?
Cenário da Linguagem Python
em mobile & embedded
Cenário de Python em Mobile & Embedded
● Android
● Aplicações baseadas em Java (Dalvik)
● ASE (Android Scripting Environment)
Cenário de Python em Mobile & Embedded
● Palm
● Palm Pre (webOS)
● Baseado em Linux (OpenEmbedded)
● WebKit
Cenário de Python em Mobile & Embedded
● Nokia
http://www.tomiahonen.com/
Cenário de Python em Mobile & Embedded
● Nokia
● Maemo Linux
● Estável, Comunidade ativa
● Nova Geração
● Maemo 5 Fremantle e N900
● PyMaemo
http://www.tomiahonen.com/
Cenário de Python em Mobile & Embedded
● PyMaemo
Cenário de Python em Mobile & Embedded
● PyMaemo
● CarMan, Canola
Cenário de Python em Mobile & Embedded
● PyMaemo
● CarMan, Canola
Cenário de Python em Mobile & Embedded
● Nokia
● Symbian e S60
Cenário de Python em Mobile & Embedded
● Nokia
● S60
Cenário de Python em Mobile & Embedded
● Nokia
● Series 60
● Plataforma de Software pra dispositivos Symbian
● Framework de User Interface
● Bibliotecas e aplicações nativas
● Lenovo, LG, Nokia, Panasonic, Siemens
● Lançada release 5
● Novo Browser (webkit)
● Suporte a toque (touchscreen)
● Suporte a acelerômetro
Cenário de Python em Mobile & Embedded
● Nokia
● Python pra Series 60
● O que é?
● Port do Interpretador Python
● Projeto Open-Source
● Colaboração Nokia e IndT
● Subset de bibliotecas nativas
● Implementações de bibliotecas especiais
● Appuifw, e32, etc.
● Releases 1.9.* no Maemo Garage
● Suporte a toque
Por que Python em Dispositivos
Móveis?
● Muito rápidas na execução (quando bem feitas!)
● Ciclo de Desenvolvimento longo e lento
● Sintaxe geralmente mais complicada
● Exemplos: C, C++
Por que Python em Móveis?
Linguagens Compiladas
Por que Python em Móveis?
Linguagens Interpretadas
● Geralmente mais lentas na execução (demandam mais memória)
● Ciclo de Desenvolvimento rápido
● Sintaxe geralmente mais simples
● Exemplos: Lua, Python, Perl
Conclusões
● Dispositivos Móveis = Ambiente altamente heterogêneo
● Pesadelo para os desenvolvedores
● Soluções
● Atacar os dispositivos mais utilizados
● Utilizar linguagens que implementam uma camada de abstração do
sistema operacional (interpretadas)
● Python pode ser uma excelente opção de linguagem para um
desenvolvimento para móveis rápido e divertido! :-)
Sintaxe de Python
Antes de comecar...
Antes de comecar...
● Python 3.0 (Python 3000 ou Py3k)
● Quebra de compatibilidade com a série 2.*
● Por quê?
● Pouco Usado (ainda)
● Instável?
● Muitas releases (GvR trabalhando nisso)
● Poucas bibliotecas externas
● 2to3
● Unladen Swallow
● Google financiando
● Python 5x mais rápido
● Release já lançada (15% a 25% mais rápida que CPython)
O Interpretador Interativo
 O que é?
 Aplicação nativa para testes de código
 Interpretador run-in-time
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
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
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çõesmétodos com múltiplos valores
>>> a = (1,2,3,'flavio','fatec')
>>> a[0]
1
>>> a[3]
'flavio'
>>>
Variáveis e Tipos
 Dicionários
 Mapping
 Estrutura mais poderosa em Python (na minha opinião ;-)
 Delimita os objetos com {}
 Par CHAVE:VALOR
 Chave só pode ser tipos imutáveis
 Sem ordem fixa
>>> info = {'nome':'Flavio','idade':
21,'interesses' :
['python','embedded','linux']}
>>> info['idade']
21
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()
EntradaSaída
 A função raw_input()
 A função input()
 A instrução print
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.
Ex:
Entrada: flavio21programador
Saida: {'idade': 21, 'profissao': 'programador', 'nome': 'flavio'}
Regras e Sintaxe
 Palavras Reservadas
 Blocos
 Identação obrigatória
 TAB's ou 4 espaços
and assert break class continue while
def del elif else except exec
if import in is lambda not
or pass print raise return try
Instruçõ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.'
Instruções de Repetição
 while
>>> numero = 20
>>> while numero > 10:
... numero= input("Digite um numero: ")
...
Digite um numero: 11
Digite um numero: 12
Digite um numero: 2923929
Digite um numero: 9
>>>
Instruções de Repetição
 For
 Exemplo:
>>> for var in objeto_iteravel:
>>> for numero in [1,2,3,4]:
... print numero,
...
1 2 3 4
>>>
Instruções de Repetição
 Mais Exemplos
>>> dic = {'flavio' : 21, '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 21 anos.
>>> for par in range(2,9,2):
... print par, 'eh par.'
...
2 eh par.
4 eh par.
6 eh par.
8 eh par.
Instruções de Repetição
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.
Ex:
Entrada:
1
flavio
30
ribeiro
$
Saida:
['flavio','ribeiro']
31
Funções
def nome_da_funcao(parametros):
bloco de comandos
return saida1,saida2
>>> def soma(num1,num2):
... return num1+num2
...
>>> soma(3,5)
8
 Sintaxe:
 Exemplo
Funções
 Parâmetros Opcionais
>>> def soma(num1,num2=10):
... return num1+num2
...
>>> soma(3)
13
>>> soma(4,10)
14
Funções
 Inúmeros Parâmetros
>>> def soma(*args):
... return sum(args)
...
>>> soma(2,3,4,5,6,7,8)
35
>>> soma(2)
2
Funções
Exerc cio!í
Gerar uma função que retorna o número de parâmetos
passados e uma string com todas os parâmetros concatenados
como string.
Ex:
Entrada
funcao(1,3,'flavio,'avaty')
Saída
(4,'13flavioavaty')
Prática!

Implementação de Aplicações Móveis e Jogos com Python - Aula 1

  • 1.
    Implementação de AplicaçõesMóveis e Jogos com Python
  • 2.
    Apresentação Flávio Ribeiro ● Graduandoem Engenharia Elétrica (IFPB) ● Desenvolvedor de Software (Avaty! Tecnologia) ● Entusiasta Python (~ 3 anos) ● email@flavioribeiro.com ● flavioribeiro @ freenode #python-br #elinux
  • 3.
    Apresentação Flávio Ribeiro ● 1ºContato com Python pra Celulares: Bossa Conference 2006
  • 4.
  • 5.
    Objetivos da Disciplina Apresentar a linguagem de programação Python
  • 6.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas
  • 7.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas  Games
  • 8.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas  Games  Conceitos  Ferramentas  Práticas
  • 9.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas  Games  Conceitos  Ferramentas  Práticas  Python pra Celulares s60
  • 10.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas  Games  Conceitos  Ferramentas  Práticas  Python pra Celulares s60  Sintaxe  Práticas
  • 11.
    Objetivos da Disciplina Apresentar a linguagem de programação Python  Características  Pontos fortes e Fracos  Práticas  Games  Conceitos  Ferramentas  Práticas  Python pra Celulares s60  Sintaxe  Práticas  Projetos!
  • 12.
  • 13.
    O que éPython?  Linguagem de Altíssimo Nível (Very High Level Language)  Suporta múltiplos paradigmas  Estruturada  Orientação a Objetos  Case Sensitive  Interpretada  Transformação source > bytecode  Tipagem Dinâmica  Multiplataforma  Symbian, Linux, Windows, OSX  “Baterias Inclusas”
  • 14.
    Por que usarPython?  Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
  • 15.
    Por que usarPython?  Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
  • 16.
    Por que usarPython?  Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
  • 17.
    Por que usarPython?  Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...  “7ª Linguagem mais utilizada” (TIOBE 2009)  É uma porcentagem, não ajustada, sobre a quantidade de hits em 5 engines de procura.  Quem usa Python?
  • 18.
    Cenário da LinguagemPython em mobile & embedded
  • 19.
    Cenário de Pythonem Mobile & Embedded ● Android ● Aplicações baseadas em Java (Dalvik) ● ASE (Android Scripting Environment)
  • 20.
    Cenário de Pythonem Mobile & Embedded ● Palm ● Palm Pre (webOS) ● Baseado em Linux (OpenEmbedded) ● WebKit
  • 21.
    Cenário de Pythonem Mobile & Embedded ● Nokia http://www.tomiahonen.com/
  • 22.
    Cenário de Pythonem Mobile & Embedded ● Nokia ● Maemo Linux ● Estável, Comunidade ativa ● Nova Geração ● Maemo 5 Fremantle e N900 ● PyMaemo http://www.tomiahonen.com/
  • 23.
    Cenário de Pythonem Mobile & Embedded ● PyMaemo
  • 24.
    Cenário de Pythonem Mobile & Embedded ● PyMaemo ● CarMan, Canola
  • 25.
    Cenário de Pythonem Mobile & Embedded ● PyMaemo ● CarMan, Canola
  • 26.
    Cenário de Pythonem Mobile & Embedded ● Nokia ● Symbian e S60
  • 27.
    Cenário de Pythonem Mobile & Embedded ● Nokia ● S60
  • 28.
    Cenário de Pythonem Mobile & Embedded ● Nokia ● Series 60 ● Plataforma de Software pra dispositivos Symbian ● Framework de User Interface ● Bibliotecas e aplicações nativas ● Lenovo, LG, Nokia, Panasonic, Siemens ● Lançada release 5 ● Novo Browser (webkit) ● Suporte a toque (touchscreen) ● Suporte a acelerômetro
  • 29.
    Cenário de Pythonem Mobile & Embedded ● Nokia ● Python pra Series 60 ● O que é? ● Port do Interpretador Python ● Projeto Open-Source ● Colaboração Nokia e IndT ● Subset de bibliotecas nativas ● Implementações de bibliotecas especiais ● Appuifw, e32, etc. ● Releases 1.9.* no Maemo Garage ● Suporte a toque
  • 30.
    Por que Pythonem Dispositivos Móveis?
  • 31.
    ● Muito rápidasna execução (quando bem feitas!) ● Ciclo de Desenvolvimento longo e lento ● Sintaxe geralmente mais complicada ● Exemplos: C, C++ Por que Python em Móveis? Linguagens Compiladas
  • 32.
    Por que Pythonem Móveis? Linguagens Interpretadas ● Geralmente mais lentas na execução (demandam mais memória) ● Ciclo de Desenvolvimento rápido ● Sintaxe geralmente mais simples ● Exemplos: Lua, Python, Perl
  • 33.
    Conclusões ● Dispositivos Móveis= Ambiente altamente heterogêneo ● Pesadelo para os desenvolvedores ● Soluções ● Atacar os dispositivos mais utilizados ● Utilizar linguagens que implementam uma camada de abstração do sistema operacional (interpretadas) ● Python pode ser uma excelente opção de linguagem para um desenvolvimento para móveis rápido e divertido! :-)
  • 34.
  • 35.
  • 36.
    Antes de comecar... ●Python 3.0 (Python 3000 ou Py3k) ● Quebra de compatibilidade com a série 2.* ● Por quê? ● Pouco Usado (ainda) ● Instável? ● Muitas releases (GvR trabalhando nisso) ● Poucas bibliotecas externas ● 2to3 ● Unladen Swallow ● Google financiando ● Python 5x mais rápido ● Release já lançada (15% a 25% mais rápida que CPython)
  • 37.
    O Interpretador Interativo O que é?  Aplicação nativa para testes de código  Interpretador run-in-time
  • 38.
    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.
  • 39.
    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
  • 40.
    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
  • 41.
    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
  • 42.
    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]
  • 43.
    Variáveis e Tipos Tuplas  Imutável  Delimita objetos por ()  Indicado para retorno de funçõesmétodos com múltiplos valores >>> a = (1,2,3,'flavio','fatec') >>> a[0] 1 >>> a[3] 'flavio' >>>
  • 44.
    Variáveis e Tipos Dicionários  Mapping  Estrutura mais poderosa em Python (na minha opinião ;-)  Delimita os objetos com {}  Par CHAVE:VALOR  Chave só pode ser tipos imutáveis  Sem ordem fixa >>> info = {'nome':'Flavio','idade': 21,'interesses' : ['python','embedded','linux']} >>> info['idade'] 21
  • 45.
    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()
  • 46.
    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()
  • 47.
    EntradaSaída  A funçãoraw_input()  A função input()  A instrução print 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. Ex: Entrada: flavio21programador Saida: {'idade': 21, 'profissao': 'programador', 'nome': 'flavio'}
  • 48.
    Regras e Sintaxe Palavras Reservadas  Blocos  Identação obrigatória  TAB's ou 4 espaços and assert break class continue while def del elif else except exec if import in is lambda not or pass print raise return try
  • 49.
    Instruções Condicionais  Operadoresde 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.'
  • 50.
    Instruções de Repetição while >>> numero = 20 >>> while numero > 10: ... numero= input("Digite um numero: ") ... Digite um numero: 11 Digite um numero: 12 Digite um numero: 2923929 Digite um numero: 9 >>>
  • 51.
    Instruções de Repetição For  Exemplo: >>> for var in objeto_iteravel: >>> for numero in [1,2,3,4]: ... print numero, ... 1 2 3 4 >>>
  • 52.
    Instruções de Repetição Mais Exemplos >>> dic = {'flavio' : 21, '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 21 anos. >>> for par in range(2,9,2): ... print par, 'eh par.' ... 2 eh par. 4 eh par. 6 eh par. 8 eh par.
  • 53.
    Instruções de Repetição Exerccio!í 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. Ex: Entrada: 1 flavio 30 ribeiro $ Saida: ['flavio','ribeiro'] 31
  • 54.
    Funções def nome_da_funcao(parametros): bloco decomandos return saida1,saida2 >>> def soma(num1,num2): ... return num1+num2 ... >>> soma(3,5) 8  Sintaxe:  Exemplo
  • 55.
    Funções  Parâmetros Opcionais >>>def soma(num1,num2=10): ... return num1+num2 ... >>> soma(3) 13 >>> soma(4,10) 14
  • 56.
    Funções  Inúmeros Parâmetros >>>def soma(*args): ... return sum(args) ... >>> soma(2,3,4,5,6,7,8) 35 >>> soma(2) 2
  • 57.
    Funções Exerc cio!í Gerar umafunção que retorna o número de parâmetos passados e uma string com todas os parâmetros concatenados como string. Ex: Entrada funcao(1,3,'flavio,'avaty') Saída (4,'13flavioavaty')
  • 58.