58
Implementação de Aplicações Móveis e Jogos com Python

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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 protected]● 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 Pythonem 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 DispositivosMó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ções\mé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()

Entrada\Saí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: flavio\21\programadorSaida: {'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 whiledef del elif else except execif import in is lambda notor 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: 11Digite um numero: 12Digite um numero: 2923929Digite 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: 1flavio30ribeiro$Saida: ['flavio','ribeiro']31

Funções

def nome_da_funcao(parametros):bloco de comandosreturn 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:Entradafuncao(1,3,'flavio,'avaty')Saída(4,'13flavioavaty')

Prática!