Sematec 2014 Palestrantes: Álvaro Oliveira e Guilherme Esmeraldo
Roteiro  Breve Histórico  Características  Por que Python?  Quem Usa?  Como Usar?
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
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
Características  Multiplataforma: Linux/Unix, Windows, Symbian, MacOSX, etc  Multiparadigma: Procedural, Orientado a Objetos e Funcional
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
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
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/
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
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!
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.
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. >>>
Meu Primeiro Programa
Saida public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } Print “Hello, World!” JAVA Python
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
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
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
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
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)
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
Controle de Fluxo  Nada de parênteses! Nada de chaves!  IF if expressão1: Comando1 ... elif expressão2: Comando3 ... else: ...
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'
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 ...
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
Exemplo for for contador in range(1,6): print contador 1 2 3 4 5
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]
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
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]
Estrutura de Dados: Listas [ ] Métodos Uteis 1 2 4 3 0 1 2 3 lista.extend(lista2)lista.append(8) lista.pop() lista.remove(2)
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;
Python: Orientado a Objetos
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.”
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!
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>
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“
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()
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()
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
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]
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
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
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.
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
Definição da Classe
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
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()
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)
Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
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
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
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.
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
Herança
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
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()
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
Exercício
Exercício
Introdução a HTML
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>.
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>.
•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
Exemplos de Browsers
•Apenas de um editor de texto! •Então abra o Notepad ou Kate e mão a obra! Do que precisamos para começar?
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.
Arquivo básico HTML <html> <head> <title>Minha página de Internet</title> </head> <body> ...Conteúdo da página... </body> </html>
•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
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>
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>
Replique a seguinte pagina da web:
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>
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 “ ”.
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.
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.
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.
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.
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.
Python Para Web: Cherrypy
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
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;
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.
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
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
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.
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.
Algumas Definições
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
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):
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
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()
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"
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.
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”.
Duvidas?

Programando para web com python - Introdução a Python

  • 1.
  • 2.
    Roteiro  Breve Histórico Características  Por que Python?  Quem Usa?  Como Usar?
  • 3.
    Breve Histórico  LinguagemCriada 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
  • 5.
    Características  Multiplataforma: Linux/Unix, Windows,Symbian, MacOSX, etc  Multiparadigma: Procedural, Orientado a Objetos e Funcional
  • 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?  Naslinguagens 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  Entreno 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. >>>
  • 13.
  • 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 coma 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 desã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 umprograma 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
  • 25.
    Exemplo for for contadorin range(1,6): print contador 1 2 3 4 5
  • 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]
  • 29.
    Estrutura de Dados:Listas [ ] Métodos Uteis 1 2 4 3 0 1 2 3 lista.extend(lista2)lista.append(8) lista.pop() lista.remove(2)
  • 30.
    Exercício: 1.Faça um programaque 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;
  • 31.
  • 32.
    Python: Orientado aObjeto “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 umaClasse 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 umMetodo Utiliza o comando def, para definir um método de uma classe: >>> class HelloMundo: def alomundo(self): print “Ola Mundo“
  • 36.
    Instanciando uma Classe Quandocriamos 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 umaClasse 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 Atributose 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 classContador(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 classContador(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 classContador(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étodoself •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
  • 44.
  • 45.
    Herança Uma classe podeherdar 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 definiruma 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étodosjá 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: defandar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
  • 49.
    Redefinindo Métodos class Veiculo: defandar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
  • 50.
    Redefinindo Métodos class Veiculo: defandar(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: defandar(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ê poderedefinir 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
  • 54.
  • 55.
    Polimorfismo Polimorfismo literalmente significavá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: defsom(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 ClasseChamada 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
  • 58.
  • 59.
  • 60.
  • 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 abrire fechar as tags. •São os textos que ficam entre < > ou < />. •Geralmente são sempre pares,<p> e </p>.
  • 64.
    •Finalidade é lero 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
  • 65.
  • 66.
    •Apenas de umeditor de texto! •Então abra o Notepad ou Kate e mão a obra! Do que precisamos para começar?
  • 67.
    Como criar umarquivo 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.
  • 68.
    Arquivo básico HTML <html> <head> <title>Minhapágina de Internet</title> </head> <body> ...Conteúdo da página... </body> </html>
  • 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çalhossã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ágrafosHTML 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>
  • 72.
    Replique a seguintepagina da web:
  • 74.
    Estilizando textos: Para colocarefeito 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>
  • 76.
    Atributos HTML Elementos HTMLpodem 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.
  • 80.
    Tag <font> Vimos queo 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.
  • 82.
    Criando Listas emHTML 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: Aslistas 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.
  • 85.
    Lista numeradas: As listasnumeradas 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.
  • 88.
  • 89.
    Características Uma simples epoderosa 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 Temuma 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 Algumconhecimento 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 aversã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 instalaro 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: ServidorWeb É 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: É umpedaç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.
  • 96.
  • 97.
    Objetos de Publicação Qualquerobjeto 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çãode 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çãodo 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 objetocorreto 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 deFormulá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”.
  • 104.