[1] O documento apresenta os objetivos de uma disciplina sobre implementação de aplicações móveis e jogos com Python. Os objetivos incluem apresentar a linguagem Python, suas características, pontos fortes e fracos, conceitos, ferramentas e práticas para aplicações móveis, incluindo Python para dispositivos Symbian.
[2] O documento discute o cenário da linguagem Python em dispositivos móveis e embedded, incluindo suporte para Android, Palm Pre, Nokia Maemo e Series 60. Python oferece vantagens para desenvolvimento rá
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!
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 usar Python?
Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
15. Por que usar Python?
Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
16. Por que usar Python?
Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...
17. 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?
19. Cenário de Python em Mobile & Embedded
● Android
● Aplicações baseadas em Java (Dalvik)
● ASE (Android Scripting Environment)
20. Cenário de Python em Mobile & Embedded
● Palm
● Palm Pre (webOS)
● Baseado em Linux (OpenEmbedded)
● WebKit
21. Cenário de Python em Mobile & Embedded
● Nokia
http://www.tomiahonen.com/
22. 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/
28. 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
29. 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
31. ● 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
32. 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
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! :-)
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)
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
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çã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'}
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
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.'
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
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
57. 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')