Upload
flavio-ribeiro
View
148
Download
0
Embed Size (px)
DESCRIPTION
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Citation preview
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
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!
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...
“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 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● 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
● 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
● 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! :-)
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')