3. Breve Histórico
Linguagem Criada em 1990, Por Guido van Rossun
Foco em usuários como físicos e engenheiros
Python foi concebida através de uma linguagem chamada
ABC
4. Características
Linguagem Interpretada
Tripagem dinâmica
Controle de Bloco é feita por indentação
Oferece tipos de alto nível
E orientado a objetos
Fácil aprendizado
Open Source
Biblioteca padrão muito rica
6. Por que Python?
Os conceitos fundamentais da linguagem são simples de entender;
A sintaxe do Python é clara e fácil de aprender;
Os tipos pré-definidos em Python são poderosos e simples de usar;
O interpretador Python permite aprender e testar rapidamente
trechos de código
Python é expressivo, com abstrações de alto nível => código curto e
rápido desenvolvimento
7. Por que Python?
Prototipação rápida
Desenvolvimento Web
Acesso a banco de dados
Código “enxuto”!
Computação numérica e científica
Jogos
3D
8. Quem Usa?
Google (aplicações Web).
Yahoo (aplicações Web).
Microsoft (IronPython: Python para .NET).
Nokia (disponível para as linhas recentes de celulares e
PDAs).
Disney (animações 3D).
Funceme(aplicações com Radares)
Mais casos:
http://www.python.org/about/success/
9. Como Usar?
Nas linguagens Interpretadas é executada utilizando o
interpretador lê o código fonte e interpreta diretamente,
durante a sua execução.
Tanto pode utilizar no Shell ou Uma IDE
10. Instalando
Instalando
Entre no link http://www.python.org/getit/ e baixe
para sua plataforma.
No windows: clique duas vezes, next, next, … e finish.
No linux: qualquer distribuíção já vem com Python!
11. IDE Disponíveis
Idle :
Já vem com o Python. É bem simples de ser usado também.
Komodo-Edit:
E uma excelente opção de editor, bastante rico em recursos tais como
autocomplete, multi-language e outros.
Eclipse:
Ideal para desenvolvimento Java. Mas existem plugins para se desenvolver
em Python.
Pycham
E proprietário, Possui um conjunto de ferramentas úteis para um
desenvolvimento produtivo.
12. Utilizando o Shell
Para chamar o interpretador Python apenas digite “python” no
prompt do shell:
Quando o shell é iniciado aparecerão três ‘>’ (“>>>”) indicando que
ele está ativo e pode receber comandos
$ python
Python 2.5.1 (r251:54863, Sep 4 2007, 19:00:19)
[GCC 4.1.2] on linux2
Type "help", "copyright", "credits" or "license" for
more information.
>>>
14. Saida
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Print “Hello, World!”
JAVA
Python
15. Saída
Salvar com a extensão .py
Exemplo: alomundo.py
Entre na pasta que está o arquivo
cd nomedapasta
Em seguida, rodar o comando:
python alomundo.py
16. Definições de Variáveis
Sintaxe
nomeDaVariavel = valorAtribuido
Descobrir o tipo atual de uma variável, utiliza a função type()
type(nome)
nome = “python” #String
num = 1 # valor inteiro
preco = 10.99 # valor ponto flutuante
t = True # valor booleano
17. Entrada
Sintaxe:
nomeDaVariavel = input(’Texto para Saída’)
Para capturar informações do usuário podemos usar duas
funções:
input(“mensagem”)
Espera que o usuários digite comandos
ou valores
raw_input(“mensagem”)
Espera strings
18. Delimitações
Uso de “;” no fim de comandos não é obrigatório
Blocos delimitados por identação
def soma(a):
. . . .return a+1
print soma(10)
Não é um erro
sintático, mas é
desnecessário
e portanto
deselegante
19. Comentários
Comentários de são feitos usando ‘#’
Para comentários de bloco pode-se usar string multilinhas com
‘”””’
“”” def inc(a):
. . . .return a+1”””
#print inc(10)
20. Exercício:
1. Faça um programa que leia da entrada padrão um
número, em seguida imprima ele na tela.
2. Agora faça um programa que leia dois números e em
seguida imprime o resultado da multiplicação deles
21. Controle de Fluxo
Nada de parênteses! Nada de chaves!
IF
if expressão1:
Comando1
...
elif expressão2:
Comando3
...
else:
...
22. Usando If
#! /usr/bin/python
# -*- coding: iso-8859-1 -*-
x = input("Entre com um numero inteiro: ")
if x < 0:
print 'Numero negativo'
elif x == 0:
print 'Zero'
elif x == 1:
print 'Um'
else:
print 'Numero positivo'
23. Controle de Fluxo
O loop While, tem como função repetir um bloco de
comando ate que aconteça uma parada.
while expressão2:
Comando3
...
24. Controle de Fluxo
O for em Python podemos “varrer” uma sequencia que se difere
de outra linguagens por ser utilizado como iterador de progressão
aritmética.
for variavel in rage(ni,nf-1):
Cria uma lista a partir do
inteiro ni até o inteiro nf-1
for variavel in lista
26. Estruturas de Dados
Lista[ ]
Lista é uma seqüência de valores indexadas por um inteiro. Uma lista pode
conter qualquer tipo de valor, incluindo valores de tipos mistos.
numero = [ 1, 2,3]
nomes = ['maria','paulo','jose']
mistos=[1,’maria’,2]
27. Estrutura de Dados: Listas [ ]
Os elementos da lista podem ser acessados por meio de índices que
vão de 0 até o comprimento da lista-1
lista = [ ‘maria’,’paulo’,’jose’,’carlos’]
0 1 2 3
>>> lista [0]
maria
28. Estrutura de Dados: Listas [ ]
Fatias, ou slices, de uma lista podem ser geradas facilmente
com o “:”
Lista = [inicio:final]
>>> n = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ]
>>> n[2:4]
[3, 4]
30. Exercício:
1.Faça um programa que leia da entrada padrão um
número, em seguida adicione e imprima a lista .
2.Seguindo o exemplo anterior:
Crie uma nova lista e adicione na lista anterior;
Remova um elemento na Posição 4;
Imprima toda a lista;
32. Python: Orientado a Objeto
“Orientação a objetos, OO, é um termo que descreve uma série de
técnicas para estruturar soluções para problemas computacionais.
é um paradigma de programação no qual um programa e
estruturado em objetos, e que enfatiza os aspectos abstração,
encapsulamento, polimorfismo e herança.”
33. E tudo é um Objeto
Tudo em Python é no fim um objeto!
list3.append(‘a’)
Novos objetos (classes) podem ser facilmente adicionados
aos tipos de dados já existentes em Python!
De fato, programar em Python é normalmente feito de
forma orientado a objetos!
34. Definição de uma Classe
A forma mais simples de definição de uma classe pode ser
descrita dessa maneira:
>>> class NomeDaClasse:
<comando-1>
.
.
.
<comando-N>
35. Definição de um Metodo
Utiliza o comando def, para definir um método de uma
classe:
>>> class HelloMundo:
def alomundo(self):
print “Ola Mundo“
36. Instanciando uma Classe
Quando criamos a classe HelloMundo, criamos um novo
tipo de dado. Os membros deste novo tipo são chamados
instâncias deste tipo ou objetos. Criar uma nova instância
é instanciar. Para instanciar o objeto HelloMundo:
...
alo=HelloMundo()
alo.alomundo()
37. Definição de uma Classe
Exemplo:
class HelloMundo: #Definindo a Classe
def alomundo(self): #Definindo o Método
print “Ola Mundo“
alo=HelloMundo() #criando uma instância da classe
alo.alomundo()
38. Definição da Classe
Privados
Atributos e métodos que só podem ser acessados
dentro da classe, usa-se “__” no início do nome
Protected
Apenas convenção e usa-se apenas um “_” no
nome de métodos ou atributos, ex. _telefone
class musica:
_compositor=“Luiz Gonzaga”
__ritmo=“Baiao”
m=musica()
m._compositor
39. Definição da Classe
class Contador(object):
def __init__(this):
this.contagem = {}
def incluir(this, item):
qtd = this.contagem.get(item, 0) + 1
this.contagem[item] = qtd
def contar(this, item):
return this.contagem[item]
40. Definição da Classe
class Contador(object):
def __init__(this):
this.contagem = {}
def incluir(this, item):
qtd = this.contagem.get(item, 0) + 1
this.contagem[item] = qtd
def contar(this, item):
return this.contagem[item]
Em Python
Não Usamos
this
41. Definição da Classe
class Contador(object):
def __init__(self):
self.contagem = {}
def incluir(self, item):
qtd = self.contagem.get(item, 0) + 1
self.contagem[item] = qtd
def contar(self, item):
return self.contagem[item]
Usamos
self
42. Argumento do Método self
•Em todos métodos associados à instância definido dentro
de uma classe devem ter o argumento self definido como
primeiro argumento.
•Maior flexibilidade na chamada de métodos.
•É a referência para a própria instância da classe
•Mesmo que você tem um método que não recebe nenhum
argumento, ainda assim você deve definir que este tenha o
argumento self.
43. Construtor __init__( )
é um método especial que é invocado automaticamente
quando um novo objeto é criado e que inicializa os
atributos deste objetos.
E opcional!
class Hello:
def _init_ (self,nome):
self.nome = nome
45. Herança
Uma classe pode herdar a definição de outra classe
Python não tem a palavra ‘extends’ como em Java
A Herança multipla é suportada
SuperClasse
SubClasse SubClasse
46. Exemplo Herança
Para definir uma subclasse, coloque o nome da superclasse entre
parênteses depois do nome da subclasse na primeira linha da
definição.
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
_numRodas=4
gol = Carro()
gol.andar()
47. Sobrecarga
Redefinição de métodos já existente, com o
mesmo nome.
Quando um método da classe pai é redefinido
na classe filha
Diz-se que o método foi sobrecarregado
(overloaded)
48. Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
49. Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
50. Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
Andei de
Carro
51. Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
Veiculo.andar(self)
gol = Carro()
gol.andar()
Você pode chamar
o método da
superclasse
52. Redefinindo Métodos
Você pode redefinir métodos declarados na superclasse
O mesmo vale para o método __init__ .
No método __init__ das subclasses:
parentClass.__init__(self,x,y)
onde parentClass é o nome da classe pai.
53. Redefinindo Métodos
class Veiculo:
def __init__(self,numPassageiros):
self.numPassageiros = numPassageiros
def andar(self):
print "Andei"
class Carro(Veiculo):
_numRodas= None
def __init__(self, _numRodas,numPassageiros):
Veiculo. __init__(self,numPassageiros)
self._numRodas= _numRodas
def qtdPassageiros(self):
print self.numPassageiros
gol = Carro(4,6)
gol.qtdPassageiros()
Construtor da
classe filha tem
que chamar o
da
classe pai
55. Polimorfismo
Polimorfismo literalmente significa várias formas.
Em Python, um método é polimórfico se ele tem diferentes
implementações numa família de classes
Ex:
O operador ‘+’ é polimórfico !
se refere a diferentes operações quando usado, por exemplo, em
inteiros e strings
56. Exemplo Polimorfismo
class Mamifero:
def som(self):
print 'emitir um som'
class Homem(Mamifero):
def som(self):
print ' Oi'
class Cachorro(Mamifero):
def som(self):
print ' Wuff ! Wuff'
class Gato(Mamifero):
def som(self):
print ' Meaww'
mamifero = Mamifero()
mamifero.som()
animais = [ Homem(),Cachorro(),Gato()]
for animal in animais:
animal.som()
57. Exercício
Crie uma Classe Chamada Conta Corrente,
declarando o construtor com atributo numero e o
método creditar() e debitar()
Crie uma Classe Poupança tendo como atributo taxaDeJuros e
com o metodo renderJuros(), que herda de Conta Corrente e
62. O que é HTML?
•HTML é a sigla para Hyper Text Markup Language.
•HTML não é uma linguagem de programação.
•HTML é uma linguagem de marcação.
•As marcações são feitas através de <tags>.
63. Tags
•Deve-se sempre abrir e fechar as tags.
•São os textos que ficam entre < > ou < />.
•Geralmente são sempre pares,<p> e </p>.
64. •Finalidade é ler o documento Html e exibir o
conteúdo da página.
•Não exibem as tags mas usam as tags para
interpretar o conteúdo das mesmas.
Browsers e o HTML
66. •Apenas de um editor de texto!
•Então abra o Notepad ou Kate e mão a obra!
Do que precisamos para começar?
67. Como criar um arquivo HTML
•Abrir o editor de textos.
•Criar um novo arquivo em branco.
•Salvar o arquivo com a extensão .html
•Iniciar a edição do arquivo.
69. •O texto entre <html> e </html> descreve o conteúdo
da página.
•O texto entre <head> e </head> é o cabeçalho da
página, não é exibido no browser.
•O texto entre <body> e </body> é o conteúdo visível
da página no browser.
•O texto entre <title> e </title> é o título da pagina
70. Cabeçalhos HTML
•Os cabeçalhos são definidos com as tags <h1> até
<h6>.
•Exemplo:
•<h1>Isto é um cabeçalho</h1>
•<h2>Isto é um cabeçalho</h2>
•<h3>Isto é um cabeçalho</h3>
71. Parágrafos HTML
•Os parágrafos HTML são definidos com a tag <p>.
• Caso tenha necessidade de quebrar alguma linha,
utilize a tag <br> para fazer a quebra
•Exemplo:
•<p>Isto é um parágrafo.</p>
•<p>Isto é um outro parágrafo. <br>
• Isto ficará na linha de baixo
•</p>
74. Estilizando textos:
Para colocar efeito em alguma frase ou palavra
podemos utilizar as seguintes tag’s no documento:
<b>, <i>, <u> e <s>
Exemplo:
<b> isto é uma frase em NEGRITO </b>
<i> isto é uma frase em ITALICO</i>
<u> isto é uma frase SUBLINHADA</u>
<s> isto é uma frase TACHADA</s>
75.
76. Atributos HTML
Elementos HTML podem ter atributos.
Atributos fornecem informação adicional sobre um
elemento.
Atributos são sempre especificados na tag inicial.
Atributos vem em pares como name="value".
Valor de atributos devem sempre estar entre aspas
duplas “ ”.
77. Exemplos de atributos:
Bgcolor: utilizado para definir a cor de fundo da
página web
Background: utilizado para definir uma imagem de
fundo da página web.
Text: utilizado para definir a cor dos textos da página
web
align: utilizado para alinhar o texto.
78.
79.
80. Tag <font>
Vimos que o atributo “text” modifica a cor de todo o
conteudo do body. Para modificar apenas a cor de uma
frase, ou uma palavras colocamos a frase dentro da tag
<font> com o atributo color. Caso deseje mudra o
tamanho da fonte, utilize o atributo size.
81.
82. Criando Listas em HTML
Em HTML podemos criar basicamente três tipos de
listas: listas de definição, listas não numeradas e
listas numeradas.
83. Lista não numeradas:
As listas não numeradas funcionam semelhantes aos
marcadores existentes em aplicativos como editores
de texto. Para criarmos listas não numeradas
utilizamos as tags <UL> para iniciarmos a lista e <LI>
para inserirmos itens na lista.
84.
85. Lista numeradas:
As listas numeradas são as mais comuns, a cada item
inserido a numeração da lista cresce.
Pode se utilizar números romanos( I,II,III), números
comuns (1,2,3) ou até letras (a,b,c).
Para criarmos listas numeradas utilizamos as tags OL
para iniciarmos a lista e LI para inserirmos itens na
lista.
89. Características
Uma simples e poderosa biblioteca do Python
Um framework Python orientada a objetos web.
Pacote auto-contido, só necessita do Python
Não intrusivo
Já vem com Servidor web
Separa o código do layout do HTML
É Gratis
90. Por que Cherrypy
Tem uma interface limpa;
É muito pythônico; ou seja, ele segue as convenções do
Python muito bem (código é escassa e não poluente);
Maturidade, tem muitas versões estáveis finais;
Tem uma comunidade dedicada que desenvolve
aplicativos implementados CherryPy;
91. Perfil do Desenvolvedor
Algum conhecimento da linguagem de
programação Python.
Alguma experiência com programação orientada a
objetos básica.
Alguns conhecimentos de HTML, que é necessária
a construção de páginas web.
92. Instalação Linux
Baixe a versão mais recente CherryPy do repositório .
Descompacte / untar os arquivos
Vá para o diretório criado pela extração do arquivo.
Tipo "python setup.py install" para instalar o módulo
CherryPy
93. Instalação Windows
Para instalar o CherryPy basta fazer um download da
biblioteca:
https://pypi.python.org/pypi/CherryPy
Selecione o arquivo que termina em "exe“ e next
94. Algumas Definições: Servidor Web
É uma interface que lida com o protocolo HTTP
Seu objetivo é transformar pedidos HTTP em entidades
que são passadas para o servidor de aplicação e então
transformar a informação retornada pelo servidor de
aplicação em uma resposta HTTP.
95. Algumas Definições
Aplicação:
É um pedaço de software que pega uma unidade de informação
e aplica nela a regra do negócio e retorna uma unidade
processada de informação.
Servidor de Aplicação:
É um componente que hospeda uma ou mais aplicações.
Servidor de Aplicação Web:
É simplesmente a junção de um servidor web com
um servidor de aplicação em um componente.
97. Objetos de Publicação
Qualquer objeto agregado ao objeto root é dito objeto publicado, isto
significa que o objeto é acessível via rotina interna de mapeamento do
objeto URL.
Entretanto, não significa que o objeto é diretamente acessível via
Web, para que isto ocorra o objeto deve ser exposto
98. Expondo Objetos
•A exposição de objetos em cherrypy são permitidos pelo atributo
exposed, que pode ser diretamente setados para objetos que são
chamados
•Existe duas formas:
class Root:
def index(self):
...
index.exposed = True
@cherrypy.expose
def index(self):
99. Minha Primeira Aplicação
# -*- coding: iso-8859-1 -*- # Alfabeto Latino
import cherrypy # carregando biblioteca
class HelloWorld:
def index(self):
return "Alô Mundo"
index.exposed = True # permite definir quais métodos serão expostos na Web
cherrypy.quickstart(HelloWorld(),’/’) #publica instância da classe e inicia servidor
URI-> http://localhost:8080
100. Minha Primeira Aplicação
# -*- coding: iso-8859-1 -*- # Alfabeto Latino
import cherrypy # carregando biblioteca
class HelloWorld:
def index(self):
return "Alô Mundo"
index.exposed = True # permite definir quais métodos serão expostos na Web
cherrypy.quickstart(HelloWorld(),’/ ’) #publica instância da classe e inicia servidor
URI-> http://localhost:8080
Neste caso particular o site
raiz é mapeado pelo método
index()
101. Arquivo de configuração do CherryPy
O CherryPy usa um simples arquivo de configuração para
customizar seu comportamento.
•Para executar este arquivo de configuração para o site use
cherrypy.config.update(arquivo_ou_dicionário)
#global.cfg
[global]
server.socket_port = 8000
server.thread_pool = 10 # quantas thread o servidor pode iniciar
tools.sessions.on = True # habilita sessão, usada sites complexos
tools.staticdir.root = "/home/site" # diretório onde estão aplic.
estáticas
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "static"
102. Encontrando o objeto correto
Ao receber uma URI, o CherryPy reparte ela em componentes de
caminho(path) e procura um objeto no site que é a melhor resposta
para esta URI particular.
Para cada componente de caminho ele tenta encontrar um objeto de
mesmo nome, começando pela raiz(root) e vai descendo por cada
componente até encontrá-lo.
103. Recebendo dados de Formulários HTML
Qualquer método pode receber dados adicionais do formulário
HTML usando argumentos (keyword arguments).
<form action=“nomeMetodo " method="post">
campos do formulário
aqui dentro das tags
</form> GET é o método HTML padrão.
Para submeter um formulário
HTML usando POST é preciso
especificar no atributo “method”
o valor “POST”.