SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
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!

Contenu connexe

Tendances

Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmSenid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmGilvan Vilarim
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Senid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan VilarimSenid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan VilarimGilvan Vilarim
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 

Tendances (20)

Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmSenid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
AulaPython.pdf
AulaPython.pdfAulaPython.pdf
AulaPython.pdf
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Senid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan VilarimSenid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 

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

Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptxPapirusDig
 
Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaÁlvaro Justen
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em PythonRober Guerra
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoandreluizlugon
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
Aprenda a programar python
Aprenda a programar pythonAprenda a programar python
Aprenda a programar pythonLourenço Junior
 

Similaire à Implementação de Aplicações Móveis e Jogos com Python - Aula 1 (20)

Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptx
 
Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtiva
 
Aula python
Aula pythonAula python
Aula python
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Py dojo
Py dojoPy dojo
Py dojo
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
PyDojo
PyDojoPyDojo
PyDojo
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Apresentacao sfd-poa
Apresentacao sfd-poaApresentacao sfd-poa
Apresentacao sfd-poa
 
Aprenda a programar python
Aprenda a programar pythonAprenda a programar python
Aprenda a programar python
 

Plus de Flávio Ribeiro

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingFlávio Ribeiro
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesFlávio Ribeiro
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Flávio Ribeiro
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerFlávio Ribeiro
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxFlávio Ribeiro
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasFlávio Ribeiro
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeFlávio Ribeiro
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas EmbarcadosFlávio Ribeiro
 

Plus de Flávio Ribeiro (14)

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media Encoding
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomalias
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas Embarcados
 

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

  • 1. Implementação de Aplicações Móveis e Jogos com Python
  • 2. 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
  • 3. Apresentação Flávio Ribeiro ● 1º Contato com Python pra Celulares: Bossa Conference 2006
  • 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!
  • 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?
  • 18. Cenário da Linguagem Python em mobile & embedded
  • 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/
  • 23. Cenário de Python em Mobile & Embedded ● PyMaemo
  • 24. Cenário de Python em Mobile & Embedded ● PyMaemo ● CarMan, Canola
  • 25. Cenário de Python em Mobile & Embedded ● PyMaemo ● CarMan, Canola
  • 26. Cenário de Python em Mobile & Embedded ● Nokia ● Symbian e S60
  • 27. Cenário de Python em Mobile & Embedded ● Nokia ● S60
  • 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
  • 30. Por que Python em Dispositivos Móveis?
  • 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)
  • 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çã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
  • 54. 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
  • 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 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')